From 8615424cbf1ee27e913ba464c513da8eacd1f762 Mon Sep 17 00:00:00 2001 From: Jerome Kieffer Date: Thu, 1 Dec 2016 10:41:17 +0100 Subject: [PATCH 01/14] switch to RC 0.13 --- version.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/version.py b/version.py index b4a9470a2..b85ec9a90 100644 --- a/version.py +++ b/version.py @@ -53,7 +53,7 @@ __authors__ = ["Jérôme Kieffer"] __license__ = "MIT" __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France" -__date__ = "29/07/2016" +__date__ = "01/12/2016" __status__ = "production" __docformat__ = 'restructuredtext' __all__ = ["date", "version_info", "strictversion", "hexversion", "debianversion", "calc_hexversion"] @@ -68,8 +68,8 @@ MAJOR = 0 MINOR = 13 MICRO = 0 -RELEV = "dev" # <16 -SERIAL = 0 # <16 +RELEV = "rc" # <16 +SERIAL = 1 # <16 date = __date__ From 19e2f6fe3396d416439f16736834357c21c2b5bd Mon Sep 17 00:00:00 2001 From: Jerome Kieffer Date: Thu, 1 Dec 2016 15:48:16 +0100 Subject: [PATCH 02/14] update the documentation. include doc for cython stuff --- doc/source/api/modules.rst | 9 +- doc/source/api/pyFAI.rst | 167 + doc/source/calibration.rst | 28 +- doc/source/coverage.rst | 66 +- doc/source/detector.rst | 31 +- doc/source/geometry.rst | 22 +- doc/source/index.rst | 7 +- doc/source/project.rst | 58 +- doc/source/pyFAI.rst | 27 +- pyFAI/ext/_bispev.c | 364 +- pyFAI/ext/_blob.c | 457 +- pyFAI/ext/_blob.pyx | 18 +- pyFAI/ext/_convolution.c | 1370 +-- pyFAI/ext/_convolution.pyx | 43 +- pyFAI/ext/_distortion.c | 6854 +++++++-------- pyFAI/ext/_distortion.pyx | 160 +- pyFAI/ext/_geometry.c | 4237 ++++----- pyFAI/ext/_geometry.pyx | 294 +- pyFAI/ext/_tree.c | 630 +- pyFAI/ext/_tree.pyx | 18 +- pyFAI/ext/bilinear.c | 841 +- pyFAI/ext/bilinear.pyx | 20 +- pyFAI/ext/fastcrc.c | 350 +- pyFAI/ext/histogram.c | 22 +- pyFAI/ext/marchingsquares.c | 355 +- pyFAI/ext/morphology.c | 1495 ++-- pyFAI/ext/morphology.pyx | 97 +- pyFAI/ext/preproc.c | 920 +- pyFAI/ext/preproc.pyx | 3 +- pyFAI/ext/reconstruct.c | 746 +- pyFAI/ext/reconstruct.pyx | 27 +- pyFAI/ext/relabel.c | 713 +- pyFAI/ext/relabel.pyx | 23 +- pyFAI/ext/sparse_utils.c | 24 +- pyFAI/ext/splitBBox.c | 388 +- pyFAI/ext/splitBBoxCSR.c | 462 +- pyFAI/ext/splitBBoxLUT.c | 485 +- pyFAI/ext/splitPixel.c | 388 +- pyFAI/ext/splitPixelFull.c | 388 +- pyFAI/ext/splitPixelFullCSR.c | 424 +- pyFAI/ext/splitPixelFullLUT.c | 470 +- pyFAI/ext/splitPixelFullLUT_double.c | 67 +- pyFAI/ext/watershed.c | 11669 ++++++++++--------------- pyFAI/ext/watershed.pyx | 38 +- setup.py | 3 +- 45 files changed, 16682 insertions(+), 18596 deletions(-) diff --git a/doc/source/api/modules.rst b/doc/source/api/modules.rst index e5f059c50..f8357f997 100644 --- a/doc/source/api/modules.rst +++ b/doc/source/api/modules.rst @@ -1,12 +1,15 @@ pyFAI API ========= -This chapter describes the programming interface of pyFAI, so what you can expect after having launched ipython and typed: -.. +This chapter describes the programming interface of pyFAI, so what you can +expect after having launched *Jupyter notebook* (or ipython) and typed: + +.. code-block:: python import pyFAI -The most important class is AzimuthalIntegrator which is an object containing both the geometry (it inherits from Geometry, another class) +The most important class is AzimuthalIntegrator which is an object containing +both the geometry (it inherits from Geometry, another class) and exposes important methods (functions) like integrate1d and integrate2d. .. toctree:: diff --git a/doc/source/api/pyFAI.rst b/doc/source/api/pyFAI.rst index b2d4d17a2..08b7a84ea 100644 --- a/doc/source/api/pyFAI.rst +++ b/doc/source/api/pyFAI.rst @@ -200,3 +200,170 @@ :members: :undoc-members: :show-inheritance: + +:mod:`ext.bilinear` Module +-------------------------- + +This extension makes a discrete 2D-array appear like a continuous function thanks +to bilinear interpolations. + +.. automodule:: pyFAI.ext.bilinear + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._bispev` Module +------------------------- + +This extension is a re-implementation of bi-cubic spline evaluation from scipy + +.. automodule:: pyFAI.ext._bispev + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._blob` Module +----------------------- + +Blob detection is used to find peaks in images by performing subsequent blurs + +.. automodule:: pyFAI.ext._blob + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.container` Module +--------------------------- + +Container are a new uniform storage, optimized for the creation of both LUT and CSR. +It has nothing to do with Docker. + +.. automodule:: pyFAI.ext.container + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._convolution` Module +------------------------------ + +Convolutions in real space are used to blurs images, used in blob-detection algorithm + +.. automodule:: pyFAI.ext._convolution + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext._distortion` Module +----------------------------- + +Distortion correction are correction are applied by Look-up table (or CSR) + +.. automodule:: pyFAI.ext._distortion + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext._geometry` Module +--------------------------- + +This extension is a fast-implementation for calculating the geometry, i.e. where +every pixel of an array stays in space (x,y,z) or its (r, \chi) coordinates. + +.. automodule:: pyFAI.ext._geometry + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.histogram` Module +--------------------------- + +Re-implementation of the numpy.histogram, optimized for azimuthal integration. +Deprecated, will be replaced by silx.math.histogramnd + +.. automodule:: pyFAI.ext.histogram + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.marchingsquares` Module +--------------------------------- + +The marchingsquares algorithm is used for calculating an iso-contour curve (displayed +on the screen while calibrating) but also to seed the points for the "massif" algoritm +during recalib. + +.. automodule:: pyFAI.ext.marchingsquares + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.morphology` Module +---------------------------- + +The morphology extension provides a couple of binary morphology operations on images. +They are also implemented in scipy.ndimage in the general case, but not as fast. + +.. automodule:: pyFAI.ext.morphology + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext.reconstruct` Module +----------------------------- + +Very simple inpainting module for reconstructing the missing part of an image (masked) +to be able to use more common algorithms. + +.. automodule:: pyFAI.ext.reconstruct + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.relabel` Module +------------------------- + +Relabel regions, used to flag from largest regions to the smallest + +.. automodule:: pyFAI.ext.relabel + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext.preproc` Module +------------------------- + +Contains a preprocessing function in charge of the dark-current subtraction, +flat-field normalization, ... taking care of masked values and normalization. + +.. automodule:: pyFAI.ext.preproc + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._tree` Module +----------------------- + +The tree is used in file hierarchy tree for the diff_map graphical user interface. + +.. automodule:: pyFAI.ext._tree + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.watershed` Module +--------------------------- + +Peak peaking via inverse watershed for connecting region of high intensity + +.. automodule:: pyFAI.ext.watershed + :members: + :undoc-members: + :show-inheritance: + + \ No newline at end of file diff --git a/doc/source/calibration.rst b/doc/source/calibration.rst index c160b89d6..e3c47e735 100644 --- a/doc/source/calibration.rst +++ b/doc/source/calibration.rst @@ -1,7 +1,7 @@ :Author: Jérôme Kieffer -:Date: 31/05/2016 +:Date: 01/12/2016 :Keywords: generic description of the calibration procedure -:Target: General audiance +:Target: General audience The determination of the geometry of the experimental setup for the diffraction pattern of a reference sample is called calibration in pyFAI. @@ -28,7 +28,8 @@ easier to perform a calibration, using the Debye-Sherrer rings of a reference sample called calibrant. About 30 calibrants are provided by pyFAI like :math:`LaB_6`, ceria :math:`CeO_2`, silicon, corrundum or silver behenate. -Among other simple compound, all of the NIST `Standard Reference Materials `_ +Among other simple compound, all of the NIST +`Standard Reference Materials `_ have been are tabulated and are directly available as calibrant. One can alternatively provide its own calibrant description files which is a simple text-file containing the largest d-spacing (in Angstrom) for a set of @@ -42,18 +43,30 @@ Pre-processing of images: ------------------------- The typical pre-processing consists of the averaging (or better median filtering) of darks images. Dark current images are then subtracted from data and corrected for flat. +The pre-processing is best performed using the *pyFAI-average* tool, which documentation +is available in the :ref:`manpage`. If saturated pixels exists, the are likely to be treated like peaks but their positions will be wrong. It is advised to either mask them out or to desaturate them (pyFAI provides an option, but it is expensive in calculation time). +A Mask drawing tool, called *pyFAI-drawmask*, is installed together with pyFAI and +its documentation available in the :ref:`manpage`. + +To start the calibration the *pyFAI-calib* tool will need: + +* an image with Debye-Sherrer rings +* the energy or the wavelength +* the calibrant name or the d-spacing file of the calibrant +* the detector description. Peak-picking ------------ - +Once started, *pyFAI-calib* will ask you to select rings. The Peak-picking consists in the identification of peaks and groups of peaks -belonging to same ring. It can be performed by 4 methods described hereafter. +belonging to same ring. +It can be performed by 4 methods described hereafter. Massif detection ................ @@ -97,7 +110,8 @@ Refinement of the parameters ---------------------------- After selecting groups of peaks, each of them is assigned to a Debye-Scherrer ring number -and associated to a d-spacing value hence a theoritcal 2\theta value. +(0-based numbering in python) +and associated to a d-spacing value hence a theoretical 2\theta value. A supervised least-squares refinement, performed on the difference of peak position's 2-theta values versus the expected ones from calibrant provides the 6-geometry parameters fitted. @@ -120,7 +134,7 @@ of the scattering image. The average error per control point (delta 2\theta error in radian) is printed out and offers a quantitative measurement of the relative quality of the fit for similar setups/experiment. -Neverthless its absolute value has no meaning, except the lower, the better. +Nevertheless its absolute value has no meaning, except the lower, the better. Subsequently, pyFAI offers some validation options in to check the quality of the fit. some of them global, some of them limited to given rings. diff --git a/doc/source/coverage.rst b/doc/source/coverage.rst index ace5c8ec6..4263ef8b7 100644 --- a/doc/source/coverage.rst +++ b/doc/source/coverage.rst @@ -1,38 +1,46 @@ Test coverage report for pyFAI ============================== -Measured on *pyFAI* version 0.12.0, 06/06/2016 +Measured on *pyFAI* version 0.13.0, 01/12/2016 .. csv-table:: Test suite coverage :header: "Name", "Stmts", "Exec", "Cover" :widths: 35, 8, 8, 8 - "pyFAI/__init__", "35", "20", "57.1 %" - "pyFAI/_version", "34", "32", "94.1 %" - "pyFAI/azimuthalIntegrator", "1258", "909", "72.3 %" - "pyFAI/blob_detection", "517", "196", "37.9 %" - "pyFAI/calibrant", "338", "244", "72.2 %" - "pyFAI/decorators", "33", "33", "100.0 %" - "pyFAI/detectors", "1314", "1028", "78.2 %" - "pyFAI/directories", "33", "20", "60.6 %" - "pyFAI/distortion", "544", "162", "29.8 %" - "pyFAI/ext/__init__", "0", "0", "0.0 %" - "pyFAI/geometry", "961", "761", "79.2 %" - "pyFAI/geometryRefinement", "481", "174", "36.2 %" - "pyFAI/gui/utils", "69", "33", "47.8 %" - "pyFAI/integrate_widget", "493", "273", "55.4 %" - "pyFAI/io", "465", "250", "53.8 %" - "pyFAI/massif", "201", "132", "65.7 %" - "pyFAI/multi_geometry", "75", "65", "86.7 %" - "pyFAI/ocl_azim", "269", "191", "71.0 %" - "pyFAI/ocl_azim_csr", "240", "184", "76.7 %" - "pyFAI/ocl_azim_lut", "230", "177", "77.0 %" - "pyFAI/ocl_sort", "177", "136", "76.8 %" - "pyFAI/opencl", "204", "144", "70.6 %" - "pyFAI/peak_picker", "756", "195", "25.8 %" - "pyFAI/spline", "432", "165", "38.2 %" - "pyFAI/units", "70", "65", "92.9 %" - "pyFAI/utils", "778", "431", "55.4 %" - "pyFAI/worker", "340", "131", "38.5 %" + "__init__.py", "35", "20", "57.1 %" + "_version.py", "41", "39", "95.1 %" + "average.py", "526", "389", "74.0 %" + "azimuthalIntegrator.py", "1207", "926", "76.7 %" + "blob_detection.py", "504", "194", "38.5 %" + "calibrant.py", "338", "244", "72.2 %" + "containers.py", "79", "72", "91.1 %" + "decorators.py", "33", "23", "69.7 %" + "detectors.py", "1336", "1050", "78.6 %" + "directories.py", "34", "21", "61.8 %" + "distortion.py", "557", "166", "29.8 %" + "ext/__init__.py", "0", "0", "0.0 %" + "geometry.py", "959", "759", "79.1 %" + "geometryRefinement.py", "485", "176", "36.3 %" + "gui/__init__.py", "4", "4", "100.0 %" + "gui/matplotlib.py", "24", "17", "70.8 %" + "gui/qt.py", "100", "36", "36.0 %" + "gui/utils.py", "34", "14", "41.2 %" + "integrate_widget.py", "453", "268", "59.2 %" + "io.py", "579", "294", "50.8 %" + "massif.py", "201", "132", "65.7 %" + "multi_geometry.py", "128", "94", "73.4 %" + "ocl_azim.py", "269", "191", "71.0 %" + "ocl_azim_csr.py", "240", "184", "76.7 %" + "ocl_azim_lut.py", "231", "177", "76.6 %" + "ocl_sort.py", "177", "136", "76.8 %" + "opencl.py", "206", "146", "70.9 %" + "peak_picker.py", "758", "197", "26.0 %" + "spline.py", "432", "165", "38.2 %" + "units.py", "80", "76", "95.0 %" + "utils/__init__.py", "467", "290", "62.1 %" + "utils/bayes.py", "92", "60", "65.2 %" + "utils/shell.py", "44", "41", "93.2 %" + "utils/stringutil.py", "25", "24", "96.0 %" + "worker.py", "358", "140", "39.1 %" - "pyFAI total", "10347", "6151", "59.4 %" + "pyFAI total", "11036", "6765", "61.3 %" diff --git a/doc/source/detector.rst b/doc/source/detector.rst index b8770b57c..7b0b7a1d0 100644 --- a/doc/source/detector.rst +++ b/doc/source/detector.rst @@ -1,7 +1,7 @@ :Author: Jérôme Kieffer -:Date: 31/05/2016 +:Date: 01/12/2016 :Keywords: detector -:Target: General audiance +:Target: General audience Simple detector =============== @@ -11,7 +11,8 @@ Like most other diffraction processing packages, pyFAI allows the definition of Typical pixel size are 50e-6 m (50 microns) and will be used as example in the numerical application. -Pixels of the detector are indexed from the *origin* located at the **lower left corner**. +Pixels of the detector are indexed from the *origin* located at the +**lower left corner** when looking from the sample. The pixel's center is located at half integer index: * pixel 0 goes from position 0 m to 50e-6m and is centered at 25e-6 m. @@ -19,7 +20,7 @@ The pixel's center is located at half integer index: **Nota**: Most of the time you will need to pass the optional argument *origin="lower"* to -matplotlib imshow function when displaying the image to avoid confusion +matplotlib's *imshow* function when displaying the image to avoid confusion. Complex detectors ================= @@ -38,23 +39,23 @@ for small spatial displacements, often called geometric distortion. This is why detectors need more complex definitions than just that of a pixel size. To avoid complicated and error-prone sets of parameters, two tools have been introduced: -either *detector* classes define programatically detector or Nexus saved detector setup. +either *detector* classes define programmatically detector or Nexus saved detector setup. Detectors classes ----------------- They are used to define families of detectors. In order to take the specificities of each detector into account, pyFAI -contains about 55 detector class definitions (and twice a much with aliases) +contains about 58 detector class definitions (and 168 with aliases) which contain a mask (invalid pixels, gaps, ...) and a method to calculate the pixel positions in Cartesian coordinates. Available detectors can be printed using: .. code-block:: python - import pyFAI - print(pyFAI.detectors.ALL_DETECTORS) + >>> import pyFAI + >>> print(pyFAI.detectors.ALL_DETECTORS) -For optically coupled CCD detectors, the geometrical distortion is often +For optically coupled CCD detectors, the geometric distortion is often described by a bi-dimensional cubic spline which can be imported into the detector instance and be used to calculate the actual pixel position in space. @@ -76,7 +77,7 @@ can address some of the most complex detector layouts: * hexagonal pixels (i.e. Pixirad detectors, still under development) * curved/bent imaging plates (i.e. Rigaku, Aarhus detector) * pixel detectors with tiled modular (i.e. Xpad detectors from ImXpad) -* semi-cylindrical pixel detectors (i.e. Pilatus12M from Dectris). +* semi-cylindrical pixel detectors (i.e. Pilatus12M from Dectris or CirPad from Soleil). The detector instance can be saved as HDF5, either programmatically, either on the command line. @@ -92,7 +93,9 @@ Using the *detector2nexus* script to convert a complex detector definition (multiple modules, possibly in 3D) into a single NeXus detector definition together with the mask: - detector2nexus -s halfccd.spline -o halfccd.h5 +.. code-block:: bash + + detector2nexus -s halfccd.spline -o halfccd.h5 Conclusion ========== @@ -101,9 +104,9 @@ Detector definition in pyFAI is very versatile. Fortunately, most detectors are already described, making the usage transparent for most users. There are a couple of :ref:`tutorials` on detector definition which will help -you understanding the mechanisme : +you understanding the underlying mechanism: -* Distortion which explains how to correct images for geometric distortion -* CCD-calibration which explains how to calibrate a detector for geometric +* **Distortion** which explains how to correct images for geometric distortion +* **CCD-calibration** which explains how to calibrate such detectors for geometric distortion. diff --git a/doc/source/geometry.rst b/doc/source/geometry.rst index 96a2d55b5..5e8e9e912 100644 --- a/doc/source/geometry.rst +++ b/doc/source/geometry.rst @@ -1,7 +1,7 @@ :Author: Jérôme Kieffer -:Date: 28/06/2016 +:Date: 01/12/2016 :Keywords: generic description of the geometry -:Target: General audiance +:Target: General audience PyFAI uses a 6-parameter geometry definition similar, while not rigorously identical to SPD: @@ -50,7 +50,8 @@ Position of the observer There are two (main) conventions when representing images: -* In imaging application, one can can replace the camera by the eye, the camera looks at the scene. In this convention, the origin is usually at the top of the image. +* In imaging application, one can can replace the camera by the eye, the camera + looks at the scene. In this convention, the origin is usually at the top of the image. * In diffraction application, the observer is situated at the sample position and looks at the detector, hence on the other side of the detector. @@ -72,7 +73,7 @@ In the (most common) case of *transmission diffraction setup* on synchrotrons Axis 3 is built in such a way to be orthogonal to the plane (1,2). Due to constraints on the origin and orientation of the azimuthal angle, chi, -(1, 2, 3) is inderect orientation. +(1, 2, 3) is indirect orientation. This makes usually the PONI position with negative third coordiante (at z<0). @@ -96,19 +97,22 @@ the detector surface called PONI (for Point Of Normal Incidence). For non planar detectors, the PONI is defined in the plan z=0 in detector's coordinate system. -Poni1 and Poni2 are distances in meter (along the *y* and *x* axis of the detector), +*Poni1* and *Poni2* are distances in meter (along the *y* and *x* axis of the detector), like the sample-detector distance, letting the calibration parameters be independent of the pixel size hence stable regarding the binning factor of the detector. -In the same idea rot1, rot2 and rot3 are rotation along axis 1, 2 and 3, always expressed in radians. +In the same idea *rot1*, *rot2* and *rot3* are rotation along axis 1, 2 and 3, +always expressed in radians. Rotations applied in the same order: *rot1* then *rot2* and finally *rot3*. -Due to the axial symmetry of the Debye-Scherrer cones, *rot3* cannot be optimized but can be adjusted manually in some cases like if -the detector is not mounted horizontally and/or one cares about polarization correction. +Due to the axial symmetry of the Debye-Scherrer cones, *rot3* cannot be optimized +but can be adjusted manually in some cases like if +the detector is not mounted horizontally and/or one cares about polarization +correction. When all rotations are zero, the detector is in transmission mode with the incident beam orthogonal to the detector's surface. -There is also a tutorial :ref:`tutorials` on the geomety which explains in detail +There is also a tutorial :ref:`tutorials` on the geometry which explains in detail the orientations of the different rotations used by pyFAI. diff --git a/doc/source/index.rst b/doc/source/index.rst index 32ee96ad5..fbb6d443d 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -1,7 +1,10 @@ .. pyFAI documentation master file, created by sphinx-quickstart on Mon Nov 19 13:19:53 2012. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. + +:Author: Jérôme Kieffer +:Date: 01/12/2016 +:Keywords: generic description of the geometry +:Target: General audience Fast Azimuthal Integration using Python ======================================= diff --git a/doc/source/project.rst b/doc/source/project.rst index f2b8eb95b..dbc0e25e7 100644 --- a/doc/source/project.rst +++ b/doc/source/project.rst @@ -1,5 +1,5 @@ :Author: Jérôme Kieffer -:Date: 02/06/2016 +:Date: 01/12/2016 :Keywords: Project management description :Target: developers @@ -9,10 +9,10 @@ Project PyFAI is a library to deal with diffraction images for data reduction. This chapter describes the project from the computer engineering point of view. -PyFAI is an open source project licensed under the GPL (+ MIT code) mainly +PyFAI is an open source project licensed under the GPL (switching to MIT) mainly written in Python (v2.7 or newer, 3.4 or newer) and heavily relying on the Python scientific ecosystem: numpy, scipy and matplotlib. -It provides high performances image treatment thanks to cython and +It provides high performances image treatment thanks to Cython and OpenCL... but only a C-compiler is needed to build it. Programming language @@ -37,13 +37,13 @@ Repository: ----------- The project is hosted on GitHub: -https://github.com/pyFAI/pyFAI +https://github.com/silx-kit/pyFAI -Which provides the `issue tracker `_ in +Which provides the `issue tracker `_ in addition to Git hosting. Collaboration is done via Pull-Requests in github's web interface: -Everybody is welcome to `fork the project `_ +Everybody is welcome to `fork the project `_ and adapt it to his own needs: CEA-Saclay, Synchrotrons Soleil, Desy and APS have already done so. Collaboration is encouraged and new developments can be submitted and merged @@ -69,7 +69,7 @@ too much spammed. As the mailing list is archived, and can be consulted at: you can also check the volume of the list. If you think you are facing a bug, the best is to -`create a new issue on the GitHub page `_ +`create a new issue on the GitHub page `_ (you will need a GitHub account for that). Direct contact with authors is discouraged: @@ -100,19 +100,17 @@ Build dependencies: In addition to the run dependencies, pyFAI needs a C compiler. -There is an issue with MacOSX (v10.8 onwards) where the default compiler -(Xcode5 or 6) switched from gcc 4.2 to clang which -dropped the support for OpenMP (clang v3.5 supports OpenMP under linux but not -directly under MacOSX). -Multiple solution exist, pick any of those: - -* Install a recent version of GCC (>=4.2) -* Use Xcode without OpenMP, using the --no-openmp flag for setup.py. - You will need to remove the *pyFAI/ext/histogram.c* file and regenerate it, - cython needs to be installed. - -C files are generated from cython source and distributed. Cython is only needed -for developing new binary modules. +There is an issue with MacOS (v10.8 onwards) where the default compiler +(Xcode5 or newer) dropped the support for OpenMP. +On this platform pyFAI will enforce the generation of C-files from Cython sources +(making Cython a build-dependency on MacOS) without support of OpenMP +(options: --no-openmp --force-cython). +On OSX, an alternative is to install a recent version of GCC (>=4.2) and to use +it for compiling pyFAI. +The options to be used then are * --force-cython --openmp*. + +Otherwise, C files are which are provided with pyFAI sources are directly useable +and Cython is only needed for developing new binary modules. If you want to generate your own C files, make sure your local Cython version is recent enough (v0.21 and newer), unless your Cython files will not be translated to C, nor used. @@ -126,15 +124,16 @@ As most of the Python projects: .. code:: python setup.py build bdist_wheel - pip install dist/pyFAI-0.12.0*.whl --upgrade + pip install dist/pyFAI-0.13.0*.whl --upgrade There are few specific options to setup.py: * --no-cython: do not use cython (even if present) and use the C source code provided by the development team -* --no-openmp: if you compiler lacks OpenMP support, like Xcode on MacOSX. - Delete also *pyFAI/ext/histogram.c* and install cython to regenerate C-files. +* --force-cython: enforce the regeneration of all C-files from cython sources +* --no-openmp: if you compiler lacks OpenMP support, like Xcode on MacOS. +* --openmp: enforce the use of OpenMP. * --with-testimages: build the source distribution including all test images. Downloads 200MB of test images to create a self consistent tar-ball. @@ -156,7 +155,7 @@ or from python: pyFAI.tests() -It is normal to get few (<20) **Warning** messages as the test procedure also +Some **Warning** messages are normal as the test procedure also tests corner cases. To run the test an internet connection is needed as 200MB of test images will be downloaded. @@ -169,7 +168,7 @@ Setting the environment variable http_proxy can be necessary (depending on your export http_proxy=http://proxy.site.org:3128 Especially at ESRF, the configuration of the network proxy can be obtained -by phoning on the hotline: 24-24. +by asking at the helpdesk: helpdesk@esrf.fr To test the development version (built but not yet installed): @@ -185,7 +184,7 @@ or python run_test.py -i -PyFAI comes with 34 test-suites (223 tests in total) representing a coverage of 60%. +PyFAI comes with 40 test-suites (338 tests in total) representing a coverage of 60%. This ensures both non regression over time and ease the distribution under different platforms: pyFAI runs under Linux, MacOSX and Windows (in each case in 32 and 64 bits). Test may not pass on computer featuring less than 2GB of memory or 32 bit architectures. @@ -221,7 +220,7 @@ Continuous integration is made by a home-made scripts which checks out the lates You have to accept non-signed packages because they are automatically built. In addition some "cloud-based" tools are used to ensure a larger coverage of operating systems/environment. -They rely on a `"local wheelhouse" `_. +They rely on a `"local wheelhouse" `_. Those wheels are optimized for Travis-CI, AppVeyor and ReadTheDocs, using them is not recommended as your Python configuration may differ (and those libraries could even crash your system). @@ -230,9 +229,10 @@ Linux ..... -`Travis provides continuous integration on Linux `_, 64 bits computer with Python 2.7, 3.4 and 3.5. +`Travis provides continuous integration on Linux `_, +64 bits computer with Python 2.7, 3.4 and 3.5. -The builds cannot be retrieved with Travis-CO. +The builds cannot yet be retrieved with Travis-CI, but manylinux-wheels are on the radar. AppVeyor ........ diff --git a/doc/source/pyFAI.rst b/doc/source/pyFAI.rst index 2a9573cba..803974f33 100644 --- a/doc/source/pyFAI.rst +++ b/doc/source/pyFAI.rst @@ -1,5 +1,5 @@ :Author: Jérôme Kieffer -:Date: 31/05/2016 +:Date: 01/12/2016 :Keywords: generic description of the software :Target: General audiance @@ -102,21 +102,10 @@ PyFAI executables ................. PyFAI was designed to be used by scientists needing a simple and -effective tool for azimuthal integration. Two command line programs -*pyFAI-waxs* and *pyFAI-saxs* are provided with pyFAI for performing the -integration of one or more images on the command line. -The waxs version outputs result in -:math:`2\theta /I`, whereas the saxs version outputs result in -:math:`q/I(/\sigma)`. Options for these programs are parameter file -(*poni-file*) -describing the geometry and the mask file. They can also do some -pre-processing like dark-noise subtraction and flat-field correction -(solid-angle correction is done by default). - -A new Graphical interface based on Qt called *pyFAI-integrate* is now available, -offers all options possible for azimuthal integration (dark/flat/polarization, -....) in addition to a finer tuning for the computing device selection (CPU/GPU). - +effective tool for azimuthal integration. +There are a certain number of scripts which will help you in preprocessing images +(dark current, flat-field, averaging, ...), +calibrating the geometry, performing the integration. Finally couple of specialized tool called diff_tomo and diff_map are available to reduce a 2D/3D-mapping experiment of 2D images into a 3D volume (:math:`x, y, 2\theta` for mapping or :math:`rot, trans, 2\theta` for tomography) @@ -137,9 +126,9 @@ integrated before being plotted. :align: center :alt: image -The :ref:`tutorials` section makes heavy use of *ipython*, now *jupyter* -to process data using pyFAI. -The first tutorial also explains a bit how Python and Jupyter works to be +The :ref:`tutorials` section makes heavy use of *IPython notebooks*, now called +*Jupyter notebooks* to process data using *pyFAI*. +The first tutorial also explains a bit how *Python* and *Jupyter* works to be able to perform basic processing efficiently with pyFAI. diff --git a/pyFAI/ext/_bispev.c b/pyFAI/ext/_bispev.c index bb086abcb..1a8058ede 100644 --- a/pyFAI/ext/_bispev.c +++ b/pyFAI/ext/_bispev.c @@ -445,7 +445,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/_bispev.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; struct __pyx_memoryview_obj; @@ -540,7 +540,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -549,7 +549,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -558,7 +558,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -567,7 +567,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -576,7 +576,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -585,7 +585,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -594,7 +594,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -603,7 +603,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -612,7 +612,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -621,7 +621,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -630,7 +630,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -639,7 +639,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -648,7 +648,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -657,7 +657,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -666,7 +666,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -675,7 +675,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -684,7 +684,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -693,7 +693,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -702,7 +702,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -711,7 +711,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -720,7 +720,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -755,7 +755,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -764,7 +764,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -773,7 +773,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -782,7 +782,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1810,7 +1810,7 @@ static PyObject *__pyx_codeobj__22; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_7_bispev_1bisplev(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_7_bispev_bisplev[] = "\n Evaluate a bivariate B-spline and its derivatives.\n\n Return a rank-2 array of spline function values (or spline derivative\n values) at points given by the cross-product of the rank-1 arrays x and\n y. In special cases, return an array or just a float if either x or y or\n both are floats. Based on BISPEV from FITPACK.\n\n Parameters\n ----------\n x, y : ndarray\n Rank-1 arrays specifying the domain over which to evaluate the\n spline or its derivative.\n tck : tuple\n A sequence of length 5 returned by `bisplrep` containing the knot\n locations, the coefficients, and the degree of the spline:\n [tx, ty, c, kx, ky].\n dx, dy : int, optional\n The orders of the partial derivatives in `x` and `y` respectively.\n This version does bot implement derivatives.\n\n Returns\n -------\n vals : ndarray\n The B-spline or its derivative evaluated over the set formed by\n the cross-product of `x` and `y`.\n\n See Also\n --------\n splprep, splrep, splint, sproot, splev\n UnivariateSpline, BivariateSpline\n\n Notes\n -----\n See `bisplrep` to generate the `tck` representation.\n\n References\n ----------\n .. [1] Dierckx P. : An algorithm for surface fitting\n with spline functions\n Ima J. Numer. Anal. 1 (1981) 267-283.\n .. [2] Dierckx P. : An algorithm for surface fitting\n with spline functions\n report tw50, Dept. Computer Science,K.U.Leuven, 1980.\n .. [3] Dierckx P. : Curve and surface fitting with splines,\n Monographs on Numerical Analysis, Oxford University Press, 1993.\n\n "; +static char __pyx_doc_5pyFAI_3ext_7_bispev_bisplev[] = "bisplev(x, y, tck, dx=0, dy=0)\n\n Evaluate a bivariate B-spline and its derivatives.\n\n Return a rank-2 array of spline function values (or spline derivative\n values) at points given by the cross-product of the rank-1 arrays x and\n y. In special cases, return an array or just a float if either x or y or\n both are floats. Based on BISPEV from FITPACK.\n\n Parameters\n ----------\n x, y : ndarray\n Rank-1 arrays specifying the domain over which to evaluate the\n spline or its derivative.\n tck : tuple\n A sequence of length 5 returned by `bisplrep` containing the knot\n locations, the coefficients, and the degree of the spline:\n [tx, ty, c, kx, ky].\n dx, dy : int, optional\n The orders of the partial derivatives in `x` and `y` respectively.\n This version does bot implement derivatives.\n\n Returns\n -------\n vals : ndarray\n The B-spline or its derivative evaluated over the set formed by\n the cross-product of `x` and `y`.\n\n See Also\n --------\n splprep, splrep, splint, sproot, splev\n UnivariateSpline, BivariateSpline\n\n Notes\n -----\n See `bisplrep` to generate the `tck` representation.\n\n References\n ----------\n .. [1] Dierckx P. : An algorithm for surface fitting\n with spline functions\n Ima J. Numer. Anal. 1 (1981) 267-283.\n .. [2] Dierckx P. : An algorithm for surface fitting\n with spline functions\n report tw50, Dept. Computer Science,K.U.Leuven, 1980.\n .. [3] Dierckx P. : Curve and surface fitting with splines,\n Monographs on Numerical Analysis, Oxford University Press, 1993.\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_7_bispev_1bisplev = {"bisplev", (PyCFunction)__pyx_pw_5pyFAI_3ext_7_bispev_1bisplev, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_7_bispev_bisplev}; static PyObject *__pyx_pw_5pyFAI_3ext_7_bispev_1bisplev(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; @@ -3505,24 +3505,24 @@ static PyObject *__pyx_f_5pyFAI_3ext_7_bispev_cy_bispev(__Pyx_memviewslice __pyx if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_17, __pyx_t_16, __pyx_t_18, __pyx_t_24, __pyx_t_26, __pyx_t_20, __pyx_t_27, __pyx_t_22, __pyx_t_23, __pyx_t_25, __pyx_t_28, __pyx_t_21) + #pragma omp parallel private(__pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_26, __pyx_t_28, __pyx_t_27, __pyx_t_17, __pyx_t_20, __pyx_t_16, __pyx_t_21, __pyx_t_24, __pyx_t_25, __pyx_t_19) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_tmp) lastprivate(__pyx_v_i) lastprivate(__pyx_v_a) lastprivate(__pyx_v_j1) lastprivate(__pyx_v_i1) lastprivate(__pyx_v_err) lastprivate(__pyx_v_l2) lastprivate(__pyx_v_sp) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) + #pragma omp for lastprivate(__pyx_v_i1) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_err) lastprivate(__pyx_v_i) lastprivate(__pyx_v_tmp) lastprivate(__pyx_v_sp) lastprivate(__pyx_v_l2) lastprivate(__pyx_v_j1) lastprivate(__pyx_v_a) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ { __pyx_v_j = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_tmp = ((float)__PYX_NAN()); - __pyx_v_i = ((int)0xbad0bad0); - __pyx_v_a = ((float)__PYX_NAN()); - __pyx_v_j1 = ((int)0xbad0bad0); __pyx_v_i1 = ((int)0xbad0bad0); __pyx_v_err = ((float)__PYX_NAN()); - __pyx_v_l2 = ((int)0xbad0bad0); + __pyx_v_i = ((int)0xbad0bad0); + __pyx_v_tmp = ((float)__PYX_NAN()); __pyx_v_sp = ((float)__PYX_NAN()); + __pyx_v_l2 = ((int)0xbad0bad0); + __pyx_v_j1 = ((int)0xbad0bad0); + __pyx_v_a = ((float)__PYX_NAN()); /* "pyFAI/ext/_bispev.pyx":250 * @@ -3721,7 +3721,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_7_bispev_cy_bispev(__Pyx_memviewslice __pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3771,7 +3771,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -3784,7 +3784,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -3793,7 +3793,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -3802,7 +3802,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -3811,7 +3811,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3821,7 +3821,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -3833,7 +3833,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -3844,7 +3844,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3858,7 +3858,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3870,7 +3870,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -3884,7 +3884,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3898,7 +3898,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3910,7 +3910,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -3924,7 +3924,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -3933,7 +3933,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -3942,7 +3942,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -3952,7 +3952,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -3961,7 +3961,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -3970,7 +3970,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -3981,7 +3981,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -3990,7 +3990,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -4003,7 +4003,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -4012,7 +4012,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -4023,7 +4023,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -4032,7 +4032,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -4041,7 +4041,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -4050,7 +4050,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -4059,7 +4059,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -4071,7 +4071,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -4080,7 +4080,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -4098,7 +4098,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -4114,7 +4114,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -4129,7 +4129,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -4139,7 +4139,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -4149,7 +4149,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -4169,7 +4169,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -4187,7 +4187,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -4201,7 +4201,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -4210,7 +4210,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -4221,7 +4221,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -4232,7 +4232,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -4243,7 +4243,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -4254,7 +4254,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -4265,7 +4265,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -4276,7 +4276,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -4287,7 +4287,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -4298,7 +4298,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -4309,7 +4309,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -4320,7 +4320,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -4331,7 +4331,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -4342,7 +4342,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -4353,7 +4353,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -4364,7 +4364,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -4375,7 +4375,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -4386,7 +4386,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -4398,7 +4398,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -4424,7 +4424,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -4433,7 +4433,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -4445,7 +4445,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -4454,7 +4454,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -4463,7 +4463,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -4472,7 +4472,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -4482,7 +4482,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -4492,7 +4492,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -4524,7 +4524,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4548,7 +4548,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -4558,7 +4558,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -4570,7 +4570,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -4580,7 +4580,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -4592,7 +4592,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4604,7 +4604,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4621,7 +4621,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -4635,7 +4635,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4654,7 +4654,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4671,7 +4671,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -4685,7 +4685,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4704,7 +4704,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4721,7 +4721,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -4735,7 +4735,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4754,7 +4754,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4771,7 +4771,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -4785,7 +4785,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4804,7 +4804,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4821,7 +4821,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -4835,7 +4835,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4854,7 +4854,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -4886,7 +4886,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -4895,7 +4895,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -4904,7 +4904,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -4926,7 +4926,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -4939,7 +4939,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -4978,7 +4978,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -4995,7 +4995,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -5009,7 +5009,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -5029,7 +5029,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -5047,7 +5047,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -5061,7 +5061,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -5077,7 +5077,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -5086,7 +5086,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -5095,7 +5095,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -5106,7 +5106,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -5116,7 +5116,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -5126,7 +5126,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -5138,7 +5138,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -5148,7 +5148,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -5162,7 +5162,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -5180,7 +5180,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -5198,7 +5198,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -5216,7 +5216,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -5234,7 +5234,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -5252,7 +5252,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -5270,7 +5270,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -5288,7 +5288,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -5306,7 +5306,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -5324,7 +5324,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -5342,7 +5342,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -5360,7 +5360,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -5378,7 +5378,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -5396,7 +5396,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -5416,7 +5416,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -5436,7 +5436,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -5456,7 +5456,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -5475,7 +5475,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -5498,7 +5498,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -5510,7 +5510,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -5522,7 +5522,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -5532,7 +5532,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -5542,7 +5542,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -5567,7 +5567,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5582,7 +5582,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -5593,7 +5593,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -5605,7 +5605,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -5614,7 +5614,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -5625,7 +5625,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -5634,7 +5634,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -5643,7 +5643,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5655,7 +5655,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -5669,7 +5669,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -5679,7 +5679,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -5693,7 +5693,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -5704,7 +5704,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -17198,7 +17198,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -17209,7 +17209,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -17220,7 +17220,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17231,7 +17231,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -17242,7 +17242,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17253,7 +17253,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/_blob.c b/pyFAI/ext/_blob.c index d1736fbc3..efe637221 100644 --- a/pyFAI/ext/_blob.c +++ b/pyFAI/ext/_blob.c @@ -445,7 +445,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/_blob.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; #define IS_UNSIGNED(type) (((type) -1) > 0) @@ -540,7 +540,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -549,7 +549,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -558,7 +558,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -567,7 +567,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -576,7 +576,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -585,7 +585,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -594,7 +594,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -603,7 +603,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -612,7 +612,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -621,7 +621,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -630,7 +630,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -639,7 +639,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -648,7 +648,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -657,7 +657,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -666,7 +666,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -675,7 +675,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -684,7 +684,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -693,7 +693,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -702,7 +702,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -711,7 +711,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -720,7 +720,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -755,7 +755,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -764,7 +764,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -773,7 +773,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -782,7 +782,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1023,8 +1023,6 @@ static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* o __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); - #define __Pyx_BufPtrStrided3d(type, buf, i0, s0, i1, s1, i2, s2) (type)((char*)buf + i0 * s0 + i1 * s1 + i2 * s2) #define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d #define __Pyx_MEMVIEW_DIRECT 1 @@ -1155,6 +1153,8 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */ static PyObject *__pyx_memoryviewslice__get__base(PyObject *__pyx_v_self); /*proto*/ @@ -1353,7 +1353,7 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *); static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *); static int __Pyx_check_binary_version(void); @@ -1582,7 +1582,7 @@ static char __pyx_k_itemsize[] = "itemsize"; static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_enumerate[] = "enumerate"; static char __pyx_k_local_max[] = "local_max"; -static char __pyx_k_27_09_2016[] = "27/09/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; @@ -1632,7 +1632,7 @@ static char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_kp_s_27_09_2016; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_Aurore_Deschildre; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; @@ -1762,17 +1762,17 @@ static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_codeobj__19; -/* "pyFAI/ext/_blob.pyx":40 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_blob.pyx":41 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def local_max(float[:, :, ::1] dogs, mask=None, bint n_5=False): # <<<<<<<<<<<<<< - * """ - * Calculate if a point is a maximum in a 3D space: (scale, y, x) + * """Calculate if a point is a maximum in a 3D space: (scale, y, x) + * */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_blob_1local_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_5_blob_local_max[] = "\n Calculate if a point is a maximum in a 3D space: (scale, y, x)\n \n @param dogs: 3D array of difference of gaussian\n @param mask: mask with invalid pixels\n @param N-5: take a neighborhood of 5x5 pixel in plane\n @return: 3d_array with 1 where is_max \n "; +static char __pyx_doc_5pyFAI_3ext_5_blob_local_max[] = "local_max(__Pyx_memviewslice dogs, mask=None, bool n_5=False)\nCalculate if a point is a maximum in a 3D space: (scale, y, x)\n \n :param dogs: 3D array of difference of gaussian\n :param mask: mask with invalid pixels\n :param N_5: take a neighborhood of 5x5 pixel in plane\n :return: 3d_array with 1 where is_max \n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_5_blob_1local_max = {"local_max", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_blob_1local_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_5_blob_local_max}; static PyObject *__pyx_pw_5pyFAI_3ext_5_blob_1local_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_dogs = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -1815,7 +1815,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_5_blob_1local_max(PyObject *__pyx_self, Py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "local_max") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "local_max") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -1826,17 +1826,17 @@ static PyObject *__pyx_pw_5pyFAI_3ext_5_blob_1local_max(PyObject *__pyx_self, Py default: goto __pyx_L5_argtuple_error; } } - __pyx_v_dogs = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_dogs.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_dogs = __Pyx_PyObject_to_MemoryviewSlice_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_dogs.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_mask = values[1]; if (values[2]) { - __pyx_v_n_5 = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_n_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_n_5 = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_n_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_n_5 = ((int)0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("local_max", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("local_max", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._blob.local_max", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2121,7 +2121,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_blob_local_max(CYTHON_UNUSED PyObject *_ __pyx_pybuffernd_is_max.rcbuffer = &__pyx_pybuffer_is_max; /* "pyFAI/ext/_blob.pyx":49 - * @return: 3d_array with 1 where is_max + * :return: 3d_array with 1 where is_max * """ * cdef bint do_mask = mask is not None # <<<<<<<<<<<<<< * cdef int ns, ny, nx, s, x, y @@ -2132,7 +2132,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_blob_local_max(CYTHON_UNUSED PyObject *_ /* "pyFAI/ext/_blob.pyx":54 * cdef float c - * cdef numpy.int8_t[:,:] cmask + * cdef numpy.int8_t[:, ::1] cmask * ns = dogs.shape[0] # <<<<<<<<<<<<<< * ny = dogs.shape[1] * nx = dogs.shape[2] @@ -2140,7 +2140,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_blob_local_max(CYTHON_UNUSED PyObject *_ __pyx_v_ns = (__pyx_v_dogs.shape[0]); /* "pyFAI/ext/_blob.pyx":55 - * cdef numpy.int8_t[:,:] cmask + * cdef numpy.int8_t[:, ::1] cmask * ns = dogs.shape[0] * ny = dogs.shape[1] # <<<<<<<<<<<<<< * nx = dogs.shape[2] @@ -2254,7 +2254,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_blob_local_max(CYTHON_UNUSED PyObject *_ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(__pyx_t_6); if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_cmask = __pyx_t_7; @@ -2421,10 +2421,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_blob_local_max(CYTHON_UNUSED PyObject *_ __pyx_t_1 = __pyx_t_9; goto __pyx_L15_bool_binop_done; } - if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundLocalError("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_19 = __pyx_v_y; __pyx_t_20 = __pyx_v_x; - __pyx_t_9 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_19 * __pyx_v_cmask.strides[0]) ) + __pyx_t_20 * __pyx_v_cmask.strides[1]) ))) != 0); + __pyx_t_9 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_19 * __pyx_v_cmask.strides[0]) )) + __pyx_t_20)) ))) != 0); __pyx_t_1 = __pyx_t_9; __pyx_L15_bool_binop_done:; if (__pyx_t_1) { @@ -3653,12 +3652,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_blob_local_max(CYTHON_UNUSED PyObject *_ __pyx_r = ((PyObject *)__pyx_v_is_max); goto __pyx_L0; - /* "pyFAI/ext/_blob.pyx":40 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_blob.pyx":41 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def local_max(float[:, :, ::1] dogs, mask=None, bint n_5=False): # <<<<<<<<<<<<<< - * """ - * Calculate if a point is a maximum in a 3D space: (scale, y, x) + * """Calculate if a point is a maximum in a 3D space: (scale, y, x) + * */ /* function exit code */ @@ -3687,7 +3686,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_blob_local_max(CYTHON_UNUSED PyObject *_ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3737,7 +3736,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -3750,7 +3749,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -3759,7 +3758,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -3768,7 +3767,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -3777,7 +3776,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3787,7 +3786,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -3799,7 +3798,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -3810,7 +3809,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3824,7 +3823,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3836,7 +3835,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -3850,7 +3849,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3864,7 +3863,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3876,7 +3875,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -3890,7 +3889,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -3899,7 +3898,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -3908,7 +3907,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -3918,7 +3917,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -3927,7 +3926,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -3936,7 +3935,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -3947,7 +3946,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -3956,7 +3955,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -3969,7 +3968,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -3978,7 +3977,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -3989,7 +3988,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -3998,7 +3997,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -4007,7 +4006,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -4016,7 +4015,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -4025,7 +4024,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -4037,7 +4036,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -4046,7 +4045,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -4064,7 +4063,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -4080,7 +4079,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -4095,7 +4094,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -4105,7 +4104,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -4115,7 +4114,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -4135,7 +4134,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -4153,7 +4152,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -4167,7 +4166,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -4176,7 +4175,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -4187,7 +4186,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -4198,7 +4197,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -4209,7 +4208,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -4220,7 +4219,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -4231,7 +4230,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -4242,7 +4241,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -4253,7 +4252,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -4264,7 +4263,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -4275,7 +4274,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -4286,7 +4285,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -4297,7 +4296,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -4308,7 +4307,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -4319,7 +4318,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -4330,7 +4329,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -4341,7 +4340,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -4352,7 +4351,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -4364,7 +4363,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -4390,7 +4389,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -4399,7 +4398,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -4411,7 +4410,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -4420,7 +4419,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -4429,7 +4428,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -4438,7 +4437,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -4448,7 +4447,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -4458,7 +4457,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -4490,7 +4489,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4514,7 +4513,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -4524,7 +4523,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -4536,7 +4535,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -4546,7 +4545,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -4558,7 +4557,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4570,7 +4569,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4587,7 +4586,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -4601,7 +4600,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4620,7 +4619,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4637,7 +4636,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -4651,7 +4650,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4670,7 +4669,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4687,7 +4686,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -4701,7 +4700,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4720,7 +4719,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4737,7 +4736,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -4751,7 +4750,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4770,7 +4769,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4787,7 +4786,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -4801,7 +4800,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4820,7 +4819,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -4852,7 +4851,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -4861,7 +4860,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -4870,7 +4869,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -4892,7 +4891,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -4905,7 +4904,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -4944,7 +4943,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -4961,7 +4960,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -4975,7 +4974,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -4995,7 +4994,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -5013,7 +5012,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -5027,7 +5026,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -5043,7 +5042,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -5052,7 +5051,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -5061,7 +5060,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -5072,7 +5071,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -5082,7 +5081,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -5092,7 +5091,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -5104,7 +5103,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -5114,7 +5113,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -5128,7 +5127,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -5146,7 +5145,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -5164,7 +5163,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -5182,7 +5181,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -5200,7 +5199,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -5218,7 +5217,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -5236,7 +5235,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -5254,7 +5253,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -5272,7 +5271,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -5290,7 +5289,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -5308,7 +5307,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -5326,7 +5325,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -5344,7 +5343,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -5362,7 +5361,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -5382,7 +5381,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -5402,7 +5401,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -5422,7 +5421,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -5441,7 +5440,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -5464,7 +5463,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -5476,7 +5475,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -5488,7 +5487,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -5498,7 +5497,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -5508,7 +5507,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -5533,7 +5532,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5548,7 +5547,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -5559,7 +5558,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -5571,7 +5570,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -5580,7 +5579,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -5591,7 +5590,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -5600,7 +5599,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -5609,7 +5608,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5621,7 +5620,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -5635,7 +5634,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -5645,7 +5644,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -5659,7 +5658,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -5670,7 +5669,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -16997,7 +16996,7 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_27_09_2016, __pyx_k_27_09_2016, sizeof(__pyx_k_27_09_2016), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_Aurore_Deschildre, __pyx_k_Aurore_Deschildre, sizeof(__pyx_k_Aurore_Deschildre), 0, 0, 1, 0}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, @@ -17125,7 +17124,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -17136,7 +17135,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -17147,7 +17146,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17158,7 +17157,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -17169,7 +17168,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17180,7 +17179,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -17312,17 +17311,17 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "pyFAI/ext/_blob.pyx":40 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_blob.pyx":41 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def local_max(float[:, :, ::1] dogs, mask=None, bint n_5=False): # <<<<<<<<<<<<<< - * """ - * Calculate if a point is a maximum in a 3D space: (scale, y, x) + * """Calculate if a point is a maximum in a 3D space: (scale, y, x) + * */ - __pyx_tuple__18 = PyTuple_Pack(14, __pyx_n_s_dogs, __pyx_n_s_mask, __pyx_n_s_n_5, __pyx_n_s_do_mask, __pyx_n_s_ns, __pyx_n_s_ny, __pyx_n_s_nx, __pyx_n_s_s, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_m, __pyx_n_s_c, __pyx_n_s_cmask, __pyx_n_s_is_max); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__18 = PyTuple_Pack(14, __pyx_n_s_dogs, __pyx_n_s_mask, __pyx_n_s_n_5, __pyx_n_s_do_mask, __pyx_n_s_ns, __pyx_n_s_ny, __pyx_n_s_nx, __pyx_n_s_s, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_m, __pyx_n_s_c, __pyx_n_s_cmask, __pyx_n_s_is_max); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_local_max, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_local_max, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -17536,7 +17535,7 @@ PyMODINIT_FUNC PyInit__blob(void) * """ * __authors__ = ["Aurore Deschildre", "Jerome Kieffer"] # <<<<<<<<<<<<<< * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" */ __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); @@ -17553,7 +17552,7 @@ PyMODINIT_FUNC PyInit__blob(void) * """ * __authors__ = ["Aurore Deschildre", "Jerome Kieffer"] * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -17561,15 +17560,15 @@ PyMODINIT_FUNC PyInit__blob(void) /* "pyFAI/ext/_blob.pyx":29 * __authors__ = ["Aurore Deschildre", "Jerome Kieffer"] * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __status__ = "stable" * __license__ = "GPLv3+" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_27_09_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_blob.pyx":30 * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" # <<<<<<<<<<<<<< * __license__ = "GPLv3+" * import cython @@ -17577,7 +17576,7 @@ PyMODINIT_FUNC PyInit__blob(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_blob.pyx":31 - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" * __license__ = "GPLv3+" # <<<<<<<<<<<<<< * import cython @@ -17597,16 +17596,16 @@ PyMODINIT_FUNC PyInit__blob(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_blob.pyx":40 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_blob.pyx":41 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def local_max(float[:, :, ::1] dogs, mask=None, bint n_5=False): # <<<<<<<<<<<<<< - * """ - * Calculate if a point is a maximum in a 3D space: (scale, y, x) + * """Calculate if a point is a maximum in a 3D space: (scale, y, x) + * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_5_blob_1local_max, NULL, __pyx_n_s_pyFAI_ext__blob); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_5_blob_1local_max, NULL, __pyx_n_s_pyFAI_ext__blob); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_local_max, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_local_max, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyFAI/ext/_blob.pyx":1 @@ -18602,10 +18601,6 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { __Pyx_ReleaseBuffer(info); } -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { - PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -} - static int __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, int ndim, @@ -19242,6 +19237,10 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, *tb = tmp_tb; } +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + static CYTHON_INLINE long __Pyx_div_long(long a, long b) { long q = a / b; long r = a - q*b; @@ -20599,17 +20598,17 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { return (long) -1; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 2, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, stack, &result, obj); if (unlikely(retcode == -1)) diff --git a/pyFAI/ext/_blob.pyx b/pyFAI/ext/_blob.pyx index 5319bbf25..9a6c05ffe 100644 --- a/pyFAI/ext/_blob.pyx +++ b/pyFAI/ext/_blob.pyx @@ -26,7 +26,7 @@ Some Cythonized function for blob detection function """ __authors__ = ["Aurore Deschildre", "Jerome Kieffer"] __contact__ = "Jerome.kieffer@esrf.fr" -__date__ = "27/09/2016" +__date__ = "01/12/2016" __status__ = "stable" __license__ = "GPLv3+" import cython @@ -34,23 +34,23 @@ import numpy cimport numpy from cython.parallel import prange - @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def local_max(float[:, :, ::1] dogs, mask=None, bint n_5=False): - """ - Calculate if a point is a maximum in a 3D space: (scale, y, x) + """Calculate if a point is a maximum in a 3D space: (scale, y, x) - @param dogs: 3D array of difference of gaussian - @param mask: mask with invalid pixels - @param N-5: take a neighborhood of 5x5 pixel in plane - @return: 3d_array with 1 where is_max + :param dogs: 3D array of difference of gaussian + :param mask: mask with invalid pixels + :param N_5: take a neighborhood of 5x5 pixel in plane + :return: 3d_array with 1 where is_max """ cdef bint do_mask = mask is not None cdef int ns, ny, nx, s, x, y cdef numpy.int8_t m cdef float c - cdef numpy.int8_t[:,:] cmask + cdef numpy.int8_t[:, ::1] cmask ns = dogs.shape[0] ny = dogs.shape[1] nx = dogs.shape[2] diff --git a/pyFAI/ext/_convolution.c b/pyFAI/ext/_convolution.c index c6f51e4da..68200bc90 100644 --- a/pyFAI/ext/_convolution.c +++ b/pyFAI/ext/_convolution.c @@ -445,9 +445,18 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/_convolution.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; +struct __pyx_memoryview_obj; +typedef struct { + struct __pyx_memoryview_obj *memview; + char *data; + Py_ssize_t shape[8]; + Py_ssize_t strides[8]; + Py_ssize_t suboffsets[8]; +} __Pyx_memviewslice; + #define IS_UNSIGNED(type) (((type) -1) > 0) struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) @@ -483,15 +492,6 @@ typedef struct { char is_valid_array; } __Pyx_BufFmt_Context; -struct __pyx_memoryview_obj; -typedef struct { - struct __pyx_memoryview_obj *memview; - char *data; - Py_ssize_t shape[8]; - Py_ssize_t strides[8]; - Py_ssize_t suboffsets[8]; -} __Pyx_memviewslice; - #include #ifndef CYTHON_ATOMICS #define CYTHON_ATOMICS 1 @@ -540,7 +540,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -549,7 +549,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -558,7 +558,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -567,7 +567,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -576,7 +576,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -585,7 +585,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -594,7 +594,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -603,7 +603,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -612,7 +612,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -621,7 +621,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -630,7 +630,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -639,7 +639,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -648,7 +648,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -657,7 +657,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -666,7 +666,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -675,7 +675,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -684,7 +684,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -693,7 +693,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -702,7 +702,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -711,7 +711,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -720,7 +720,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -755,7 +755,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -764,7 +764,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -773,7 +773,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -782,7 +782,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -996,18 +996,16 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static void __Pyx_RaiseBufferFallbackError(void); - -#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1) -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); - #define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d #define __Pyx_MEMVIEW_DIRECT 1 #define __Pyx_MEMVIEW_PTR 2 @@ -1045,18 +1043,15 @@ static double __Pyx__PyObject_AsDouble(PyObject* obj); PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) #endif -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); + static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); @@ -1065,6 +1060,8 @@ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); @@ -1246,14 +1243,17 @@ static int __Pyx_ValidateAndInit_memviewslice( __Pyx_memviewslice *memviewslice, PyObject *original_obj); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *); static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); +static PyObject *__pyx_memview_get_float(const char *itemp); +static int __pyx_memview_set_float(const char *itemp, PyObject *obj); + #if CYTHON_CCOMPLEX #ifdef __cplusplus #define __Pyx_CREAL(z) ((z).real()) @@ -1472,7 +1472,6 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/ static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/ -static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t = { "float32_t", NULL, sizeof(__pyx_t_5numpy_float32_t), { 0 }, 0, 'R', 0, 0 }; static __Pyx_TypeInfo __Pyx_TypeInfo_float = { "float", NULL, sizeof(float), { 0 }, 0, 'R', 0, 0 }; #define __Pyx_MODULE_NAME "pyFAI.ext._convolution" int __pyx_module_is_main_pyFAI__ext___convolution = 0; @@ -1601,6 +1600,7 @@ static char __pyx_k_unpack[] = "unpack"; static char __pyx_k_xrange[] = "xrange"; static char __pyx_k_IMAGE_H[] = "IMAGE_H"; static char __pyx_k_IMAGE_W[] = "IMAGE_W"; +static char __pyx_k_asarray[] = "asarray"; static char __pyx_k_authors[] = "__authors__"; static char __pyx_k_contact[] = "__contact__"; static char __pyx_k_float32[] = "float32"; @@ -1612,7 +1612,7 @@ static char __pyx_k_gaussian[] = "gaussian"; static char __pyx_k_itemsize[] = "itemsize"; static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_enumerate[] = "enumerate"; -static char __pyx_k_31_05_2016[] = "31/05/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; @@ -1665,7 +1665,7 @@ static char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_kp_s_31_05_2016; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; static PyObject *__pyx_kp_s_Cannot_index_with_type_s; @@ -1697,6 +1697,7 @@ static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_n_s_allocate_buffer; static PyObject *__pyx_n_s_arange; +static PyObject *__pyx_n_s_asarray; static PyObject *__pyx_n_s_ascontiguousarray; static PyObject *__pyx_n_s_astype; static PyObject *__pyx_n_s_authors; @@ -1817,17 +1818,17 @@ static PyObject *__pyx_codeobj__21; static PyObject *__pyx_codeobj__23; static PyObject *__pyx_codeobj__25; -/* "pyFAI/ext/_convolution.pyx":44 - * @cython.boundscheck(False) +/* "pyFAI/ext/_convolution.pyx":46 * @cython.wraparound(False) - * def horizontal_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def horizontal_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D horizontal convolution with a filter. */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_1horizontal_convolution(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12_convolution_horizontal_convolution[] = "\n Implements a 1D horizontal convolution with a filter.\n The only implemented mode is \"reflect\" (default in scipy.ndimage.filter)\n\n @param img: input image\n @param filter: 1D array with the coefficients of the array\n @return: array of the same shape as image with\n "; +static char __pyx_doc_5pyFAI_3ext_12_convolution_horizontal_convolution[] = "horizontal_convolution(__Pyx_memviewslice img, __Pyx_memviewslice filter)\n\n Implements a 1D horizontal convolution with a filter.\n The only implemented mode is \"reflect\" (default in scipy.ndimage.filter)\n\n :param img: input image\n :param filter: 1D array with the coefficients of the array\n :return: array of the same shape as image with\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12_convolution_1horizontal_convolution = {"horizontal_convolution", (PyCFunction)__pyx_pw_5pyFAI_3ext_12_convolution_1horizontal_convolution, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12_convolution_horizontal_convolution}; static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_1horizontal_convolution(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_img = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -1858,11 +1859,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_1horizontal_convolution(PyO case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filter)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("horizontal_convolution", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("horizontal_convolution", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "horizontal_convolution") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "horizontal_convolution") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -1870,12 +1871,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_1horizontal_convolution(PyO values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_img = __Pyx_PyObject_to_MemoryviewSlice_dsds_float(values[0]); if (unlikely(!__pyx_v_img.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_filter = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[1]); if (unlikely(!__pyx_v_filter.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_img = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[0]); if (unlikely(!__pyx_v_img.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_filter = __Pyx_PyObject_to_MemoryviewSlice_dc_float(values[1]); if (unlikely(!__pyx_v_filter.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("horizontal_convolution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("horizontal_convolution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._convolution.horizontal_convolution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -1901,9 +1902,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH float __pyx_v_err; float __pyx_v_val; float __pyx_v_tmp; - PyArrayObject *__pyx_v_output = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_output; - __Pyx_Buffer __pyx_pybuffer_output; + __Pyx_memviewslice __pyx_v_output = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -1912,31 +1911,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; - PyArrayObject *__pyx_t_7 = NULL; + __Pyx_memviewslice __pyx_t_7 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; + int __pyx_t_9; + int __pyx_t_10; + int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; - int __pyx_t_18; - int __pyx_t_19; - int __pyx_t_20; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("horizontal_convolution", 0); - __pyx_pybuffer_output.pybuffer.buf = NULL; - __pyx_pybuffer_output.refcount = 0; - __pyx_pybuffernd_output.data = NULL; - __pyx_pybuffernd_output.rcbuffer = &__pyx_pybuffer_output; - /* "pyFAI/ext/_convolution.pyx":60 - * numpy.ndarray[numpy.float32_t, ndim = 2] output + /* "pyFAI/ext/_convolution.pyx":62 + * float[:, ::1] output * * FILTER_SIZE = filter.shape[0] # <<<<<<<<<<<<<< * if FILTER_SIZE % 2 == 1: @@ -1944,7 +1936,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_FILTER_SIZE = (__pyx_v_filter.shape[0]); - /* "pyFAI/ext/_convolution.pyx":61 + /* "pyFAI/ext/_convolution.pyx":63 * * FILTER_SIZE = filter.shape[0] * if FILTER_SIZE % 2 == 1: # <<<<<<<<<<<<<< @@ -1954,7 +1946,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH __pyx_t_1 = (((__pyx_v_FILTER_SIZE % 2) == 1) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_convolution.pyx":62 + /* "pyFAI/ext/_convolution.pyx":64 * FILTER_SIZE = filter.shape[0] * if FILTER_SIZE % 2 == 1: * HALF_FILTER_SIZE = (FILTER_SIZE) // 2 # <<<<<<<<<<<<<< @@ -1966,7 +1958,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH } /*else*/ { - /* "pyFAI/ext/_convolution.pyx":64 + /* "pyFAI/ext/_convolution.pyx":66 * HALF_FILTER_SIZE = (FILTER_SIZE) // 2 * else: * HALF_FILTER_SIZE = (FILTER_SIZE + 1) // 2 # <<<<<<<<<<<<<< @@ -1977,7 +1969,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH } __pyx_L3:; - /* "pyFAI/ext/_convolution.pyx":66 + /* "pyFAI/ext/_convolution.pyx":68 * HALF_FILTER_SIZE = (FILTER_SIZE + 1) // 2 * * IMAGE_H = img.shape[0] # <<<<<<<<<<<<<< @@ -1986,7 +1978,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_IMAGE_H = (__pyx_v_img.shape[0]); - /* "pyFAI/ext/_convolution.pyx":67 + /* "pyFAI/ext/_convolution.pyx":69 * * IMAGE_H = img.shape[0] * IMAGE_W = img.shape[1] # <<<<<<<<<<<<<< @@ -1995,23 +1987,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_IMAGE_W = (__pyx_v_img.shape[1]); - /* "pyFAI/ext/_convolution.pyx":68 + /* "pyFAI/ext/_convolution.pyx":70 * IMAGE_H = img.shape[0] * IMAGE_W = img.shape[1] * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) # <<<<<<<<<<<<<< * for y in prange(IMAGE_H, nogil=True): * for x in range(IMAGE_W): */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_H); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_H); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_W); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_W); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -2019,48 +2011,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH __Pyx_GIVEREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_output.rcbuffer->pybuffer); - __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_output.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); - if (unlikely(__pyx_t_8 < 0)) { - PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_output.rcbuffer->pybuffer, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); - __Pyx_RaiseBufferFallbackError(); - } else { - PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); - } - } - __pyx_pybuffernd_output.diminfo[0].strides = __pyx_pybuffernd_output.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_output.diminfo[0].shape = __pyx_pybuffernd_output.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_output.diminfo[1].strides = __pyx_pybuffernd_output.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_output.diminfo[1].shape = __pyx_pybuffernd_output.rcbuffer->pybuffer.shape[1]; - if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_7 = 0; - __pyx_v_output = ((PyArrayObject *)__pyx_t_6); - __pyx_t_6 = 0; + __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_6); + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_v_output = __pyx_t_7; + __pyx_t_7.memview = NULL; + __pyx_t_7.data = NULL; - /* "pyFAI/ext/_convolution.pyx":69 + /* "pyFAI/ext/_convolution.pyx":71 * IMAGE_W = img.shape[1] * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) * for y in prange(IMAGE_H, nogil=True): # <<<<<<<<<<<<<< @@ -2082,40 +2059,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH #define likely(x) (x) #define unlikely(x) (x) #endif - __pyx_t_13 = (__pyx_t_8 - 0) / 1; - if (__pyx_t_13 > 0) + __pyx_t_10 = (__pyx_t_8 - 0) / 1; + if (__pyx_t_10 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_15, __pyx_t_17, __pyx_t_16, __pyx_t_1, __pyx_t_18, __pyx_t_14, __pyx_t_20) + #pragma omp parallel private(__pyx_t_17, __pyx_t_11, __pyx_t_16, __pyx_t_14, __pyx_t_15, __pyx_t_13, __pyx_t_12, __pyx_t_1) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_tmp) lastprivate(__pyx_v_val) lastprivate(__pyx_v_err) lastprivate(__pyx_v_fIndex) lastprivate(__pyx_v_x) lastprivate(__pyx_v_newpos) lastprivate(__pyx_v_sum) firstprivate(__pyx_v_y) lastprivate(__pyx_v_y) + #pragma omp for lastprivate(__pyx_v_newpos) lastprivate(__pyx_v_err) lastprivate(__pyx_v_fIndex) lastprivate(__pyx_v_val) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_tmp) firstprivate(__pyx_v_y) lastprivate(__pyx_v_y) lastprivate(__pyx_v_x) #endif /* _OPENMP */ - for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_13; __pyx_t_12++){ + for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_10; __pyx_t_9++){ { - __pyx_v_y = 0 + 1 * __pyx_t_12; + __pyx_v_y = 0 + 1 * __pyx_t_9; /* Initialize private variables to invalid values */ - __pyx_v_tmp = ((float)__PYX_NAN()); - __pyx_v_val = ((float)__PYX_NAN()); + __pyx_v_newpos = ((int)0xbad0bad0); __pyx_v_err = ((float)__PYX_NAN()); __pyx_v_fIndex = ((int)0xbad0bad0); - __pyx_v_x = ((int)0xbad0bad0); - __pyx_v_newpos = ((int)0xbad0bad0); + __pyx_v_val = ((float)__PYX_NAN()); __pyx_v_sum = ((float)__PYX_NAN()); + __pyx_v_tmp = ((float)__PYX_NAN()); + __pyx_v_x = ((int)0xbad0bad0); - /* "pyFAI/ext/_convolution.pyx":70 + /* "pyFAI/ext/_convolution.pyx":72 * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) * for y in prange(IMAGE_H, nogil=True): * for x in range(IMAGE_W): # <<<<<<<<<<<<<< * sum = 0.0 * err = 0.0 */ - __pyx_t_14 = __pyx_v_IMAGE_W; - for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { - __pyx_v_x = __pyx_t_15; + __pyx_t_11 = __pyx_v_IMAGE_W; + for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { + __pyx_v_x = __pyx_t_12; - /* "pyFAI/ext/_convolution.pyx":71 + /* "pyFAI/ext/_convolution.pyx":73 * for y in prange(IMAGE_H, nogil=True): * for x in range(IMAGE_W): * sum = 0.0 # <<<<<<<<<<<<<< @@ -2124,7 +2101,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_sum = 0.0; - /* "pyFAI/ext/_convolution.pyx":72 + /* "pyFAI/ext/_convolution.pyx":74 * for x in range(IMAGE_W): * sum = 0.0 * err = 0.0 # <<<<<<<<<<<<<< @@ -2133,18 +2110,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_err = 0.0; - /* "pyFAI/ext/_convolution.pyx":73 + /* "pyFAI/ext/_convolution.pyx":75 * sum = 0.0 * err = 0.0 * for fIndex in range(FILTER_SIZE): # <<<<<<<<<<<<<< * newpos = x + fIndex - HALF_FILTER_SIZE * if newpos < 0: */ - __pyx_t_16 = __pyx_v_FILTER_SIZE; - for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { - __pyx_v_fIndex = __pyx_t_17; + __pyx_t_13 = __pyx_v_FILTER_SIZE; + for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { + __pyx_v_fIndex = __pyx_t_14; - /* "pyFAI/ext/_convolution.pyx":74 + /* "pyFAI/ext/_convolution.pyx":76 * err = 0.0 * for fIndex in range(FILTER_SIZE): * newpos = x + fIndex - HALF_FILTER_SIZE # <<<<<<<<<<<<<< @@ -2153,7 +2130,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_newpos = ((__pyx_v_x + __pyx_v_fIndex) - __pyx_v_HALF_FILTER_SIZE); - /* "pyFAI/ext/_convolution.pyx":75 + /* "pyFAI/ext/_convolution.pyx":77 * for fIndex in range(FILTER_SIZE): * newpos = x + fIndex - HALF_FILTER_SIZE * if newpos < 0: # <<<<<<<<<<<<<< @@ -2163,7 +2140,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH __pyx_t_1 = ((__pyx_v_newpos < 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_convolution.pyx":76 + /* "pyFAI/ext/_convolution.pyx":78 * newpos = x + fIndex - HALF_FILTER_SIZE * if newpos < 0: * newpos = - newpos - 1 # <<<<<<<<<<<<<< @@ -2174,7 +2151,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH goto __pyx_L15; } - /* "pyFAI/ext/_convolution.pyx":77 + /* "pyFAI/ext/_convolution.pyx":79 * if newpos < 0: * newpos = - newpos - 1 * elif newpos >= IMAGE_W: # <<<<<<<<<<<<<< @@ -2184,7 +2161,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH __pyx_t_1 = ((__pyx_v_newpos >= __pyx_v_IMAGE_W) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_convolution.pyx":78 + /* "pyFAI/ext/_convolution.pyx":80 * newpos = - newpos - 1 * elif newpos >= IMAGE_W: * newpos = 2 * IMAGE_W - newpos - 1 # <<<<<<<<<<<<<< @@ -2196,19 +2173,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH } __pyx_L15:; - /* "pyFAI/ext/_convolution.pyx":81 + /* "pyFAI/ext/_convolution.pyx":83 * # sum += img[y,newpos] * filter[fIndex] * # implement Kahan summation * val = img[y, newpos] * filter[fIndex] - err # <<<<<<<<<<<<<< * tmp = sum + val * err = (tmp - sum) - val */ - __pyx_t_18 = __pyx_v_y; - __pyx_t_19 = __pyx_v_newpos; - __pyx_t_20 = __pyx_v_fIndex; - __pyx_v_val = (((*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img.data + __pyx_t_18 * __pyx_v_img.strides[0]) ) + __pyx_t_19 * __pyx_v_img.strides[1]) ))) * (*((float *) ( /* dim=0 */ (__pyx_v_filter.data + __pyx_t_20 * __pyx_v_filter.strides[0]) )))) - __pyx_v_err); + __pyx_t_15 = __pyx_v_y; + __pyx_t_16 = __pyx_v_newpos; + __pyx_t_17 = __pyx_v_fIndex; + __pyx_v_val = (((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_img.data + __pyx_t_15 * __pyx_v_img.strides[0]) )) + __pyx_t_16)) ))) * (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_filter.data) + __pyx_t_17)) )))) - __pyx_v_err); - /* "pyFAI/ext/_convolution.pyx":82 + /* "pyFAI/ext/_convolution.pyx":84 * # implement Kahan summation * val = img[y, newpos] * filter[fIndex] - err * tmp = sum + val # <<<<<<<<<<<<<< @@ -2217,7 +2194,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_tmp = (__pyx_v_sum + __pyx_v_val); - /* "pyFAI/ext/_convolution.pyx":83 + /* "pyFAI/ext/_convolution.pyx":85 * val = img[y, newpos] * filter[fIndex] - err * tmp = sum + val * err = (tmp - sum) - val # <<<<<<<<<<<<<< @@ -2226,26 +2203,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH */ __pyx_v_err = ((__pyx_v_tmp - __pyx_v_sum) - __pyx_v_val); - /* "pyFAI/ext/_convolution.pyx":84 + /* "pyFAI/ext/_convolution.pyx":86 * tmp = sum + val * err = (tmp - sum) - val * sum = tmp # <<<<<<<<<<<<<< * output[y, x] += sum - * return output + * return numpy.asarray(output) */ __pyx_v_sum = __pyx_v_tmp; } - /* "pyFAI/ext/_convolution.pyx":85 + /* "pyFAI/ext/_convolution.pyx":87 * err = (tmp - sum) - val * sum = tmp * output[y, x] += sum # <<<<<<<<<<<<<< - * return output + * return numpy.asarray(output) * */ - __pyx_t_16 = __pyx_v_y; - __pyx_t_17 = __pyx_v_x; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_output.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_output.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_output.diminfo[1].strides) += __pyx_v_sum; + __pyx_t_13 = __pyx_v_y; + __pyx_t_14 = __pyx_v_x; + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_output.data + __pyx_t_13 * __pyx_v_output.strides[0]) )) + __pyx_t_14)) )) += __pyx_v_sum; } } } @@ -2260,7 +2237,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH #endif } - /* "pyFAI/ext/_convolution.pyx":69 + /* "pyFAI/ext/_convolution.pyx":71 * IMAGE_W = img.shape[1] * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) * for y in prange(IMAGE_H, nogil=True): # <<<<<<<<<<<<<< @@ -2278,22 +2255,55 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH } } - /* "pyFAI/ext/_convolution.pyx":86 + /* "pyFAI/ext/_convolution.pyx":88 * sum = tmp * output[y, x] += sum - * return output # <<<<<<<<<<<<<< + * return numpy.asarray(output) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_output)); - __pyx_r = ((PyObject *)__pyx_v_output); + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_output, 2, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_3) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; goto __pyx_L0; - /* "pyFAI/ext/_convolution.pyx":44 - * @cython.boundscheck(False) + /* "pyFAI/ext/_convolution.pyx":46 * @cython.wraparound(False) - * def horizontal_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def horizontal_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D horizontal convolution with a filter. */ @@ -2305,17 +2315,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_output.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __Pyx_AddTraceback("pyFAI.ext._convolution.horizontal_convolution", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_output.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_output); + __PYX_XDEC_MEMVIEW(&__pyx_v_output, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_img, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_filter, 1); __Pyx_XGIVEREF(__pyx_r); @@ -2323,17 +2327,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution(CYTH return __pyx_r; } -/* "pyFAI/ext/_convolution.pyx":92 - * @cython.boundscheck(False) +/* "pyFAI/ext/_convolution.pyx":95 * @cython.wraparound(False) - * def vertical_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def vertical_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D vertical convolution with a filter. */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_3vertical_convolution(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12_convolution_2vertical_convolution[] = "\n Implements a 1D vertical convolution with a filter.\n The only implemented mode is \"reflect\" (default in scipy.ndimage.filter)\n\n @param img: input image\n @param filter: 1D array with the coefficients of the array\n @return: array of the same shape as image with\n "; +static char __pyx_doc_5pyFAI_3ext_12_convolution_2vertical_convolution[] = "vertical_convolution(__Pyx_memviewslice img, __Pyx_memviewslice filter)\n\n Implements a 1D vertical convolution with a filter.\n The only implemented mode is \"reflect\" (default in scipy.ndimage.filter)\n\n :param img: input image\n :param filter: 1D array with the coefficients of the array\n :return: array of the same shape as image with\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12_convolution_3vertical_convolution = {"vertical_convolution", (PyCFunction)__pyx_pw_5pyFAI_3ext_12_convolution_3vertical_convolution, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12_convolution_2vertical_convolution}; static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_3vertical_convolution(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_img = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -2364,11 +2368,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_3vertical_convolution(PyObj case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filter)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("vertical_convolution", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("vertical_convolution", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vertical_convolution") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vertical_convolution") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -2376,12 +2380,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_3vertical_convolution(PyObj values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_img = __Pyx_PyObject_to_MemoryviewSlice_dsds_float(values[0]); if (unlikely(!__pyx_v_img.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_filter = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[1]); if (unlikely(!__pyx_v_filter.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_img = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[0]); if (unlikely(!__pyx_v_img.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_filter = __Pyx_PyObject_to_MemoryviewSlice_dc_float(values[1]); if (unlikely(!__pyx_v_filter.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("vertical_convolution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("vertical_convolution", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._convolution.vertical_convolution", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2407,9 +2411,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO float __pyx_v_err; float __pyx_v_val; float __pyx_v_tmp; - PyArrayObject *__pyx_v_output = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_output; - __Pyx_Buffer __pyx_pybuffer_output; + __Pyx_memviewslice __pyx_v_output = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -2418,31 +2420,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; - PyArrayObject *__pyx_t_7 = NULL; + __Pyx_memviewslice __pyx_t_7 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; + int __pyx_t_9; + int __pyx_t_10; + int __pyx_t_11; int __pyx_t_12; int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; - int __pyx_t_18; - int __pyx_t_19; - int __pyx_t_20; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("vertical_convolution", 0); - __pyx_pybuffer_output.pybuffer.buf = NULL; - __pyx_pybuffer_output.refcount = 0; - __pyx_pybuffernd_output.data = NULL; - __pyx_pybuffernd_output.rcbuffer = &__pyx_pybuffer_output; - /* "pyFAI/ext/_convolution.pyx":108 - * numpy.ndarray[numpy.float32_t, ndim=2] output + /* "pyFAI/ext/_convolution.pyx":111 + * float[:, ::1] output * * FILTER_SIZE = filter.shape[0] # <<<<<<<<<<<<<< * if FILTER_SIZE % 2 == 1: @@ -2450,7 +2445,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_FILTER_SIZE = (__pyx_v_filter.shape[0]); - /* "pyFAI/ext/_convolution.pyx":109 + /* "pyFAI/ext/_convolution.pyx":112 * * FILTER_SIZE = filter.shape[0] * if FILTER_SIZE % 2 == 1: # <<<<<<<<<<<<<< @@ -2460,7 +2455,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO __pyx_t_1 = (((__pyx_v_FILTER_SIZE % 2) == 1) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_convolution.pyx":110 + /* "pyFAI/ext/_convolution.pyx":113 * FILTER_SIZE = filter.shape[0] * if FILTER_SIZE % 2 == 1: * HALF_FILTER_SIZE = (FILTER_SIZE) // 2 # <<<<<<<<<<<<<< @@ -2472,7 +2467,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO } /*else*/ { - /* "pyFAI/ext/_convolution.pyx":112 + /* "pyFAI/ext/_convolution.pyx":115 * HALF_FILTER_SIZE = (FILTER_SIZE) // 2 * else: * HALF_FILTER_SIZE = (FILTER_SIZE + 1) // 2 # <<<<<<<<<<<<<< @@ -2483,7 +2478,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO } __pyx_L3:; - /* "pyFAI/ext/_convolution.pyx":114 + /* "pyFAI/ext/_convolution.pyx":117 * HALF_FILTER_SIZE = (FILTER_SIZE + 1) // 2 * * IMAGE_H = img.shape[0] # <<<<<<<<<<<<<< @@ -2492,7 +2487,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_IMAGE_H = (__pyx_v_img.shape[0]); - /* "pyFAI/ext/_convolution.pyx":115 + /* "pyFAI/ext/_convolution.pyx":118 * * IMAGE_H = img.shape[0] * IMAGE_W = img.shape[1] # <<<<<<<<<<<<<< @@ -2501,23 +2496,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_IMAGE_W = (__pyx_v_img.shape[1]); - /* "pyFAI/ext/_convolution.pyx":116 + /* "pyFAI/ext/_convolution.pyx":119 * IMAGE_H = img.shape[0] * IMAGE_W = img.shape[1] * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) # <<<<<<<<<<<<<< * for y in prange(IMAGE_H, nogil=True): * for x in range(IMAGE_W): */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_H); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_H); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_W); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_IMAGE_W); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -2525,48 +2520,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO __Pyx_GIVEREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_output.rcbuffer->pybuffer); - __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_output.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); - if (unlikely(__pyx_t_8 < 0)) { - PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_output.rcbuffer->pybuffer, (PyObject*)__pyx_v_output, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); - __Pyx_RaiseBufferFallbackError(); - } else { - PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); - } - } - __pyx_pybuffernd_output.diminfo[0].strides = __pyx_pybuffernd_output.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_output.diminfo[0].shape = __pyx_pybuffernd_output.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_output.diminfo[1].strides = __pyx_pybuffernd_output.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_output.diminfo[1].shape = __pyx_pybuffernd_output.rcbuffer->pybuffer.shape[1]; - if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_7 = 0; - __pyx_v_output = ((PyArrayObject *)__pyx_t_6); - __pyx_t_6 = 0; + __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_6); + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_v_output = __pyx_t_7; + __pyx_t_7.memview = NULL; + __pyx_t_7.data = NULL; - /* "pyFAI/ext/_convolution.pyx":117 + /* "pyFAI/ext/_convolution.pyx":120 * IMAGE_W = img.shape[1] * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) * for y in prange(IMAGE_H, nogil=True): # <<<<<<<<<<<<<< @@ -2588,40 +2568,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO #define likely(x) (x) #define unlikely(x) (x) #endif - __pyx_t_13 = (__pyx_t_8 - 0) / 1; - if (__pyx_t_13 > 0) + __pyx_t_10 = (__pyx_t_8 - 0) / 1; + if (__pyx_t_10 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_15, __pyx_t_17, __pyx_t_16, __pyx_t_1, __pyx_t_18, __pyx_t_14, __pyx_t_20) + #pragma omp parallel private(__pyx_t_17, __pyx_t_11, __pyx_t_16, __pyx_t_14, __pyx_t_15, __pyx_t_13, __pyx_t_12, __pyx_t_1) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_sum) lastprivate(__pyx_v_newpos) lastprivate(__pyx_v_err) lastprivate(__pyx_v_fIndex) lastprivate(__pyx_v_val) lastprivate(__pyx_v_x) firstprivate(__pyx_v_y) lastprivate(__pyx_v_y) lastprivate(__pyx_v_tmp) + #pragma omp for lastprivate(__pyx_v_fIndex) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_err) firstprivate(__pyx_v_y) lastprivate(__pyx_v_y) lastprivate(__pyx_v_val) lastprivate(__pyx_v_newpos) lastprivate(__pyx_v_x) lastprivate(__pyx_v_tmp) #endif /* _OPENMP */ - for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_13; __pyx_t_12++){ + for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_10; __pyx_t_9++){ { - __pyx_v_y = 0 + 1 * __pyx_t_12; + __pyx_v_y = 0 + 1 * __pyx_t_9; /* Initialize private variables to invalid values */ + __pyx_v_fIndex = ((int)0xbad0bad0); __pyx_v_sum = ((float)__PYX_NAN()); - __pyx_v_newpos = ((int)0xbad0bad0); __pyx_v_err = ((float)__PYX_NAN()); - __pyx_v_fIndex = ((int)0xbad0bad0); __pyx_v_val = ((float)__PYX_NAN()); + __pyx_v_newpos = ((int)0xbad0bad0); __pyx_v_x = ((int)0xbad0bad0); __pyx_v_tmp = ((float)__PYX_NAN()); - /* "pyFAI/ext/_convolution.pyx":118 + /* "pyFAI/ext/_convolution.pyx":121 * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) * for y in prange(IMAGE_H, nogil=True): * for x in range(IMAGE_W): # <<<<<<<<<<<<<< * sum = 0.0 * err = 0.0 */ - __pyx_t_14 = __pyx_v_IMAGE_W; - for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { - __pyx_v_x = __pyx_t_15; + __pyx_t_11 = __pyx_v_IMAGE_W; + for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { + __pyx_v_x = __pyx_t_12; - /* "pyFAI/ext/_convolution.pyx":119 + /* "pyFAI/ext/_convolution.pyx":122 * for y in prange(IMAGE_H, nogil=True): * for x in range(IMAGE_W): * sum = 0.0 # <<<<<<<<<<<<<< @@ -2630,7 +2610,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_sum = 0.0; - /* "pyFAI/ext/_convolution.pyx":120 + /* "pyFAI/ext/_convolution.pyx":123 * for x in range(IMAGE_W): * sum = 0.0 * err = 0.0 # <<<<<<<<<<<<<< @@ -2639,18 +2619,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_err = 0.0; - /* "pyFAI/ext/_convolution.pyx":121 + /* "pyFAI/ext/_convolution.pyx":124 * sum = 0.0 * err = 0.0 * for fIndex in range(FILTER_SIZE): # <<<<<<<<<<<<<< * newpos = y + fIndex - HALF_FILTER_SIZE * if newpos < 0: */ - __pyx_t_16 = __pyx_v_FILTER_SIZE; - for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { - __pyx_v_fIndex = __pyx_t_17; + __pyx_t_13 = __pyx_v_FILTER_SIZE; + for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { + __pyx_v_fIndex = __pyx_t_14; - /* "pyFAI/ext/_convolution.pyx":122 + /* "pyFAI/ext/_convolution.pyx":125 * err = 0.0 * for fIndex in range(FILTER_SIZE): * newpos = y + fIndex - HALF_FILTER_SIZE # <<<<<<<<<<<<<< @@ -2659,7 +2639,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_newpos = ((__pyx_v_y + __pyx_v_fIndex) - __pyx_v_HALF_FILTER_SIZE); - /* "pyFAI/ext/_convolution.pyx":123 + /* "pyFAI/ext/_convolution.pyx":126 * for fIndex in range(FILTER_SIZE): * newpos = y + fIndex - HALF_FILTER_SIZE * if newpos < 0: # <<<<<<<<<<<<<< @@ -2669,7 +2649,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO __pyx_t_1 = ((__pyx_v_newpos < 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_convolution.pyx":124 + /* "pyFAI/ext/_convolution.pyx":127 * newpos = y + fIndex - HALF_FILTER_SIZE * if newpos < 0: * newpos = - newpos - 1 # <<<<<<<<<<<<<< @@ -2680,7 +2660,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO goto __pyx_L15; } - /* "pyFAI/ext/_convolution.pyx":125 + /* "pyFAI/ext/_convolution.pyx":128 * if newpos < 0: * newpos = - newpos - 1 * elif newpos >= IMAGE_H: # <<<<<<<<<<<<<< @@ -2690,7 +2670,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO __pyx_t_1 = ((__pyx_v_newpos >= __pyx_v_IMAGE_H) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_convolution.pyx":126 + /* "pyFAI/ext/_convolution.pyx":129 * newpos = - newpos - 1 * elif newpos >= IMAGE_H: * newpos = 2 * IMAGE_H - newpos - 1 # <<<<<<<<<<<<<< @@ -2702,19 +2682,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO } __pyx_L15:; - /* "pyFAI/ext/_convolution.pyx":129 + /* "pyFAI/ext/_convolution.pyx":132 * # sum += img[y,newpos] * filter[fIndex] * # implement Kahan summation * val = img[newpos, x] * filter[fIndex] - err # <<<<<<<<<<<<<< * tmp = sum + val * err = (tmp - sum) - val */ - __pyx_t_18 = __pyx_v_newpos; - __pyx_t_19 = __pyx_v_x; - __pyx_t_20 = __pyx_v_fIndex; - __pyx_v_val = (((*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img.data + __pyx_t_18 * __pyx_v_img.strides[0]) ) + __pyx_t_19 * __pyx_v_img.strides[1]) ))) * (*((float *) ( /* dim=0 */ (__pyx_v_filter.data + __pyx_t_20 * __pyx_v_filter.strides[0]) )))) - __pyx_v_err); + __pyx_t_15 = __pyx_v_newpos; + __pyx_t_16 = __pyx_v_x; + __pyx_t_17 = __pyx_v_fIndex; + __pyx_v_val = (((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_img.data + __pyx_t_15 * __pyx_v_img.strides[0]) )) + __pyx_t_16)) ))) * (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_filter.data) + __pyx_t_17)) )))) - __pyx_v_err); - /* "pyFAI/ext/_convolution.pyx":130 + /* "pyFAI/ext/_convolution.pyx":133 * # implement Kahan summation * val = img[newpos, x] * filter[fIndex] - err * tmp = sum + val # <<<<<<<<<<<<<< @@ -2723,7 +2703,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_tmp = (__pyx_v_sum + __pyx_v_val); - /* "pyFAI/ext/_convolution.pyx":131 + /* "pyFAI/ext/_convolution.pyx":134 * val = img[newpos, x] * filter[fIndex] - err * tmp = sum + val * err = (tmp - sum) - val # <<<<<<<<<<<<<< @@ -2732,26 +2712,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO */ __pyx_v_err = ((__pyx_v_tmp - __pyx_v_sum) - __pyx_v_val); - /* "pyFAI/ext/_convolution.pyx":132 + /* "pyFAI/ext/_convolution.pyx":135 * tmp = sum + val * err = (tmp - sum) - val * sum = tmp # <<<<<<<<<<<<<< * output[y, x] += sum - * return output + * return numpy.asarray(output) */ __pyx_v_sum = __pyx_v_tmp; } - /* "pyFAI/ext/_convolution.pyx":133 + /* "pyFAI/ext/_convolution.pyx":136 * err = (tmp - sum) - val * sum = tmp * output[y, x] += sum # <<<<<<<<<<<<<< - * return output + * return numpy.asarray(output) * */ - __pyx_t_16 = __pyx_v_y; - __pyx_t_17 = __pyx_v_x; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_output.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_output.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_output.diminfo[1].strides) += __pyx_v_sum; + __pyx_t_13 = __pyx_v_y; + __pyx_t_14 = __pyx_v_x; + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_output.data + __pyx_t_13 * __pyx_v_output.strides[0]) )) + __pyx_t_14)) )) += __pyx_v_sum; } } } @@ -2766,7 +2746,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO #endif } - /* "pyFAI/ext/_convolution.pyx":117 + /* "pyFAI/ext/_convolution.pyx":120 * IMAGE_W = img.shape[1] * output = numpy.zeros((IMAGE_H, IMAGE_W), dtype=numpy.float32) * for y in prange(IMAGE_H, nogil=True): # <<<<<<<<<<<<<< @@ -2784,22 +2764,55 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO } } - /* "pyFAI/ext/_convolution.pyx":134 + /* "pyFAI/ext/_convolution.pyx":137 * sum = tmp * output[y, x] += sum - * return output # <<<<<<<<<<<<<< + * return numpy.asarray(output) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_output)); - __pyx_r = ((PyObject *)__pyx_v_output); + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_output, 2, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_3) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; goto __pyx_L0; - /* "pyFAI/ext/_convolution.pyx":92 - * @cython.boundscheck(False) + /* "pyFAI/ext/_convolution.pyx":95 * @cython.wraparound(False) - * def vertical_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def vertical_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D vertical convolution with a filter. */ @@ -2811,17 +2824,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_output.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __Pyx_AddTraceback("pyFAI.ext._convolution.vertical_convolution", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_output.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_output); + __PYX_XDEC_MEMVIEW(&__pyx_v_output, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_img, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_filter, 1); __Pyx_XGIVEREF(__pyx_r); @@ -2829,9 +2836,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO return __pyx_r; } -/* "pyFAI/ext/_convolution.pyx":137 - * +/* "pyFAI/ext/_convolution.pyx":141 * + * @cython.embedsignature(True) * def gaussian(sigma, width=None): # <<<<<<<<<<<<<< * """ * Return a Gaussian window of length "width" with standard-deviation "sigma". @@ -2839,7 +2846,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution(CYTHO /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_5gaussian(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12_convolution_4gaussian[] = "\n Return a Gaussian window of length \"width\" with standard-deviation \"sigma\".\n\n @param sigma: standard deviation sigma\n @param width: length of the windows (int) By default 8*sigma+1,\n\n Width should be odd.\n\n The FWHM is 2*sqrt(2 * pi)*sigma\n\n "; +static char __pyx_doc_5pyFAI_3ext_12_convolution_4gaussian[] = "gaussian(sigma, width=None)\n\n Return a Gaussian window of length \"width\" with standard-deviation \"sigma\".\n\n :param sigma: standard deviation sigma\n :param width: length of the windows (int) By default 8*sigma+1,\n\n Width should be odd.\n\n The FWHM is 2*sqrt(2 * pi)*sigma\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12_convolution_5gaussian = {"gaussian", (PyCFunction)__pyx_pw_5pyFAI_3ext_12_convolution_5gaussian, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12_convolution_4gaussian}; static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_5gaussian(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_sigma = 0; @@ -2875,7 +2882,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_5gaussian(PyObject *__pyx_s } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gaussian") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gaussian") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2890,7 +2897,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_5gaussian(PyObject *__pyx_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("gaussian", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("gaussian", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._convolution.gaussian", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2923,7 +2930,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO __Pyx_INCREF(__pyx_v_sigma); __Pyx_INCREF(__pyx_v_width); - /* "pyFAI/ext/_convolution.pyx":149 + /* "pyFAI/ext/_convolution.pyx":153 * * """ * if width is None: # <<<<<<<<<<<<<< @@ -2934,47 +2941,47 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "pyFAI/ext/_convolution.pyx":150 + /* "pyFAI/ext/_convolution.pyx":154 * """ * if width is None: * width = int(8 * sigma + 1) # <<<<<<<<<<<<<< * if width % 2 == 0: * width += 1 */ - __pyx_t_3 = PyNumber_Multiply(__pyx_int_8, __pyx_v_sigma); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Multiply(__pyx_int_8, __pyx_v_sigma); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_width, __pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/_convolution.pyx":151 + /* "pyFAI/ext/_convolution.pyx":155 * if width is None: * width = int(8 * sigma + 1) * if width % 2 == 0: # <<<<<<<<<<<<<< * width += 1 * sigma = float(sigma) */ - __pyx_t_3 = PyNumber_Remainder(__pyx_v_width, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Remainder(__pyx_v_width, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_2) { - /* "pyFAI/ext/_convolution.pyx":152 + /* "pyFAI/ext/_convolution.pyx":156 * width = int(8 * sigma + 1) * if width % 2 == 0: * width += 1 # <<<<<<<<<<<<<< * sigma = float(sigma) * x = numpy.arange(width) - (width - 1) / 2.0 */ - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_width, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_width, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_width, __pyx_t_4); __pyx_t_4 = 0; @@ -2985,29 +2992,29 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO } __pyx_L3:; - /* "pyFAI/ext/_convolution.pyx":153 + /* "pyFAI/ext/_convolution.pyx":157 * if width % 2 == 0: * width += 1 * sigma = float(sigma) # <<<<<<<<<<<<<< * x = numpy.arange(width) - (width - 1) / 2.0 * g = numpy.exp(-(x / sigma) ** 2 / 2.0) */ - __pyx_t_5 = __Pyx_PyObject_AsDouble(__pyx_v_sigma); if (unlikely(__pyx_t_5 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_4 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_AsDouble(__pyx_v_sigma); if (unlikely(__pyx_t_5 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_sigma, __pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/_convolution.pyx":154 + /* "pyFAI/ext/_convolution.pyx":158 * width += 1 * sigma = float(sigma) * x = numpy.arange(width) - (width - 1) / 2.0 # <<<<<<<<<<<<<< * g = numpy.exp(-(x / sigma) ** 2 / 2.0) * # Normalization is done at the end to cope for numerical precision */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_arange); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_arange); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -3021,53 +3028,53 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO } } if (!__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_width); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_width); __Pyx_GIVEREF(__pyx_v_width); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Subtract(__pyx_v_width, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyNumber_Subtract(__pyx_v_width, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_float_2_0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_float_2_0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Subtract(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyNumber_Subtract(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_x = __pyx_t_6; __pyx_t_6 = 0; - /* "pyFAI/ext/_convolution.pyx":155 + /* "pyFAI/ext/_convolution.pyx":159 * sigma = float(sigma) * x = numpy.arange(width) - (width - 1) / 2.0 * g = numpy.exp(-(x / sigma) ** 2 / 2.0) # <<<<<<<<<<<<<< * # Normalization is done at the end to cope for numerical precision * return g / g.sum() */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exp); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exp); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_v_x, __pyx_v_sigma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_v_x, __pyx_v_sigma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_7, __pyx_float_2_0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_7, __pyx_float_2_0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; @@ -3081,17 +3088,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO } } if (!__pyx_t_7) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } @@ -3099,7 +3106,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO __pyx_v_g = __pyx_t_6; __pyx_t_6 = 0; - /* "pyFAI/ext/_convolution.pyx":157 + /* "pyFAI/ext/_convolution.pyx":161 * g = numpy.exp(-(x / sigma) ** 2 / 2.0) * # Normalization is done at the end to cope for numerical precision * return g / g.sum() # <<<<<<<<<<<<<< @@ -3107,7 +3114,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_sum); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_sum); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -3120,23 +3127,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO } } if (__pyx_t_8) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_v_g, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_v_g, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "pyFAI/ext/_convolution.pyx":137 - * + /* "pyFAI/ext/_convolution.pyx":141 * + * @cython.embedsignature(True) * def gaussian(sigma, width=None): # <<<<<<<<<<<<<< * """ * Return a Gaussian window of length "width" with standard-deviation "sigma". @@ -3161,9 +3168,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO return __pyx_r; } -/* "pyFAI/ext/_convolution.pyx":160 - * +/* "pyFAI/ext/_convolution.pyx":165 * + * @cython.embedsignature(True) * def gaussian_filter(img, sigma): # <<<<<<<<<<<<<< * """ * Performs a gaussian bluring using a gaussian kernel. @@ -3171,7 +3178,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_4gaussian(CYTHON_UNUSED PyO /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_7gaussian_filter(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12_convolution_6gaussian_filter[] = "\n Performs a gaussian bluring using a gaussian kernel.\n\n @param img: input image\n @param sigma:\n "; +static char __pyx_doc_5pyFAI_3ext_12_convolution_6gaussian_filter[] = "gaussian_filter(img, sigma)\n\n Performs a gaussian bluring using a gaussian kernel.\n\n :param img: input image\n :param sigma: width parameter of the gaussian\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12_convolution_7gaussian_filter = {"gaussian_filter", (PyCFunction)__pyx_pw_5pyFAI_3ext_12_convolution_7gaussian_filter, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12_convolution_6gaussian_filter}; static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_7gaussian_filter(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_img = 0; @@ -3202,11 +3209,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_7gaussian_filter(PyObject * case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sigma)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("gaussian_filter", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("gaussian_filter", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gaussian_filter") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gaussian_filter") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -3219,7 +3226,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_12_convolution_7gaussian_filter(PyObject * } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("gaussian_filter", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("gaussian_filter", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._convolution.gaussian_filter", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3250,33 +3257,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU int __pyx_clineno = 0; __Pyx_RefNannySetupContext("gaussian_filter", 0); - /* "pyFAI/ext/_convolution.pyx":167 - * @param sigma: + /* "pyFAI/ext/_convolution.pyx":172 + * :param sigma: width parameter of the gaussian * """ * raw = numpy.ascontiguousarray(img, dtype=numpy.float32) # <<<<<<<<<<<<<< * gauss = gaussian(sigma).astype(numpy.float32) * res = vertical_convolution(horizontal_convolution(raw, gauss), gauss) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_img); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_img); __Pyx_GIVEREF(__pyx_v_img); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -3284,14 +3291,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU __pyx_v_raw = __pyx_t_5; __pyx_t_5 = 0; - /* "pyFAI/ext/_convolution.pyx":168 + /* "pyFAI/ext/_convolution.pyx":173 * """ * raw = numpy.ascontiguousarray(img, dtype=numpy.float32) * gauss = gaussian(sigma).astype(numpy.float32) # <<<<<<<<<<<<<< * res = vertical_convolution(horizontal_convolution(raw, gauss), gauss) * return res */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaussian); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaussian); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) { @@ -3304,26 +3311,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU } } if (!__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_sigma); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_sigma); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(__pyx_v_sigma); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_sigma); __Pyx_GIVEREF(__pyx_v_sigma); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -3337,17 +3344,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU } } if (!__pyx_t_3) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } @@ -3355,15 +3362,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU __pyx_v_gauss = __pyx_t_5; __pyx_t_5 = 0; - /* "pyFAI/ext/_convolution.pyx":169 + /* "pyFAI/ext/_convolution.pyx":174 * raw = numpy.ascontiguousarray(img, dtype=numpy.float32) * gauss = gaussian(sigma).astype(numpy.float32) * res = vertical_convolution(horizontal_convolution(raw, gauss), gauss) # <<<<<<<<<<<<<< * return res */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertical_convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_vertical_convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_horizontal_convolution); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_horizontal_convolution); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; @@ -3377,7 +3384,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU __pyx_t_6 = 1; } } - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_3) { PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; @@ -3388,7 +3395,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU __Pyx_INCREF(__pyx_v_gauss); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_gauss); __Pyx_GIVEREF(__pyx_v_gauss); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -3404,7 +3411,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU __pyx_t_6 = 1; } } - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; @@ -3415,14 +3422,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_gauss); __Pyx_GIVEREF(__pyx_v_gauss); __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_res = __pyx_t_5; __pyx_t_5 = 0; - /* "pyFAI/ext/_convolution.pyx":170 + /* "pyFAI/ext/_convolution.pyx":175 * gauss = gaussian(sigma).astype(numpy.float32) * res = vertical_convolution(horizontal_convolution(raw, gauss), gauss) * return res # <<<<<<<<<<<<<< @@ -3432,9 +3439,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "pyFAI/ext/_convolution.pyx":160 - * + /* "pyFAI/ext/_convolution.pyx":165 * + * @cython.embedsignature(True) * def gaussian_filter(img, sigma): # <<<<<<<<<<<<<< * """ * Performs a gaussian bluring using a gaussian kernel. @@ -3459,7 +3466,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12_convolution_6gaussian_filter(CYTHON_UNU return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3509,7 +3516,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -3522,7 +3529,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -3531,7 +3538,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -3540,7 +3547,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -3549,7 +3556,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3559,7 +3566,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -3571,7 +3578,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -3582,7 +3589,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3596,7 +3603,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3608,7 +3615,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -3622,7 +3629,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3636,7 +3643,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3648,7 +3655,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -3662,7 +3669,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -3671,7 +3678,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -3680,7 +3687,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -3690,7 +3697,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -3699,7 +3706,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -3708,7 +3715,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -3719,7 +3726,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -3728,7 +3735,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -3741,7 +3748,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -3750,7 +3757,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -3761,7 +3768,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -3770,7 +3777,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -3779,7 +3786,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -3788,7 +3795,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -3797,7 +3804,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -3809,7 +3816,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -3818,7 +3825,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -3836,7 +3843,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -3852,7 +3859,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -3867,7 +3874,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -3877,7 +3884,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -3887,7 +3894,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -3907,7 +3914,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -3925,7 +3932,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -3939,7 +3946,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -3948,7 +3955,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -3959,7 +3966,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -3970,7 +3977,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -3981,7 +3988,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -3992,7 +3999,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -4003,7 +4010,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -4014,7 +4021,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -4025,7 +4032,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -4036,7 +4043,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -4047,7 +4054,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -4058,7 +4065,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -4069,7 +4076,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -4080,7 +4087,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -4091,7 +4098,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -4102,7 +4109,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -4113,7 +4120,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -4124,7 +4131,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -4136,7 +4143,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -4162,7 +4169,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -4171,7 +4178,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -4183,7 +4190,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -4192,7 +4199,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -4201,7 +4208,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -4210,7 +4217,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -4220,7 +4227,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -4230,7 +4237,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -4262,7 +4269,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4286,7 +4293,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -4296,7 +4303,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -4308,7 +4315,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -4318,7 +4325,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -4330,7 +4337,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4342,7 +4349,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4359,7 +4366,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -4373,7 +4380,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4392,7 +4399,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4409,7 +4416,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -4423,7 +4430,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4442,7 +4449,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4459,7 +4466,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -4473,7 +4480,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4492,7 +4499,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4509,7 +4516,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -4523,7 +4530,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4542,7 +4549,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4559,7 +4566,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -4573,7 +4580,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4592,7 +4599,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -4624,7 +4631,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -4633,7 +4640,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -4642,7 +4649,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -4664,7 +4671,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -4677,7 +4684,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -4716,7 +4723,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -4733,7 +4740,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -4747,7 +4754,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -4767,7 +4774,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -4785,7 +4792,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -4799,7 +4806,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -4815,7 +4822,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -4824,7 +4831,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -4833,7 +4840,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -4844,7 +4851,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -4854,7 +4861,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -4864,7 +4871,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -4876,7 +4883,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -4886,7 +4893,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -4900,7 +4907,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -4918,7 +4925,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -4936,7 +4943,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -4954,7 +4961,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -4972,7 +4979,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -4990,7 +4997,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -5008,7 +5015,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -5026,7 +5033,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -5044,7 +5051,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -5062,7 +5069,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -5080,7 +5087,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -5098,7 +5105,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -5116,7 +5123,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -5134,7 +5141,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -5154,7 +5161,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -5174,7 +5181,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -5194,7 +5201,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -5213,7 +5220,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -5236,7 +5243,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -5248,7 +5255,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -5260,7 +5267,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -5270,7 +5277,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -5280,7 +5287,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -5305,7 +5312,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5320,7 +5327,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -5331,7 +5338,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -5343,7 +5350,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -5352,7 +5359,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -5363,7 +5370,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -5372,7 +5379,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -5381,7 +5388,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5393,7 +5400,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -5407,7 +5414,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -5417,7 +5424,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -5431,7 +5438,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -5442,7 +5449,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -16769,7 +16776,7 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_31_05_2016, __pyx_k_31_05_2016, sizeof(__pyx_k_31_05_2016), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_index_with_type_s, __pyx_k_Cannot_index_with_type_s, sizeof(__pyx_k_Cannot_index_with_type_s), 0, 0, 1, 0}, @@ -16801,6 +16808,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1}, {&__pyx_n_s_arange, __pyx_k_arange, sizeof(__pyx_k_arange), 0, 0, 1, 1}, + {&__pyx_n_s_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 0, 0, 1, 1}, {&__pyx_n_s_ascontiguousarray, __pyx_k_ascontiguousarray, sizeof(__pyx_k_ascontiguousarray), 0, 0, 1, 1}, {&__pyx_n_s_astype, __pyx_k_astype, sizeof(__pyx_k_astype), 0, 0, 1, 1}, {&__pyx_n_s_authors, __pyx_k_authors, sizeof(__pyx_k_authors), 0, 0, 1, 1}, @@ -16887,7 +16895,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16910,7 +16918,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -16921,7 +16929,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -16932,7 +16940,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16943,7 +16951,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -16954,7 +16962,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16965,7 +16973,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -17097,53 +17105,53 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "pyFAI/ext/_convolution.pyx":44 - * @cython.boundscheck(False) + /* "pyFAI/ext/_convolution.pyx":46 * @cython.wraparound(False) - * def horizontal_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def horizontal_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D horizontal convolution with a filter. */ - __pyx_tuple__18 = PyTuple_Pack(17, __pyx_n_s_img, __pyx_n_s_filter, __pyx_n_s_FILTER_SIZE, __pyx_n_s_HALF_FILTER_SIZE, __pyx_n_s_IMAGE_H, __pyx_n_s_IMAGE_W, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_pos, __pyx_n_s_fIndex, __pyx_n_s_newpos, __pyx_n_s_c, __pyx_n_s_sum, __pyx_n_s_err, __pyx_n_s_val, __pyx_n_s_tmp, __pyx_n_s_output); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__18 = PyTuple_Pack(17, __pyx_n_s_img, __pyx_n_s_filter, __pyx_n_s_FILTER_SIZE, __pyx_n_s_HALF_FILTER_SIZE, __pyx_n_s_IMAGE_H, __pyx_n_s_IMAGE_W, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_pos, __pyx_n_s_fIndex, __pyx_n_s_newpos, __pyx_n_s_c, __pyx_n_s_sum, __pyx_n_s_err, __pyx_n_s_val, __pyx_n_s_tmp, __pyx_n_s_output); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_horizontal_convolution, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_horizontal_convolution, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_convolution.pyx":92 - * @cython.boundscheck(False) + /* "pyFAI/ext/_convolution.pyx":95 * @cython.wraparound(False) - * def vertical_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def vertical_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D vertical convolution with a filter. */ - __pyx_tuple__20 = PyTuple_Pack(17, __pyx_n_s_img, __pyx_n_s_filter, __pyx_n_s_FILTER_SIZE, __pyx_n_s_HALF_FILTER_SIZE, __pyx_n_s_IMAGE_H, __pyx_n_s_IMAGE_W, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_pos, __pyx_n_s_fIndex, __pyx_n_s_newpos, __pyx_n_s_c, __pyx_n_s_sum, __pyx_n_s_err, __pyx_n_s_val, __pyx_n_s_tmp, __pyx_n_s_output); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__20 = PyTuple_Pack(17, __pyx_n_s_img, __pyx_n_s_filter, __pyx_n_s_FILTER_SIZE, __pyx_n_s_HALF_FILTER_SIZE, __pyx_n_s_IMAGE_H, __pyx_n_s_IMAGE_W, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_pos, __pyx_n_s_fIndex, __pyx_n_s_newpos, __pyx_n_s_c, __pyx_n_s_sum, __pyx_n_s_err, __pyx_n_s_val, __pyx_n_s_tmp, __pyx_n_s_output); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); - __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_vertical_convolution, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_vertical_convolution, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_convolution.pyx":137 - * + /* "pyFAI/ext/_convolution.pyx":141 * + * @cython.embedsignature(True) * def gaussian(sigma, width=None): # <<<<<<<<<<<<<< * """ * Return a Gaussian window of length "width" with standard-deviation "sigma". */ - __pyx_tuple__22 = PyTuple_Pack(4, __pyx_n_s_sigma, __pyx_n_s_width, __pyx_n_s_x, __pyx_n_s_g); if (unlikely(!__pyx_tuple__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__22 = PyTuple_Pack(4, __pyx_n_s_sigma, __pyx_n_s_width, __pyx_n_s_x, __pyx_n_s_g); if (unlikely(!__pyx_tuple__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); - __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_gaussian, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_gaussian, 141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_convolution.pyx":160 - * + /* "pyFAI/ext/_convolution.pyx":165 * + * @cython.embedsignature(True) * def gaussian_filter(img, sigma): # <<<<<<<<<<<<<< * """ * Performs a gaussian bluring using a gaussian kernel. */ - __pyx_tuple__24 = PyTuple_Pack(5, __pyx_n_s_img, __pyx_n_s_sigma, __pyx_n_s_raw, __pyx_n_s_gauss, __pyx_n_s_res); if (unlikely(!__pyx_tuple__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__24 = PyTuple_Pack(5, __pyx_n_s_img, __pyx_n_s_sigma, __pyx_n_s_raw, __pyx_n_s_gauss, __pyx_n_s_res); if (unlikely(!__pyx_tuple__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); - __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_gaussian_filter, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_gaussian_filter, 165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -17355,14 +17363,14 @@ PyMODINIT_FUNC PyInit__convolution(void) /*--- Function import code ---*/ /*--- Execution code ---*/ - /* "pyFAI/ext/_convolution.pyx":30 - * + /* "pyFAI/ext/_convolution.pyx":31 * """Implementation of a separable 2D convolution""" + * * __authors__ = ["Pierre Paleo", "Jerome Kieffer"] # <<<<<<<<<<<<<< * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_kp_s_Pierre_Paleo); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_Pierre_Paleo); @@ -17370,103 +17378,103 @@ PyMODINIT_FUNC PyInit__convolution(void) __Pyx_INCREF(__pyx_kp_s_Jerome_Kieffer); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_kp_s_Jerome_Kieffer); __Pyx_GIVEREF(__pyx_kp_s_Jerome_Kieffer); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_authors, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_authors, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_convolution.pyx":31 - * """Implementation of a separable 2D convolution""" + /* "pyFAI/ext/_convolution.pyx":32 + * * __authors__ = ["Pierre Paleo", "Jerome Kieffer"] * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __status__ = "stable" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_convolution.pyx":32 + /* "pyFAI/ext/_convolution.pyx":33 * __authors__ = ["Pierre Paleo", "Jerome Kieffer"] * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "31/05/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __status__ = "stable" * __license__ = "MIT" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_31_05_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_convolution.pyx":33 + /* "pyFAI/ext/_convolution.pyx":34 * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __status__ = "stable" # <<<<<<<<<<<<<< * __license__ = "MIT" * import cython */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_convolution.pyx":34 - * __date__ = "31/05/2016" + /* "pyFAI/ext/_convolution.pyx":35 + * __date__ = "01/12/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< * import cython * import numpy */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_convolution.pyx":36 + /* "pyFAI/ext/_convolution.pyx":37 * __license__ = "MIT" * import cython * import numpy # <<<<<<<<<<<<<< * cimport numpy * from cython.parallel import prange */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_convolution.pyx":44 - * @cython.boundscheck(False) + /* "pyFAI/ext/_convolution.pyx":46 * @cython.wraparound(False) - * def horizontal_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def horizontal_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D horizontal convolution with a filter. */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_1horizontal_convolution, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_1horizontal_convolution, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_horizontal_convolution, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_horizontal_convolution, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_convolution.pyx":92 - * @cython.boundscheck(False) + /* "pyFAI/ext/_convolution.pyx":95 * @cython.wraparound(False) - * def vertical_convolution(float[:, :] img, float[:] filter): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def vertical_convolution(float[:, ::1] img, float[::1] filter): # <<<<<<<<<<<<<< * """ * Implements a 1D vertical convolution with a filter. */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_3vertical_convolution, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_3vertical_convolution, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_vertical_convolution, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_vertical_convolution, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_convolution.pyx":137 - * + /* "pyFAI/ext/_convolution.pyx":141 * + * @cython.embedsignature(True) * def gaussian(sigma, width=None): # <<<<<<<<<<<<<< * """ * Return a Gaussian window of length "width" with standard-deviation "sigma". */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_5gaussian, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_5gaussian, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_gaussian, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_gaussian, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_convolution.pyx":160 - * + /* "pyFAI/ext/_convolution.pyx":165 * + * @cython.embedsignature(True) * def gaussian_filter(img, sigma): # <<<<<<<<<<<<<< * """ * Performs a gaussian bluring using a gaussian kernel. */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_7gaussian_filter, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_12_convolution_7gaussian_filter, NULL, __pyx_n_s_pyFAI_ext__convolution); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_gaussian_filter, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_gaussian_filter, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyFAI/ext/_convolution.pyx":1 @@ -17823,17 +17831,54 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg } #endif -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); } - if (likely(PyObject_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; + return result; +} +#endif + +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { +#else + if (likely(PyCFunction_Check(func))) { +#endif + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); + } + } + return __Pyx__PyObject_CallOneArg(func, arg); } +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject* args = PyTuple_Pack(1, arg); + return (likely(args)) ? __Pyx_PyObject_Call(func, args, NULL) : NULL; +} +#endif static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { unsigned int n = 1; @@ -18384,42 +18429,6 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { __Pyx_ReleaseBuffer(info); } -static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_SetString(PyExc_ValueError, - "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); -} - -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_Restore(type, value, tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(type, value, tb); -#endif -} - static int __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, int ndim, @@ -18595,68 +18604,50 @@ static double __Pyx__PyObject_AsDouble(PyObject* obj) { } #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); + if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { + return __Pyx_PyObject_CallMethO(func, NULL); } } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject* args = PyTuple_Pack(1, arg); - return (likely(args)) ? __Pyx_PyObject_Call(func, args, NULL) : NULL; + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyThreadState *tstate = PyThreadState_GET(); + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); #else - if (likely(PyCFunction_Check(func))) { + PyErr_Restore(type, value, tb); #endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(type, value, tb); #endif +} #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, @@ -18830,6 +18821,18 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(PyObject_TypeCheck(obj, type))) + return 1; + PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", + Py_TYPE(obj)->tp_name, type->tp_name); + return 0; +} + static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", @@ -19737,17 +19740,17 @@ static int __Pyx_ValidateAndInit_memviewslice( return retval; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 2, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, &__Pyx_TypeInfo_float, stack, &result, obj); if (unlikely(retcode == -1)) @@ -19759,17 +19762,17 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_f return result; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 1, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 1, &__Pyx_TypeInfo_float, stack, &result, obj); if (unlikely(retcode == -1)) @@ -19923,6 +19926,17 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { return (int) -1; } +static PyObject *__pyx_memview_get_float(const char *itemp) { + return (PyObject *) PyFloat_FromDouble(*(float *) itemp); +} +static int __pyx_memview_set_float(const char *itemp, PyObject *obj) { + float value = __pyx_PyFloat_AsFloat(obj); + if ((value == (float)-1) && PyErr_Occurred()) + return 0; + *(float *) itemp = value; + return 1; +} + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { diff --git a/pyFAI/ext/_convolution.pyx b/pyFAI/ext/_convolution.pyx index e4d71c707..96dcf602f 100644 --- a/pyFAI/ext/_convolution.pyx +++ b/pyFAI/ext/_convolution.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # @@ -27,9 +27,10 @@ # THE SOFTWARE. """Implementation of a separable 2D convolution""" + __authors__ = ["Pierre Paleo", "Jerome Kieffer"] __contact__ = "Jerome.kieffer@esrf.fr" -__date__ = "31/05/2016" +__date__ = "01/12/2016" __status__ = "stable" __license__ = "MIT" import cython @@ -41,21 +42,22 @@ from cython.parallel import prange @cython.cdivision(True) @cython.boundscheck(False) @cython.wraparound(False) -def horizontal_convolution(float[:, :] img, float[:] filter): +@cython.initializedcheck(False) +def horizontal_convolution(float[:, ::1] img, float[::1] filter): """ Implements a 1D horizontal convolution with a filter. The only implemented mode is "reflect" (default in scipy.ndimage.filter) - @param img: input image - @param filter: 1D array with the coefficients of the array - @return: array of the same shape as image with + :param img: input image + :param filter: 1D array with the coefficients of the array + :return: array of the same shape as image with """ cdef: int FILTER_SIZE, HALF_FILTER_SIZE int IMAGE_H, IMAGE_W int x, y, pos, fIndex, newpos, c float sum, err, val, tmp - numpy.ndarray[numpy.float32_t, ndim = 2] output + float[:, ::1] output FILTER_SIZE = filter.shape[0] if FILTER_SIZE % 2 == 1: @@ -83,27 +85,28 @@ def horizontal_convolution(float[:, :] img, float[:] filter): err = (tmp - sum) - val sum = tmp output[y, x] += sum - return output + return numpy.asarray(output) @cython.cdivision(True) @cython.boundscheck(False) @cython.wraparound(False) -def vertical_convolution(float[:, :] img, float[:] filter): +@cython.initializedcheck(False) +def vertical_convolution(float[:, ::1] img, float[::1] filter): """ Implements a 1D vertical convolution with a filter. The only implemented mode is "reflect" (default in scipy.ndimage.filter) - @param img: input image - @param filter: 1D array with the coefficients of the array - @return: array of the same shape as image with + :param img: input image + :param filter: 1D array with the coefficients of the array + :return: array of the same shape as image with """ cdef: int FILTER_SIZE, HALF_FILTER_SIZE int IMAGE_H, IMAGE_W int x, y, pos, fIndex, newpos, c float sum, err, val, tmp - numpy.ndarray[numpy.float32_t, ndim=2] output + float[:, ::1] output FILTER_SIZE = filter.shape[0] if FILTER_SIZE % 2 == 1: @@ -131,15 +134,16 @@ def vertical_convolution(float[:, :] img, float[:] filter): err = (tmp - sum) - val sum = tmp output[y, x] += sum - return output + return numpy.asarray(output) +@cython.embedsignature(True) def gaussian(sigma, width=None): """ Return a Gaussian window of length "width" with standard-deviation "sigma". - @param sigma: standard deviation sigma - @param width: length of the windows (int) By default 8*sigma+1, + :param sigma: standard deviation sigma + :param width: length of the windows (int) By default 8*sigma+1, Width should be odd. @@ -157,14 +161,15 @@ def gaussian(sigma, width=None): return g / g.sum() +@cython.embedsignature(True) def gaussian_filter(img, sigma): """ Performs a gaussian bluring using a gaussian kernel. - @param img: input image - @param sigma: + :param img: input image + :param sigma: width parameter of the gaussian """ raw = numpy.ascontiguousarray(img, dtype=numpy.float32) gauss = gaussian(sigma).astype(numpy.float32) res = vertical_convolution(horizontal_convolution(raw, gauss), gauss) - return res \ No newline at end of file + return res diff --git a/pyFAI/ext/_distortion.c b/pyFAI/ext/_distortion.c index 6d5c1efe7..6235e6491 100644 --- a/pyFAI/ext/_distortion.c +++ b/pyFAI/ext/_distortion.c @@ -1180,10 +1180,6 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int); static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); - -static void __Pyx_RaiseUnboundMemoryviewSliceNogil(const char *varname); - #define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1) #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 @@ -1211,8 +1207,6 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals #endif -static void __Pyx_RaiseBufferIndexError(int axis); - #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) : \ @@ -1343,6 +1337,8 @@ static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { #endif } +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */ static PyObject *__pyx_memoryviewslice__get__base(PyObject *__pyx_v_self); /*proto*/ @@ -2148,8 +2144,8 @@ static char __pyx_k_shape_out[] = "shape_out"; static char __pyx_k_threading[] = "threading"; static char __pyx_k_tmp_index[] = "tmp_index"; static char __pyx_k_uncorrect[] = "uncorrect"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_13_05_2016[] = "13/05/2016"; -static char __pyx_k_27_10_2016[] = "27/10/2016"; static char __pyx_k_Distortion[] = "Distortion"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; @@ -2271,10 +2267,10 @@ static char __pyx_k_number_of_elements_s_average_per[] = "number of elements: %s static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Patching_image_as_image_is_ix_i_2[] = "Patching image as image is %ix%i and spline is %ix%i"; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_13_05_2016; static PyObject *__pyx_kp_s_1_5; static PyObject *__pyx_kp_s_2011_2016_ESRF; -static PyObject *__pyx_kp_s_27_10_2016; static PyObject *__pyx_n_s_A0; static PyObject *__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D; static PyObject *__pyx_n_s_A1; @@ -2852,7 +2848,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11_distortion_calc_area(float __p /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_1calc_area(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_calc_area[] = "Calculate the area between I1 and I2 of a line with a given slope & intercept"; +static char __pyx_doc_5pyFAI_3ext_11_distortion_calc_area[] = "calc_area(float I1, float I2, float slope, float intercept) -> float\nCalculate the area between I1 and I2 of a line with a given slope & intercept"; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_1calc_area(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { float __pyx_v_I1; float __pyx_v_I2; @@ -3038,7 +3034,7 @@ static CYTHON_INLINE int __pyx_f_5pyFAI_3ext_11_distortion_clip(int __pyx_v_valu /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_3clip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_2clip[] = "Limits the value to bounds"; +static char __pyx_doc_5pyFAI_3ext_11_distortion_2clip[] = "clip(int value, int min_val, int max_val) -> int\nLimits the value to bounds"; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_3clip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_value; int __pyx_v_min_val; @@ -4584,9 +4580,9 @@ static CYTHON_INLINE void __pyx_f_5pyFAI_3ext_11_distortion_integrate(__Pyx_memv /* function exit code */ } -/* "pyFAI/ext/_distortion.pyx":249 - * @cython.boundscheck(False) - * @cython.cdivision(True) +/* "pyFAI/ext/_distortion.pyx":251 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_pos(floating[:, :, :, ::1] pixel_corners not None, # <<<<<<<<<<<<<< * float pixel1, float pixel2, shape_out=None): * """Calculate the pixel boundary position on the regular grid @@ -4594,7 +4590,7 @@ static CYTHON_INLINE void __pyx_f_5pyFAI_3ext_11_distortion_integrate(__Pyx_memv /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_5calc_pos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_4calc_pos[] = "Calculate the pixel boundary position on the regular grid\n\n @param pixel_corners: pixel corner coordinate as detector.get_pixel_corner()\n @param shape: requested output shape. If None, it is calculated\n @param pixel1, pixel2: pixel size along row and column coordinates\n @return: pos, delta1, delta2, shape_out, offset\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_4calc_pos[] = "calc_pos(signatures, args, kwargs, defaults)\nCalculate the pixel boundary position on the regular grid\n\n :param pixel_corners: pixel corner coordinate as detector.get_pixel_corner()\n :param shape: requested output shape. If None, it is calculated\n :param pixel1, pixel2: pixel size along row and column coordinates\n :return: pos, delta1, delta2, shape_out, offset\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_5calc_pos = {"calc_pos", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_5calc_pos, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_4calc_pos}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_5calc_pos(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_signatures = 0; @@ -4630,12 +4626,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_5calc_pos(PyObject *__pyx_se case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kwargs)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (kw_args > 0) { @@ -4644,7 +4640,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_5calc_pos(PyObject *__pyx_se } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_fused_cpdef") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_fused_cpdef") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -4661,7 +4657,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_5calc_pos(PyObject *__pyx_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4717,7 +4713,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_pos", 0); __Pyx_INCREF(__pyx_v_kwargs); - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(Py_None); PyList_SET_ITEM(__pyx_t_1, 0, Py_None); @@ -4727,7 +4723,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_2 = (__pyx_v_kwargs == Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_kwargs, __pyx_t_1); __pyx_t_1 = 0; @@ -4740,13 +4736,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_numpy = __pyx_t_1; __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyType_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + if (!(likely(PyType_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __pyx_v_ndarray = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; } @@ -4759,7 +4755,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_ImportError) || PyErr_ExceptionMatches(__pyx_builtin_AttributeError) || PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_7) { __Pyx_AddTraceback("pyFAI.ext._distortion.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_9); @@ -4787,14 +4783,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_v_itemsize = -1; if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = ((0 < __pyx_t_10) != 0); if (__pyx_t_3) { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_9 = PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 0); __Pyx_INCREF(__pyx_t_9); @@ -4804,16 +4800,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb } if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_3 = (__Pyx_PyDict_Contains(__pyx_n_s_pixel_corners, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = (__Pyx_PyDict_Contains(__pyx_n_s_pixel_corners, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_9 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_pixel_corners); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_9 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_pixel_corners); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_9); __pyx_v_arg = __pyx_t_9; __pyx_t_9 = 0; @@ -4822,25 +4818,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb /*else*/ { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_arguments, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_arguments, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L14:; if (0) { @@ -4855,7 +4851,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_dtype = __pyx_t_8; __pyx_t_8 = 0; @@ -4863,14 +4859,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb } __pyx_t_2 = (__pyx_memoryview_check(__pyx_v_arg) != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_arg_base = __pyx_t_8; __pyx_t_8 = 0; __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_arg_base, __pyx_v_ndarray); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_dtype = __pyx_t_8; __pyx_t_8 = 0; @@ -4892,22 +4888,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_3 = (__pyx_v_dtype != Py_None); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_itemsize = __pyx_t_10; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ord, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ord, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_11 = __Pyx_PyInt_As_char(__pyx_t_8); if (unlikely((__pyx_t_11 == (char)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_As_char(__pyx_t_8); if (unlikely((__pyx_t_11 == (char)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_kind = __pyx_t_11; __pyx_v_dtype_signed = (__pyx_v_kind == 'i'); @@ -4922,15 +4918,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_2 = __pyx_t_3; goto __pyx_L23_bool_binop_done; } - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = ((((Py_ssize_t)__pyx_t_10) == 4) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L23_bool_binop_done:; if (__pyx_t_2) { - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } __pyx_t_3 = (((sizeof(double)) == __pyx_v_itemsize) != 0); @@ -4939,15 +4935,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_2 = __pyx_t_3; goto __pyx_L26_bool_binop_done; } - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = ((((Py_ssize_t)__pyx_t_10) == 4) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L26_bool_binop_done:; if (__pyx_t_2) { - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } break; @@ -4977,7 +4973,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_2 = (__pyx_v_memslice.memview != 0); if (__pyx_t_2) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } /*else*/ { @@ -5000,7 +4996,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_2 = (__pyx_v_memslice.memview != 0); if (__pyx_t_2) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } /*else*/ { @@ -5009,22 +5005,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb goto __pyx_L32; } __pyx_L32:; - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } __pyx_L17_break:; } __pyx_L15:; - __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_candidates = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0; __pyx_t_10 = 0; if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_9 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_12), (&__pyx_t_7)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_12), (&__pyx_t_7)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = __pyx_t_9; @@ -5032,23 +5028,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb while (1) { __pyx_t_13 = __Pyx_dict_iter_next(__pyx_t_8, __pyx_t_12, &__pyx_t_10, &__pyx_t_9, NULL, NULL, __pyx_t_7); if (unlikely(__pyx_t_13 == 0)) break; - if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_9); __pyx_t_9 = 0; __pyx_v_match_found = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -5056,16 +5052,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_dest_sig); __Pyx_GIVEREF(__pyx_v_dest_sig); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_9 = __pyx_t_1; __Pyx_INCREF(__pyx_t_9); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { - __pyx_t_14 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_15 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -5073,16 +5069,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb if (likely(PyList_CheckExact(__pyx_t_9))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_9)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_9)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -5091,7 +5087,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } @@ -5107,7 +5103,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -5120,15 +5116,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(__pyx_t_17); #else - __pyx_t_16 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); - __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; - __pyx_t_18 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_19 = Py_TYPE(__pyx_t_18)->tp_iternext; @@ -5136,7 +5132,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __Pyx_GOTREF(__pyx_t_16); index = 1; __pyx_t_17 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_17)) goto __pyx_L40_unpacking_failed; __Pyx_GOTREF(__pyx_t_17); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_18), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_18), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_19 = NULL; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; goto __pyx_L41_unpacking_done; @@ -5144,7 +5140,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_19 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L41_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_src_type, __pyx_t_16); @@ -5154,8 +5150,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_2 = (__pyx_v_dst_type != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - __pyx_t_1 = PyObject_RichCompare(__pyx_v_src_type, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_v_src_type, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { __pyx_v_match_found = 1; @@ -5174,7 +5170,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_3 = (__pyx_v_match_found != 0); if (__pyx_t_3) { - __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_20 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_20 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L44; } __pyx_L44:; @@ -5183,28 +5179,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_4calc_pos(CYTHON_UNUSED PyOb __pyx_t_3 = (__pyx_v_candidates != Py_None) && (PyList_GET_SIZE(__pyx_v_candidates) != 0); __pyx_t_2 = ((!__pyx_t_3) != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_12 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = ((__pyx_t_12 > 1) != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } /*else*/ { __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_8 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), PyList_GET_ITEM(__pyx_v_candidates, 0)); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_8 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), PyList_GET_ITEM(__pyx_v_candidates, 0)); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; @@ -5248,12 +5244,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_38__defaults__(CYTHON_UNUSED int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__defaults__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_self)->__pyx_arg_shape_out); PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_self)->__pyx_arg_shape_out); __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_self)->__pyx_arg_shape_out); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -5315,12 +5311,12 @@ static PyObject *__pyx_fuse_0__pyx_pw_5pyFAI_3ext_11_distortion_23calc_pos(PyObj case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pixel1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pixel2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (kw_args > 0) { @@ -5329,7 +5325,7 @@ static PyObject *__pyx_fuse_0__pyx_pw_5pyFAI_3ext_11_distortion_23calc_pos(PyObj } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_pos") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_pos") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -5341,21 +5337,21 @@ static PyObject *__pyx_fuse_0__pyx_pw_5pyFAI_3ext_11_distortion_23calc_pos(PyObj default: goto __pyx_L5_argtuple_error; } } - __pyx_v_pixel_corners = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pixel_corners.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_pixel1 = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_pixel1 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_pixel2 = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_pixel2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pixel_corners = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pixel_corners.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pixel1 = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_pixel1 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pixel2 = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_pixel2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_shape_out = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.calc_pos", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_pixel_corners.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pixel_corners"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pixel_corners"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(__pyx_self, __pyx_v_pixel_corners, __pyx_v_pixel1, __pyx_v_pixel2, __pyx_v_shape_out); @@ -5434,7 +5430,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_0calc_pos", 0); - /* "pyFAI/ext/_distortion.pyx":261 + /* "pyFAI/ext/_distortion.pyx":263 * float[:, :, :, ::1] pos * int i, j, k, dim0, dim1, nb_corners * bint do_shape = (shape_out is None) # <<<<<<<<<<<<<< @@ -5444,23 +5440,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_1 = (__pyx_v_shape_out == Py_None); __pyx_v_do_shape = __pyx_t_1; - /* "pyFAI/ext/_distortion.pyx":262 + /* "pyFAI/ext/_distortion.pyx":264 * int i, j, k, dim0, dim1, nb_corners * bint do_shape = (shape_out is None) * float BIG = sys.maxsize # <<<<<<<<<<<<<< * float min0, min1, max0, max1, delta0, delta1 * float all_min0, all_max0, all_max1, all_min1 */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_BIG = ((float)__pyx_t_4); - /* "pyFAI/ext/_distortion.pyx":267 + /* "pyFAI/ext/_distortion.pyx":269 * float p0, p1 * * if (pixel1 == 0.0) or (pixel2 == 0): # <<<<<<<<<<<<<< @@ -5478,21 +5474,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "pyFAI/ext/_distortion.pyx":268 + /* "pyFAI/ext/_distortion.pyx":270 * * if (pixel1 == 0.0) or (pixel2 == 0): * raise RuntimeError("Pixel size cannot be null -> Zero division error") # <<<<<<<<<<<<<< * * dim0 = pixel_corners.shape[0] */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "pyFAI/ext/_distortion.pyx":270 + /* "pyFAI/ext/_distortion.pyx":272 * raise RuntimeError("Pixel size cannot be null -> Zero division error") * * dim0 = pixel_corners.shape[0] # <<<<<<<<<<<<<< @@ -5501,7 +5497,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_dim0 = (__pyx_v_pixel_corners.shape[0]); - /* "pyFAI/ext/_distortion.pyx":271 + /* "pyFAI/ext/_distortion.pyx":273 * * dim0 = pixel_corners.shape[0] * dim1 = pixel_corners.shape[1] # <<<<<<<<<<<<<< @@ -5510,7 +5506,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_dim1 = (__pyx_v_pixel_corners.shape[1]); - /* "pyFAI/ext/_distortion.pyx":272 + /* "pyFAI/ext/_distortion.pyx":274 * dim0 = pixel_corners.shape[0] * dim1 = pixel_corners.shape[1] * nb_corners = pixel_corners.shape[2] # <<<<<<<<<<<<<< @@ -5519,23 +5515,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_nb_corners = (__pyx_v_pixel_corners.shape[2]); - /* "pyFAI/ext/_distortion.pyx":273 + /* "pyFAI/ext/_distortion.pyx":275 * dim1 = pixel_corners.shape[1] * nb_corners = pixel_corners.shape[2] * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) # <<<<<<<<<<<<<< * with nogil: * delta0 = -BIG */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_dim1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_dim1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -5549,33 +5545,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __Pyx_GIVEREF(__pyx_int_2); __pyx_t_3 = 0; __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(__pyx_t_8); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_pos = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_distortion.pyx":274 + /* "pyFAI/ext/_distortion.pyx":276 * nb_corners = pixel_corners.shape[2] * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) * with nogil: # <<<<<<<<<<<<<< @@ -5589,7 +5585,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":275 + /* "pyFAI/ext/_distortion.pyx":277 * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) * with nogil: * delta0 = -BIG # <<<<<<<<<<<<<< @@ -5598,7 +5594,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_delta0 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":276 + /* "pyFAI/ext/_distortion.pyx":278 * with nogil: * delta0 = -BIG * delta1 = -BIG # <<<<<<<<<<<<<< @@ -5607,7 +5603,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_delta1 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":277 + /* "pyFAI/ext/_distortion.pyx":279 * delta0 = -BIG * delta1 = -BIG * all_min0 = BIG # <<<<<<<<<<<<<< @@ -5616,7 +5612,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_min0 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":278 + /* "pyFAI/ext/_distortion.pyx":280 * delta1 = -BIG * all_min0 = BIG * all_min0 = BIG # <<<<<<<<<<<<<< @@ -5625,7 +5621,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_min0 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":279 + /* "pyFAI/ext/_distortion.pyx":281 * all_min0 = BIG * all_min0 = BIG * all_max0 = -BIG # <<<<<<<<<<<<<< @@ -5634,7 +5630,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_max0 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":280 + /* "pyFAI/ext/_distortion.pyx":282 * all_min0 = BIG * all_max0 = -BIG * all_max1 = -BIG # <<<<<<<<<<<<<< @@ -5643,7 +5639,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_max1 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":281 + /* "pyFAI/ext/_distortion.pyx":283 * all_max0 = -BIG * all_max1 = -BIG * for i in range(dim0): # <<<<<<<<<<<<<< @@ -5654,7 +5650,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11; - /* "pyFAI/ext/_distortion.pyx":282 + /* "pyFAI/ext/_distortion.pyx":284 * all_max1 = -BIG * for i in range(dim0): * for j in range(dim1): # <<<<<<<<<<<<<< @@ -5665,7 +5661,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { __pyx_v_j = __pyx_t_13; - /* "pyFAI/ext/_distortion.pyx":283 + /* "pyFAI/ext/_distortion.pyx":285 * for i in range(dim0): * for j in range(dim1): * min0 = BIG # <<<<<<<<<<<<<< @@ -5674,7 +5670,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_min0 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":284 + /* "pyFAI/ext/_distortion.pyx":286 * for j in range(dim1): * min0 = BIG * min1 = BIG # <<<<<<<<<<<<<< @@ -5683,7 +5679,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_min1 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":285 + /* "pyFAI/ext/_distortion.pyx":287 * min0 = BIG * min1 = BIG * max0 = -BIG # <<<<<<<<<<<<<< @@ -5692,7 +5688,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_max0 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":286 + /* "pyFAI/ext/_distortion.pyx":288 * min1 = BIG * max0 = -BIG * max1 = -BIG # <<<<<<<<<<<<<< @@ -5701,7 +5697,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO */ __pyx_v_max1 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":287 + /* "pyFAI/ext/_distortion.pyx":289 * max0 = -BIG * max1 = -BIG * for k in range(nb_corners): # <<<<<<<<<<<<<< @@ -5712,7 +5708,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_k = __pyx_t_15; - /* "pyFAI/ext/_distortion.pyx":288 + /* "pyFAI/ext/_distortion.pyx":290 * max1 = -BIG * for k in range(nb_corners): * p0 = pixel_corners[i, j, k, 1] / pixel1 # <<<<<<<<<<<<<< @@ -5725,7 +5721,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_19 = 1; __pyx_v_p0 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pixel_corners.data + __pyx_t_16 * __pyx_v_pixel_corners.strides[0]) ) + __pyx_t_17 * __pyx_v_pixel_corners.strides[1]) ) + __pyx_t_18 * __pyx_v_pixel_corners.strides[2]) )) + __pyx_t_19)) ))) / __pyx_v_pixel1); - /* "pyFAI/ext/_distortion.pyx":289 + /* "pyFAI/ext/_distortion.pyx":291 * for k in range(nb_corners): * p0 = pixel_corners[i, j, k, 1] / pixel1 * p1 = pixel_corners[i, j, k, 2] / pixel2 # <<<<<<<<<<<<<< @@ -5738,7 +5734,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_23 = 2; __pyx_v_p1 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pixel_corners.data + __pyx_t_20 * __pyx_v_pixel_corners.strides[0]) ) + __pyx_t_21 * __pyx_v_pixel_corners.strides[1]) ) + __pyx_t_22 * __pyx_v_pixel_corners.strides[2]) )) + __pyx_t_23)) ))) / __pyx_v_pixel2); - /* "pyFAI/ext/_distortion.pyx":290 + /* "pyFAI/ext/_distortion.pyx":292 * p0 = pixel_corners[i, j, k, 1] / pixel1 * p1 = pixel_corners[i, j, k, 2] / pixel2 * pos[i, j, k, 0] = p0 # <<<<<<<<<<<<<< @@ -5751,7 +5747,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_27 = 0; *((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_24 * __pyx_v_pos.strides[0]) ) + __pyx_t_25 * __pyx_v_pos.strides[1]) ) + __pyx_t_26 * __pyx_v_pos.strides[2]) )) + __pyx_t_27)) )) = __pyx_v_p0; - /* "pyFAI/ext/_distortion.pyx":291 + /* "pyFAI/ext/_distortion.pyx":293 * p1 = pixel_corners[i, j, k, 2] / pixel2 * pos[i, j, k, 0] = p0 * pos[i, j, k, 1] = p1 # <<<<<<<<<<<<<< @@ -5764,7 +5760,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_31 = 1; *((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_28 * __pyx_v_pos.strides[0]) ) + __pyx_t_29 * __pyx_v_pos.strides[1]) ) + __pyx_t_30 * __pyx_v_pos.strides[2]) )) + __pyx_t_31)) )) = __pyx_v_p1; - /* "pyFAI/ext/_distortion.pyx":292 + /* "pyFAI/ext/_distortion.pyx":294 * pos[i, j, k, 0] = p0 * pos[i, j, k, 1] = p1 * min0 = p0 if p0 < min0 else min0 # <<<<<<<<<<<<<< @@ -5778,7 +5774,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_min0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":293 + /* "pyFAI/ext/_distortion.pyx":295 * pos[i, j, k, 1] = p1 * min0 = p0 if p0 < min0 else min0 * min1 = p1 if p1 < min1 else min1 # <<<<<<<<<<<<<< @@ -5792,7 +5788,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_min1 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":294 + /* "pyFAI/ext/_distortion.pyx":296 * min0 = p0 if p0 < min0 else min0 * min1 = p1 if p1 < min1 else min1 * max0 = p0 if p0 > max0 else max0 # <<<<<<<<<<<<<< @@ -5806,7 +5802,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_max0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":295 + /* "pyFAI/ext/_distortion.pyx":297 * min1 = p1 if p1 < min1 else min1 * max0 = p0 if p0 > max0 else max0 * max1 = p1 if p1 > max1 else max1 # <<<<<<<<<<<<<< @@ -5821,7 +5817,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_v_max1 = __pyx_t_4; } - /* "pyFAI/ext/_distortion.pyx":296 + /* "pyFAI/ext/_distortion.pyx":298 * max0 = p0 if p0 > max0 else max0 * max1 = p1 if p1 > max1 else max1 * delta0 = max(delta0, ceil(max0) - floor(min0)) # <<<<<<<<<<<<<< @@ -5837,7 +5833,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_delta0 = __pyx_t_33; - /* "pyFAI/ext/_distortion.pyx":297 + /* "pyFAI/ext/_distortion.pyx":299 * max1 = p1 if p1 > max1 else max1 * delta0 = max(delta0, ceil(max0) - floor(min0)) * delta1 = max(delta1, ceil(max1) - floor(min1)) # <<<<<<<<<<<<<< @@ -5853,7 +5849,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_delta1 = __pyx_t_32; - /* "pyFAI/ext/_distortion.pyx":298 + /* "pyFAI/ext/_distortion.pyx":300 * delta0 = max(delta0, ceil(max0) - floor(min0)) * delta1 = max(delta1, ceil(max1) - floor(min1)) * if do_shape: # <<<<<<<<<<<<<< @@ -5863,7 +5859,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_1 = (__pyx_v_do_shape != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_distortion.pyx":299 + /* "pyFAI/ext/_distortion.pyx":301 * delta1 = max(delta1, ceil(max1) - floor(min1)) * if do_shape: * all_min0 = min0 if min0 < all_min0 else all_min0 # <<<<<<<<<<<<<< @@ -5877,7 +5873,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_all_min0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":300 + /* "pyFAI/ext/_distortion.pyx":302 * if do_shape: * all_min0 = min0 if min0 < all_min0 else all_min0 * all_min1 = min1 if min1 < all_min1 else all_min1 # <<<<<<<<<<<<<< @@ -5891,7 +5887,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_all_min1 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":301 + /* "pyFAI/ext/_distortion.pyx":303 * all_min0 = min0 if min0 < all_min0 else all_min0 * all_min1 = min1 if min1 < all_min1 else all_min1 * all_max0 = max0 if max0 > all_max0 else all_max0 # <<<<<<<<<<<<<< @@ -5905,7 +5901,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } __pyx_v_all_max0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":302 + /* "pyFAI/ext/_distortion.pyx":304 * all_min1 = min1 if min1 < all_min1 else all_min1 * all_max0 = max0 if max0 > all_max0 else all_max0 * all_max1 = max1 if max1 > all_max1 else all_max1 # <<<<<<<<<<<<<< @@ -5925,7 +5921,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } } - /* "pyFAI/ext/_distortion.pyx":274 + /* "pyFAI/ext/_distortion.pyx":276 * nb_corners = pixel_corners.shape[2] * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) * with nogil: # <<<<<<<<<<<<<< @@ -5943,19 +5939,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } } - /* "pyFAI/ext/_distortion.pyx":304 + /* "pyFAI/ext/_distortion.pyx":306 * all_max1 = max1 if max1 > all_max1 else all_max1 * * res = numpy.asarray(pos), int(delta0), int(delta1), \ # <<<<<<<<<<<<<< * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_pos, 4, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_pos, 4, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -5968,43 +5964,43 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO } } if (!__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_8); } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL; PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyFloat_FromDouble(__pyx_v_delta0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_delta0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_delta1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_delta1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":305 + /* "pyFAI/ext/_distortion.pyx":307 * * res = numpy.asarray(pos), int(delta0), int(delta1), \ * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ # <<<<<<<<<<<<<< @@ -6012,27 +6008,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO * return res */ if ((__pyx_v_do_shape != 0)) { - __pyx_t_2 = PyFloat_FromDouble(ceil((__pyx_v_all_max0 - __pyx_v_all_min0))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyFloat_FromDouble(ceil((__pyx_v_all_max0 - __pyx_v_all_min0))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_34 = PyTuple_New(1); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = PyTuple_New(1); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_34, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_34, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0; - __pyx_t_34 = PyFloat_FromDouble(ceil((__pyx_v_all_max1 - __pyx_v_all_min1))); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = PyFloat_FromDouble(ceil((__pyx_v_all_max1 - __pyx_v_all_min1))); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); - __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_34); __Pyx_GIVEREF(__pyx_t_34); __pyx_t_34 = 0; - __pyx_t_34 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_35, NULL); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_35, NULL); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0; - __pyx_t_35 = PyTuple_New(2); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_35 = PyTuple_New(2); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -6047,7 +6043,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_7 = __pyx_v_shape_out; } - /* "pyFAI/ext/_distortion.pyx":306 + /* "pyFAI/ext/_distortion.pyx":308 * res = numpy.asarray(pos), int(delta0), int(delta1), \ * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) # <<<<<<<<<<<<<< @@ -6055,11 +6051,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO * */ if ((__pyx_v_do_shape != 0)) { - __pyx_t_34 = PyFloat_FromDouble(((double)__pyx_v_all_min0)); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = PyFloat_FromDouble(((double)__pyx_v_all_min0)); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); - __pyx_t_2 = PyFloat_FromDouble(((double)__pyx_v_all_min1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyFloat_FromDouble(((double)__pyx_v_all_min1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_36 = PyTuple_New(2); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_36 = PyTuple_New(2); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_34); __Pyx_GIVEREF(__pyx_t_34); @@ -6074,14 +6070,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_t_35 = __pyx_tuple__9; } - /* "pyFAI/ext/_distortion.pyx":304 + /* "pyFAI/ext/_distortion.pyx":306 * all_max1 = max1 if max1 > all_max1 else all_max1 * * res = numpy.asarray(pos), int(delta0), int(delta1), \ # <<<<<<<<<<<<<< * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) */ - __pyx_t_36 = PyTuple_New(5); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_36 = PyTuple_New(5); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); @@ -6101,7 +6097,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_v_res = ((PyObject*)__pyx_t_36); __pyx_t_36 = 0; - /* "pyFAI/ext/_distortion.pyx":307 + /* "pyFAI/ext/_distortion.pyx":309 * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) * return res # <<<<<<<<<<<<<< @@ -6113,9 +6109,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_22calc_pos(CYTHON_UNUSED PyO __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":249 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":251 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_pos(floating[:, :, :, ::1] pixel_corners not None, # <<<<<<<<<<<<<< * float pixel1, float pixel2, shape_out=None): * """Calculate the pixel boundary position on the regular grid @@ -6153,12 +6149,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_40__defaults__(CYTHON_UNUSED int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__defaults__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_self)->__pyx_arg_shape_out); PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_self)->__pyx_arg_shape_out); __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_self)->__pyx_arg_shape_out); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -6220,12 +6216,12 @@ static PyObject *__pyx_fuse_1__pyx_pw_5pyFAI_3ext_11_distortion_25calc_pos(PyObj case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pixel1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pixel2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (kw_args > 0) { @@ -6234,7 +6230,7 @@ static PyObject *__pyx_fuse_1__pyx_pw_5pyFAI_3ext_11_distortion_25calc_pos(PyObj } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_pos") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_pos") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -6246,21 +6242,21 @@ static PyObject *__pyx_fuse_1__pyx_pw_5pyFAI_3ext_11_distortion_25calc_pos(PyObj default: goto __pyx_L5_argtuple_error; } } - __pyx_v_pixel_corners = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_double(values[0]); if (unlikely(!__pyx_v_pixel_corners.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_pixel1 = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_pixel1 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_pixel2 = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_pixel2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pixel_corners = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_double(values[0]); if (unlikely(!__pyx_v_pixel_corners.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pixel1 = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_pixel1 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pixel2 = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_pixel2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_shape_out = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.calc_pos", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_pixel_corners.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pixel_corners"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pixel_corners"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(__pyx_self, __pyx_v_pixel_corners, __pyx_v_pixel1, __pyx_v_pixel2, __pyx_v_shape_out); @@ -6339,7 +6335,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_fuse_1calc_pos", 0); - /* "pyFAI/ext/_distortion.pyx":261 + /* "pyFAI/ext/_distortion.pyx":263 * float[:, :, :, ::1] pos * int i, j, k, dim0, dim1, nb_corners * bint do_shape = (shape_out is None) # <<<<<<<<<<<<<< @@ -6349,23 +6345,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_1 = (__pyx_v_shape_out == Py_None); __pyx_v_do_shape = __pyx_t_1; - /* "pyFAI/ext/_distortion.pyx":262 + /* "pyFAI/ext/_distortion.pyx":264 * int i, j, k, dim0, dim1, nb_corners * bint do_shape = (shape_out is None) * float BIG = sys.maxsize # <<<<<<<<<<<<<< * float min0, min1, max0, max1, delta0, delta1 * float all_min0, all_max0, all_max1, all_min1 */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_maxsize); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_BIG = ((float)__pyx_t_4); - /* "pyFAI/ext/_distortion.pyx":267 + /* "pyFAI/ext/_distortion.pyx":269 * float p0, p1 * * if (pixel1 == 0.0) or (pixel2 == 0): # <<<<<<<<<<<<<< @@ -6383,21 +6379,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "pyFAI/ext/_distortion.pyx":268 + /* "pyFAI/ext/_distortion.pyx":270 * * if (pixel1 == 0.0) or (pixel2 == 0): * raise RuntimeError("Pixel size cannot be null -> Zero division error") # <<<<<<<<<<<<<< * * dim0 = pixel_corners.shape[0] */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "pyFAI/ext/_distortion.pyx":270 + /* "pyFAI/ext/_distortion.pyx":272 * raise RuntimeError("Pixel size cannot be null -> Zero division error") * * dim0 = pixel_corners.shape[0] # <<<<<<<<<<<<<< @@ -6406,7 +6402,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_dim0 = (__pyx_v_pixel_corners.shape[0]); - /* "pyFAI/ext/_distortion.pyx":271 + /* "pyFAI/ext/_distortion.pyx":273 * * dim0 = pixel_corners.shape[0] * dim1 = pixel_corners.shape[1] # <<<<<<<<<<<<<< @@ -6415,7 +6411,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_dim1 = (__pyx_v_pixel_corners.shape[1]); - /* "pyFAI/ext/_distortion.pyx":272 + /* "pyFAI/ext/_distortion.pyx":274 * dim0 = pixel_corners.shape[0] * dim1 = pixel_corners.shape[1] * nb_corners = pixel_corners.shape[2] # <<<<<<<<<<<<<< @@ -6424,23 +6420,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_nb_corners = (__pyx_v_pixel_corners.shape[2]); - /* "pyFAI/ext/_distortion.pyx":273 + /* "pyFAI/ext/_distortion.pyx":275 * dim1 = pixel_corners.shape[1] * nb_corners = pixel_corners.shape[2] * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) # <<<<<<<<<<<<<< * with nogil: * delta0 = -BIG */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_dim1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_dim1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -6454,33 +6450,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __Pyx_GIVEREF(__pyx_int_2); __pyx_t_3 = 0; __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(__pyx_t_8); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_pos = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_distortion.pyx":274 + /* "pyFAI/ext/_distortion.pyx":276 * nb_corners = pixel_corners.shape[2] * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) * with nogil: # <<<<<<<<<<<<<< @@ -6494,7 +6490,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":275 + /* "pyFAI/ext/_distortion.pyx":277 * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) * with nogil: * delta0 = -BIG # <<<<<<<<<<<<<< @@ -6503,7 +6499,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_delta0 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":276 + /* "pyFAI/ext/_distortion.pyx":278 * with nogil: * delta0 = -BIG * delta1 = -BIG # <<<<<<<<<<<<<< @@ -6512,7 +6508,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_delta1 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":277 + /* "pyFAI/ext/_distortion.pyx":279 * delta0 = -BIG * delta1 = -BIG * all_min0 = BIG # <<<<<<<<<<<<<< @@ -6521,7 +6517,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_min0 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":278 + /* "pyFAI/ext/_distortion.pyx":280 * delta1 = -BIG * all_min0 = BIG * all_min0 = BIG # <<<<<<<<<<<<<< @@ -6530,7 +6526,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_min0 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":279 + /* "pyFAI/ext/_distortion.pyx":281 * all_min0 = BIG * all_min0 = BIG * all_max0 = -BIG # <<<<<<<<<<<<<< @@ -6539,7 +6535,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_max0 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":280 + /* "pyFAI/ext/_distortion.pyx":282 * all_min0 = BIG * all_max0 = -BIG * all_max1 = -BIG # <<<<<<<<<<<<<< @@ -6548,7 +6544,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_all_max1 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":281 + /* "pyFAI/ext/_distortion.pyx":283 * all_max0 = -BIG * all_max1 = -BIG * for i in range(dim0): # <<<<<<<<<<<<<< @@ -6559,7 +6555,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11; - /* "pyFAI/ext/_distortion.pyx":282 + /* "pyFAI/ext/_distortion.pyx":284 * all_max1 = -BIG * for i in range(dim0): * for j in range(dim1): # <<<<<<<<<<<<<< @@ -6570,7 +6566,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { __pyx_v_j = __pyx_t_13; - /* "pyFAI/ext/_distortion.pyx":283 + /* "pyFAI/ext/_distortion.pyx":285 * for i in range(dim0): * for j in range(dim1): * min0 = BIG # <<<<<<<<<<<<<< @@ -6579,7 +6575,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_min0 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":284 + /* "pyFAI/ext/_distortion.pyx":286 * for j in range(dim1): * min0 = BIG * min1 = BIG # <<<<<<<<<<<<<< @@ -6588,7 +6584,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_min1 = __pyx_v_BIG; - /* "pyFAI/ext/_distortion.pyx":285 + /* "pyFAI/ext/_distortion.pyx":287 * min0 = BIG * min1 = BIG * max0 = -BIG # <<<<<<<<<<<<<< @@ -6597,7 +6593,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_max0 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":286 + /* "pyFAI/ext/_distortion.pyx":288 * min1 = BIG * max0 = -BIG * max1 = -BIG # <<<<<<<<<<<<<< @@ -6606,7 +6602,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO */ __pyx_v_max1 = (-__pyx_v_BIG); - /* "pyFAI/ext/_distortion.pyx":287 + /* "pyFAI/ext/_distortion.pyx":289 * max0 = -BIG * max1 = -BIG * for k in range(nb_corners): # <<<<<<<<<<<<<< @@ -6617,7 +6613,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_k = __pyx_t_15; - /* "pyFAI/ext/_distortion.pyx":288 + /* "pyFAI/ext/_distortion.pyx":290 * max1 = -BIG * for k in range(nb_corners): * p0 = pixel_corners[i, j, k, 1] / pixel1 # <<<<<<<<<<<<<< @@ -6630,7 +6626,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_19 = 1; __pyx_v_p0 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pixel_corners.data + __pyx_t_16 * __pyx_v_pixel_corners.strides[0]) ) + __pyx_t_17 * __pyx_v_pixel_corners.strides[1]) ) + __pyx_t_18 * __pyx_v_pixel_corners.strides[2]) )) + __pyx_t_19)) ))) / __pyx_v_pixel1); - /* "pyFAI/ext/_distortion.pyx":289 + /* "pyFAI/ext/_distortion.pyx":291 * for k in range(nb_corners): * p0 = pixel_corners[i, j, k, 1] / pixel1 * p1 = pixel_corners[i, j, k, 2] / pixel2 # <<<<<<<<<<<<<< @@ -6643,7 +6639,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_23 = 2; __pyx_v_p1 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pixel_corners.data + __pyx_t_20 * __pyx_v_pixel_corners.strides[0]) ) + __pyx_t_21 * __pyx_v_pixel_corners.strides[1]) ) + __pyx_t_22 * __pyx_v_pixel_corners.strides[2]) )) + __pyx_t_23)) ))) / __pyx_v_pixel2); - /* "pyFAI/ext/_distortion.pyx":290 + /* "pyFAI/ext/_distortion.pyx":292 * p0 = pixel_corners[i, j, k, 1] / pixel1 * p1 = pixel_corners[i, j, k, 2] / pixel2 * pos[i, j, k, 0] = p0 # <<<<<<<<<<<<<< @@ -6656,7 +6652,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_27 = 0; *((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_24 * __pyx_v_pos.strides[0]) ) + __pyx_t_25 * __pyx_v_pos.strides[1]) ) + __pyx_t_26 * __pyx_v_pos.strides[2]) )) + __pyx_t_27)) )) = __pyx_v_p0; - /* "pyFAI/ext/_distortion.pyx":291 + /* "pyFAI/ext/_distortion.pyx":293 * p1 = pixel_corners[i, j, k, 2] / pixel2 * pos[i, j, k, 0] = p0 * pos[i, j, k, 1] = p1 # <<<<<<<<<<<<<< @@ -6669,7 +6665,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_31 = 1; *((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_28 * __pyx_v_pos.strides[0]) ) + __pyx_t_29 * __pyx_v_pos.strides[1]) ) + __pyx_t_30 * __pyx_v_pos.strides[2]) )) + __pyx_t_31)) )) = __pyx_v_p1; - /* "pyFAI/ext/_distortion.pyx":292 + /* "pyFAI/ext/_distortion.pyx":294 * pos[i, j, k, 0] = p0 * pos[i, j, k, 1] = p1 * min0 = p0 if p0 < min0 else min0 # <<<<<<<<<<<<<< @@ -6683,7 +6679,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_min0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":293 + /* "pyFAI/ext/_distortion.pyx":295 * pos[i, j, k, 1] = p1 * min0 = p0 if p0 < min0 else min0 * min1 = p1 if p1 < min1 else min1 # <<<<<<<<<<<<<< @@ -6697,7 +6693,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_min1 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":294 + /* "pyFAI/ext/_distortion.pyx":296 * min0 = p0 if p0 < min0 else min0 * min1 = p1 if p1 < min1 else min1 * max0 = p0 if p0 > max0 else max0 # <<<<<<<<<<<<<< @@ -6711,7 +6707,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_max0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":295 + /* "pyFAI/ext/_distortion.pyx":297 * min1 = p1 if p1 < min1 else min1 * max0 = p0 if p0 > max0 else max0 * max1 = p1 if p1 > max1 else max1 # <<<<<<<<<<<<<< @@ -6726,7 +6722,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_v_max1 = __pyx_t_4; } - /* "pyFAI/ext/_distortion.pyx":296 + /* "pyFAI/ext/_distortion.pyx":298 * max0 = p0 if p0 > max0 else max0 * max1 = p1 if p1 > max1 else max1 * delta0 = max(delta0, ceil(max0) - floor(min0)) # <<<<<<<<<<<<<< @@ -6742,7 +6738,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_delta0 = __pyx_t_33; - /* "pyFAI/ext/_distortion.pyx":297 + /* "pyFAI/ext/_distortion.pyx":299 * max1 = p1 if p1 > max1 else max1 * delta0 = max(delta0, ceil(max0) - floor(min0)) * delta1 = max(delta1, ceil(max1) - floor(min1)) # <<<<<<<<<<<<<< @@ -6758,7 +6754,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_delta1 = __pyx_t_32; - /* "pyFAI/ext/_distortion.pyx":298 + /* "pyFAI/ext/_distortion.pyx":300 * delta0 = max(delta0, ceil(max0) - floor(min0)) * delta1 = max(delta1, ceil(max1) - floor(min1)) * if do_shape: # <<<<<<<<<<<<<< @@ -6768,7 +6764,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_1 = (__pyx_v_do_shape != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_distortion.pyx":299 + /* "pyFAI/ext/_distortion.pyx":301 * delta1 = max(delta1, ceil(max1) - floor(min1)) * if do_shape: * all_min0 = min0 if min0 < all_min0 else all_min0 # <<<<<<<<<<<<<< @@ -6782,7 +6778,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_all_min0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":300 + /* "pyFAI/ext/_distortion.pyx":302 * if do_shape: * all_min0 = min0 if min0 < all_min0 else all_min0 * all_min1 = min1 if min1 < all_min1 else all_min1 # <<<<<<<<<<<<<< @@ -6796,7 +6792,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_all_min1 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":301 + /* "pyFAI/ext/_distortion.pyx":303 * all_min0 = min0 if min0 < all_min0 else all_min0 * all_min1 = min1 if min1 < all_min1 else all_min1 * all_max0 = max0 if max0 > all_max0 else all_max0 # <<<<<<<<<<<<<< @@ -6810,7 +6806,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } __pyx_v_all_max0 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":302 + /* "pyFAI/ext/_distortion.pyx":304 * all_min1 = min1 if min1 < all_min1 else all_min1 * all_max0 = max0 if max0 > all_max0 else all_max0 * all_max1 = max1 if max1 > all_max1 else all_max1 # <<<<<<<<<<<<<< @@ -6830,7 +6826,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } } - /* "pyFAI/ext/_distortion.pyx":274 + /* "pyFAI/ext/_distortion.pyx":276 * nb_corners = pixel_corners.shape[2] * pos = numpy.zeros((dim0, dim1, 4, 2), dtype=numpy.float32) * with nogil: # <<<<<<<<<<<<<< @@ -6848,19 +6844,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } } - /* "pyFAI/ext/_distortion.pyx":304 + /* "pyFAI/ext/_distortion.pyx":306 * all_max1 = max1 if max1 > all_max1 else all_max1 * * res = numpy.asarray(pos), int(delta0), int(delta1), \ # <<<<<<<<<<<<<< * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_pos, 4, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_pos, 4, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -6873,43 +6869,43 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO } } if (!__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_8); } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL; PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyFloat_FromDouble(__pyx_v_delta0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_delta0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_delta1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_delta1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":305 + /* "pyFAI/ext/_distortion.pyx":307 * * res = numpy.asarray(pos), int(delta0), int(delta1), \ * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ # <<<<<<<<<<<<<< @@ -6917,27 +6913,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO * return res */ if ((__pyx_v_do_shape != 0)) { - __pyx_t_2 = PyFloat_FromDouble(ceil((__pyx_v_all_max0 - __pyx_v_all_min0))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyFloat_FromDouble(ceil((__pyx_v_all_max0 - __pyx_v_all_min0))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_34 = PyTuple_New(1); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = PyTuple_New(1); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_34, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_34, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0; - __pyx_t_34 = PyFloat_FromDouble(ceil((__pyx_v_all_max1 - __pyx_v_all_min1))); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = PyFloat_FromDouble(ceil((__pyx_v_all_max1 - __pyx_v_all_min1))); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); - __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_35 = PyTuple_New(1); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_34); __Pyx_GIVEREF(__pyx_t_34); __pyx_t_34 = 0; - __pyx_t_34 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_35, NULL); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), __pyx_t_35, NULL); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0; - __pyx_t_35 = PyTuple_New(2); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_35 = PyTuple_New(2); if (unlikely(!__pyx_t_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -6952,7 +6948,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_7 = __pyx_v_shape_out; } - /* "pyFAI/ext/_distortion.pyx":306 + /* "pyFAI/ext/_distortion.pyx":308 * res = numpy.asarray(pos), int(delta0), int(delta1), \ * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) # <<<<<<<<<<<<<< @@ -6960,11 +6956,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO * */ if ((__pyx_v_do_shape != 0)) { - __pyx_t_34 = PyFloat_FromDouble(((double)__pyx_v_all_min0)); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_34 = PyFloat_FromDouble(((double)__pyx_v_all_min0)); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_34); - __pyx_t_2 = PyFloat_FromDouble(((double)__pyx_v_all_min1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyFloat_FromDouble(((double)__pyx_v_all_min1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_36 = PyTuple_New(2); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_36 = PyTuple_New(2); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_34); __Pyx_GIVEREF(__pyx_t_34); @@ -6979,14 +6975,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_t_35 = __pyx_tuple__11; } - /* "pyFAI/ext/_distortion.pyx":304 + /* "pyFAI/ext/_distortion.pyx":306 * all_max1 = max1 if max1 > all_max1 else all_max1 * * res = numpy.asarray(pos), int(delta0), int(delta1), \ # <<<<<<<<<<<<<< * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) */ - __pyx_t_36 = PyTuple_New(5); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_36 = PyTuple_New(5); if (unlikely(!__pyx_t_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); @@ -7006,7 +7002,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_v_res = ((PyObject*)__pyx_t_36); __pyx_t_36 = 0; - /* "pyFAI/ext/_distortion.pyx":307 + /* "pyFAI/ext/_distortion.pyx":309 * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) * return res # <<<<<<<<<<<<<< @@ -7018,9 +7014,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":249 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":251 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_pos(floating[:, :, :, ::1] pixel_corners not None, # <<<<<<<<<<<<<< * float pixel1, float pixel2, shape_out=None): * """Calculate the pixel boundary position on the regular grid @@ -7048,9 +7044,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) +/* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, @@ -7058,7 +7054,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_24calc_pos(CYTHON_UNUSED PyO /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_7calc_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_6calc_size[] = "Calculate the number of items per output pixel\n\n @param pos: 4D array with position in space\n @param shape: shape of the output array\n @param mask: input data mask\n @param offset: 2-tuple of float with the minimal index of\n @return: number of input element per output elements\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_6calc_size[] = "calc_size(signatures, args, kwargs, defaults)\nCalculate the number of items per output pixel\n\n :param pos: 4D array with position in space\n :param shape: shape of the output array\n :param mask: input data mask\n :param offset: 2-tuple of float with the minimal index of\n :return: number of input element per output elements\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_7calc_size = {"calc_size", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_7calc_size, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_6calc_size}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_7calc_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_signatures = 0; @@ -7095,7 +7091,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_7calc_size(PyObject *__pyx_s case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -7109,7 +7105,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_7calc_size(PyObject *__pyx_s } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_fused_cpdef") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_fused_cpdef") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -7126,7 +7122,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_7calc_size(PyObject *__pyx_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__pyx_fused_cpdef", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7182,7 +7178,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_size", 0); __Pyx_INCREF(__pyx_v_kwargs); - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(Py_None); PyList_SET_ITEM(__pyx_t_1, 0, Py_None); @@ -7192,7 +7188,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_2 = (__pyx_v_kwargs == Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_kwargs, __pyx_t_1); __pyx_t_1 = 0; @@ -7205,13 +7201,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); /*try:*/ { - __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_numpy = __pyx_t_1; __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyType_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + if (!(likely(PyType_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "type", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __pyx_v_ndarray = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; } @@ -7224,7 +7220,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_ImportError) || PyErr_ExceptionMatches(__pyx_builtin_AttributeError) || PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_7) { __Pyx_AddTraceback("pyFAI.ext._distortion.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_9); @@ -7252,14 +7248,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_v_itemsize = -1; if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = ((0 < __pyx_t_10) != 0); if (__pyx_t_3) { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_9 = PyTuple_GET_ITEM(((PyObject*)__pyx_v_args), 0); __Pyx_INCREF(__pyx_t_9); @@ -7269,16 +7265,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO } if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_3 = (__Pyx_PyDict_Contains(__pyx_n_s_pos, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = (__Pyx_PyDict_Contains(__pyx_n_s_pos, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_9 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_pos); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_9 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_pos); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_9); __pyx_v_arg = __pyx_t_9; __pyx_t_9 = 0; @@ -7287,25 +7283,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO /*else*/ { if (unlikely(__pyx_v_args == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_arguments, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_arguments, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L14:; if (0) { @@ -7320,7 +7316,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_v_ndarray); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_dtype = __pyx_t_8; __pyx_t_8 = 0; @@ -7328,14 +7324,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO } __pyx_t_2 = (__pyx_memoryview_check(__pyx_v_arg) != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_base); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_arg_base = __pyx_t_8; __pyx_t_8 = 0; __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_arg_base, __pyx_v_ndarray); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_base, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_dtype = __pyx_t_8; __pyx_t_8 = 0; @@ -7357,22 +7353,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_3 = (__pyx_v_dtype != Py_None); __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_itemsize = __pyx_t_10; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ord, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ord, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_11 = __Pyx_PyInt_As_char(__pyx_t_8); if (unlikely((__pyx_t_11 == (char)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_As_char(__pyx_t_8); if (unlikely((__pyx_t_11 == (char)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_kind = __pyx_t_11; __pyx_v_dtype_signed = (__pyx_v_kind == 'i'); @@ -7387,15 +7383,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_2 = __pyx_t_3; goto __pyx_L23_bool_binop_done; } - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = ((((Py_ssize_t)__pyx_t_10) == 4) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L23_bool_binop_done:; if (__pyx_t_2) { - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } __pyx_t_3 = (((sizeof(double)) == __pyx_v_itemsize) != 0); @@ -7404,15 +7400,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_2 = __pyx_t_3; goto __pyx_L26_bool_binop_done; } - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg, __pyx_n_s_ndim); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = ((((Py_ssize_t)__pyx_t_10) == 4) != 0); __pyx_t_2 = __pyx_t_3; __pyx_L26_bool_binop_done:; if (__pyx_t_2) { - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } break; @@ -7442,7 +7438,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_2 = (__pyx_v_memslice.memview != 0); if (__pyx_t_2) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_float, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } /*else*/ { @@ -7465,7 +7461,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_2 = (__pyx_v_memslice.memview != 0); if (__pyx_t_2) { __PYX_XDEC_MEMVIEW((&__pyx_v_memslice), 1); - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } /*else*/ { @@ -7474,22 +7470,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO goto __pyx_L32; } __pyx_L32:; - if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L17_break; } __pyx_L17_break:; } __pyx_L15:; - __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_candidates = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0; __pyx_t_10 = 0; if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_9 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_12), (&__pyx_t_7)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_12), (&__pyx_t_7)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = __pyx_t_9; @@ -7497,23 +7493,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO while (1) { __pyx_t_13 = __Pyx_dict_iter_next(__pyx_t_8, __pyx_t_12, &__pyx_t_10, &__pyx_t_9, NULL, NULL, __pyx_t_7); if (unlikely(__pyx_t_13 == 0)) break; - if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_9); __pyx_t_9 = 0; __pyx_v_match_found = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_split); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -7521,16 +7517,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_dest_sig); __Pyx_GIVEREF(__pyx_v_dest_sig); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_9 = __pyx_t_1; __Pyx_INCREF(__pyx_t_9); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { - __pyx_t_14 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_15 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -7538,16 +7534,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO if (likely(PyList_CheckExact(__pyx_t_9))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_9)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_9)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -7556,7 +7552,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } @@ -7572,7 +7568,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -7585,15 +7581,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(__pyx_t_17); #else - __pyx_t_16 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); - __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; - __pyx_t_18 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_19 = Py_TYPE(__pyx_t_18)->tp_iternext; @@ -7601,7 +7597,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __Pyx_GOTREF(__pyx_t_16); index = 1; __pyx_t_17 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_17)) goto __pyx_L40_unpacking_failed; __Pyx_GOTREF(__pyx_t_17); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_18), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_18), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_19 = NULL; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; goto __pyx_L41_unpacking_done; @@ -7609,7 +7605,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_19 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L41_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_src_type, __pyx_t_16); @@ -7619,8 +7615,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_2 = (__pyx_v_dst_type != Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - __pyx_t_1 = PyObject_RichCompare(__pyx_v_src_type, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_v_src_type, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) { __pyx_v_match_found = 1; @@ -7639,7 +7635,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_3 = (__pyx_v_match_found != 0); if (__pyx_t_3) { - __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_20 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_20 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L44; } __pyx_L44:; @@ -7648,28 +7644,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_6calc_size(CYTHON_UNUSED PyO __pyx_t_3 = (__pyx_v_candidates != Py_None) && (PyList_GET_SIZE(__pyx_v_candidates) != 0); __pyx_t_2 = ((!__pyx_t_3) != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_12 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = ((__pyx_t_12 > 1) != 0); if (__pyx_t_2) { - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } /*else*/ { __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_signatures == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_8 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), PyList_GET_ITEM(__pyx_v_candidates, 0)); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_8 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), PyList_GET_ITEM(__pyx_v_candidates, 0)); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; @@ -7713,9 +7709,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_46__defaults__(CYTHON_UNUSED int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__defaults__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_fromslice(__Pyx_CyFunction_Defaults(__pyx_defaults6, __pyx_self)->__pyx_arg_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__Pyx_CyFunction_Defaults(__pyx_defaults6, __pyx_self)->__pyx_arg_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -7723,7 +7719,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_46__defaults__(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_2, 1, __Pyx_CyFunction_Defaults(__pyx_defaults6, __pyx_self)->__pyx_arg_offset); __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults6, __pyx_self)->__pyx_arg_offset); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -7785,7 +7781,7 @@ static PyObject *__pyx_fuse_0__pyx_pw_5pyFAI_3ext_11_distortion_29calc_size(PyOb case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -7799,7 +7795,7 @@ static PyObject *__pyx_fuse_0__pyx_pw_5pyFAI_3ext_11_distortion_29calc_size(PyOb } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_size") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_size") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -7811,10 +7807,10 @@ static PyObject *__pyx_fuse_0__pyx_pw_5pyFAI_3ext_11_distortion_29calc_size(PyOb default: goto __pyx_L5_argtuple_error; } } - __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_shape = values[1]; if (values[2]) { - __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(values[2]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(values[2]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_mask = __pyx_dynamic_args->__pyx_arg_mask; __PYX_INC_MEMVIEW(&__pyx_v_mask, 1); @@ -7823,14 +7819,14 @@ static PyObject *__pyx_fuse_0__pyx_pw_5pyFAI_3ext_11_distortion_29calc_size(PyOb } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.calc_size", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_pos.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(__pyx_self, __pyx_v_pos, __pyx_v_shape, __pyx_v_mask, __pyx_v_offset); @@ -7939,44 +7935,44 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_pybuffernd_lut_size.data = NULL; __pyx_pybuffernd_lut_size.rcbuffer = &__pyx_pybuffer_lut_size; - /* "pyFAI/ext/_distortion.pyx":326 + /* "pyFAI/ext/_distortion.pyx":331 * cdef: * int i, j, k, l, shape_out0, shape_out1, shape_in0, shape_in1, min0, min1, max0, max1 * numpy.ndarray[numpy.int32_t, ndim = 2] lut_size = numpy.zeros(shape, dtype=numpy.int32) # <<<<<<<<<<<<<< * float A0, A1, B0, B1, C0, C1, D0, D1, offset0, offset1 * bint do_mask = mask is not None */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lut_size.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_lut_size = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_lut_size.diminfo[0].strides = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lut_size.diminfo[0].shape = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_lut_size.diminfo[1].strides = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_lut_size.diminfo[1].shape = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.shape[1]; } } @@ -7984,7 +7980,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_v_lut_size = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":328 + /* "pyFAI/ext/_distortion.pyx":333 * numpy.ndarray[numpy.int32_t, ndim = 2] lut_size = numpy.zeros(shape, dtype=numpy.int32) * float A0, A1, B0, B1, C0, C1, D0, D1, offset0, offset1 * bint do_mask = mask is not None # <<<<<<<<<<<<<< @@ -7993,7 +7989,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py */ __pyx_v_do_mask = (((PyObject *) __pyx_v_mask.memview) != Py_None); - /* "pyFAI/ext/_distortion.pyx":330 + /* "pyFAI/ext/_distortion.pyx":335 * bint do_mask = mask is not None * numpy.int8_t[:, ::1] cmask * shape_in0, shape_in1 = pos.shape[0], pos.shape[1] # <<<<<<<<<<<<<< @@ -8005,7 +8001,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_v_shape_in0 = __pyx_t_7; __pyx_v_shape_in1 = __pyx_t_8; - /* "pyFAI/ext/_distortion.pyx":331 + /* "pyFAI/ext/_distortion.pyx":336 * numpy.int8_t[:, ::1] cmask * shape_in0, shape_in1 = pos.shape[0], pos.shape[1] * shape_out0, shape_out1 = shape # <<<<<<<<<<<<<< @@ -8022,7 +8018,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -8035,21 +8031,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); #endif } else { Py_ssize_t index = -1; - __pyx_t_1 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; @@ -8057,17 +8053,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } - __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_shape_out0 = __pyx_t_10; __pyx_v_shape_out1 = __pyx_t_11; - /* "pyFAI/ext/_distortion.pyx":333 + /* "pyFAI/ext/_distortion.pyx":338 * shape_out0, shape_out1 = shape * * if do_mask: # <<<<<<<<<<<<<< @@ -8077,7 +8073,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_12 = (__pyx_v_do_mask != 0); if (__pyx_t_12) { - /* "pyFAI/ext/_distortion.pyx":335 + /* "pyFAI/ext/_distortion.pyx":340 * if do_mask: * * if ((mask.shape[0] != shape_in0) or (mask.shape[1] != shape_in1)): # <<<<<<<<<<<<<< @@ -8095,22 +8091,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_L7_bool_binop_done:; if (__pyx_t_12) { - /* "pyFAI/ext/_distortion.pyx":336 + /* "pyFAI/ext/_distortion.pyx":341 * * if ((mask.shape[0] != shape_in0) or (mask.shape[1] != shape_in1)): * err = 'Mismatch between shape of detector (%s, %s) and shape of mask (%s, %s)' % (shape_in0, shape_in1, mask.shape[0], mask.shape[1]) # <<<<<<<<<<<<<< * logger.error(err) * raise RuntimeError(err) */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_mask.shape[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_mask.shape[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_mask.shape[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_mask.shape[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -8124,22 +8120,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Mismatch_between_shape_of_detect, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Mismatch_between_shape_of_detect, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_err = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_distortion.pyx":337 + /* "pyFAI/ext/_distortion.pyx":342 * if ((mask.shape[0] != shape_in0) or (mask.shape[1] != shape_in1)): * err = 'Mismatch between shape of detector (%s, %s) and shape of mask (%s, %s)' % (shape_in0, shape_in1, mask.shape[0], mask.shape[1]) * logger.error(err) # <<<<<<<<<<<<<< * raise RuntimeError(err) * else: */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -8153,78 +8149,78 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_err); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_err); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_err); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_err); __Pyx_GIVEREF(__pyx_v_err); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_distortion.pyx":338 + /* "pyFAI/ext/_distortion.pyx":343 * err = 'Mismatch between shape of detector (%s, %s) and shape of mask (%s, %s)' % (shape_in0, shape_in1, mask.shape[0], mask.shape[1]) * logger.error(err) * raise RuntimeError(err) # <<<<<<<<<<<<<< * else: * cmask = numpy.ascontiguousarray(mask, dtype=numpy.int8) */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_err); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_err); __Pyx_GIVEREF(__pyx_v_err); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":340 + /* "pyFAI/ext/_distortion.pyx":345 * raise RuntimeError(err) * else: * cmask = numpy.ascontiguousarray(mask, dtype=numpy.int8) # <<<<<<<<<<<<<< * * if offset is not None: */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(__pyx_t_3); - if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_cmask = __pyx_t_14; __pyx_t_14.memview = NULL; @@ -8234,7 +8230,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py } __pyx_L5:; - /* "pyFAI/ext/_distortion.pyx":342 + /* "pyFAI/ext/_distortion.pyx":347 * cmask = numpy.ascontiguousarray(mask, dtype=numpy.int8) * * if offset is not None: # <<<<<<<<<<<<<< @@ -8245,7 +8241,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_13 = (__pyx_t_12 != 0); if (__pyx_t_13) { - /* "pyFAI/ext/_distortion.pyx":343 + /* "pyFAI/ext/_distortion.pyx":348 * * if offset is not None: * offset0, offset1 = offset # <<<<<<<<<<<<<< @@ -8262,7 +8258,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -8275,21 +8271,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); #endif } else { Py_ssize_t index = -1; - __pyx_t_5 = PyObject_GetIter(__pyx_v_offset); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyObject_GetIter(__pyx_v_offset); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_1 = __pyx_t_9(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L11_unpacking_done; @@ -8297,12 +8293,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L11_unpacking_done:; } - __pyx_t_15 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_15 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_15 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_offset0 = __pyx_t_15; __pyx_v_offset1 = __pyx_t_16; @@ -8310,7 +8306,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py } __pyx_L9:; - /* "pyFAI/ext/_distortion.pyx":345 + /* "pyFAI/ext/_distortion.pyx":350 * offset0, offset1 = offset * * with nogil: # <<<<<<<<<<<<<< @@ -8324,7 +8320,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":346 + /* "pyFAI/ext/_distortion.pyx":351 * * with nogil: * for i in range(shape_in0): # <<<<<<<<<<<<<< @@ -8335,7 +8331,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_11; __pyx_t_10+=1) { __pyx_v_i = __pyx_t_10; - /* "pyFAI/ext/_distortion.pyx":347 + /* "pyFAI/ext/_distortion.pyx":352 * with nogil: * for i in range(shape_in0): * for j in range(shape_in1): # <<<<<<<<<<<<<< @@ -8346,7 +8342,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_j = __pyx_t_18; - /* "pyFAI/ext/_distortion.pyx":348 + /* "pyFAI/ext/_distortion.pyx":353 * for i in range(shape_in0): * for j in range(shape_in1): * if do_mask and cmask[i, j]: # <<<<<<<<<<<<<< @@ -8359,7 +8355,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_13 = __pyx_t_12; goto __pyx_L20_bool_binop_done; } - if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L13_error;} } __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_j; __pyx_t_12 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_19 * __pyx_v_cmask.strides[0]) )) + __pyx_t_20)) ))) != 0); @@ -8367,7 +8362,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_L20_bool_binop_done:; if (__pyx_t_13) { - /* "pyFAI/ext/_distortion.pyx":349 + /* "pyFAI/ext/_distortion.pyx":354 * for j in range(shape_in1): * if do_mask and cmask[i, j]: * continue # <<<<<<<<<<<<<< @@ -8377,7 +8372,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py goto __pyx_L17_continue; } - /* "pyFAI/ext/_distortion.pyx":350 + /* "pyFAI/ext/_distortion.pyx":355 * if do_mask and cmask[i, j]: * continue * A0 = pos[i, j, 0, 0] - offset0 # <<<<<<<<<<<<<< @@ -8390,7 +8385,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_7 = 0; __pyx_v_A0 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_21 * __pyx_v_pos.strides[0]) ) + __pyx_t_22 * __pyx_v_pos.strides[1]) ) + __pyx_t_8 * __pyx_v_pos.strides[2]) )) + __pyx_t_7)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":351 + /* "pyFAI/ext/_distortion.pyx":356 * continue * A0 = pos[i, j, 0, 0] - offset0 * A1 = pos[i, j, 0, 1] - offset1 # <<<<<<<<<<<<<< @@ -8403,7 +8398,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_26 = 1; __pyx_v_A1 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_23 * __pyx_v_pos.strides[0]) ) + __pyx_t_24 * __pyx_v_pos.strides[1]) ) + __pyx_t_25 * __pyx_v_pos.strides[2]) )) + __pyx_t_26)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":352 + /* "pyFAI/ext/_distortion.pyx":357 * A0 = pos[i, j, 0, 0] - offset0 * A1 = pos[i, j, 0, 1] - offset1 * B0 = pos[i, j, 1, 0] - offset0 # <<<<<<<<<<<<<< @@ -8416,7 +8411,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_30 = 0; __pyx_v_B0 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_27 * __pyx_v_pos.strides[0]) ) + __pyx_t_28 * __pyx_v_pos.strides[1]) ) + __pyx_t_29 * __pyx_v_pos.strides[2]) )) + __pyx_t_30)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":353 + /* "pyFAI/ext/_distortion.pyx":358 * A1 = pos[i, j, 0, 1] - offset1 * B0 = pos[i, j, 1, 0] - offset0 * B1 = pos[i, j, 1, 1] - offset1 # <<<<<<<<<<<<<< @@ -8429,7 +8424,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_34 = 1; __pyx_v_B1 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_31 * __pyx_v_pos.strides[0]) ) + __pyx_t_32 * __pyx_v_pos.strides[1]) ) + __pyx_t_33 * __pyx_v_pos.strides[2]) )) + __pyx_t_34)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":354 + /* "pyFAI/ext/_distortion.pyx":359 * B0 = pos[i, j, 1, 0] - offset0 * B1 = pos[i, j, 1, 1] - offset1 * C0 = pos[i, j, 2, 0] - offset0 # <<<<<<<<<<<<<< @@ -8442,7 +8437,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_38 = 0; __pyx_v_C0 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_35 * __pyx_v_pos.strides[0]) ) + __pyx_t_36 * __pyx_v_pos.strides[1]) ) + __pyx_t_37 * __pyx_v_pos.strides[2]) )) + __pyx_t_38)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":355 + /* "pyFAI/ext/_distortion.pyx":360 * B1 = pos[i, j, 1, 1] - offset1 * C0 = pos[i, j, 2, 0] - offset0 * C1 = pos[i, j, 2, 1] - offset1 # <<<<<<<<<<<<<< @@ -8455,7 +8450,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_42 = 1; __pyx_v_C1 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_39 * __pyx_v_pos.strides[0]) ) + __pyx_t_40 * __pyx_v_pos.strides[1]) ) + __pyx_t_41 * __pyx_v_pos.strides[2]) )) + __pyx_t_42)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":356 + /* "pyFAI/ext/_distortion.pyx":361 * C0 = pos[i, j, 2, 0] - offset0 * C1 = pos[i, j, 2, 1] - offset1 * D0 = pos[i, j, 3, 0] - offset0 # <<<<<<<<<<<<<< @@ -8468,7 +8463,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_46 = 0; __pyx_v_D0 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_43 * __pyx_v_pos.strides[0]) ) + __pyx_t_44 * __pyx_v_pos.strides[1]) ) + __pyx_t_45 * __pyx_v_pos.strides[2]) )) + __pyx_t_46)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":357 + /* "pyFAI/ext/_distortion.pyx":362 * C1 = pos[i, j, 2, 1] - offset1 * D0 = pos[i, j, 3, 0] - offset0 * D1 = pos[i, j, 3, 1] - offset1 # <<<<<<<<<<<<<< @@ -8481,7 +8476,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_t_50 = 1; __pyx_v_D1 = ((*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_47 * __pyx_v_pos.strides[0]) ) + __pyx_t_48 * __pyx_v_pos.strides[1]) ) + __pyx_t_49 * __pyx_v_pos.strides[2]) )) + __pyx_t_50)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":358 + /* "pyFAI/ext/_distortion.pyx":363 * D0 = pos[i, j, 3, 0] - offset0 * D1 = pos[i, j, 3, 1] - offset1 * min0 = clip( _floor_min4(A0, B0, C0, D0), 0, shape_out0) # <<<<<<<<<<<<<< @@ -8490,7 +8485,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py */ __pyx_v_min0 = __pyx_f_5pyFAI_3ext_11_distortion_clip(((int)__pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0)), 0, __pyx_v_shape_out0, 0); - /* "pyFAI/ext/_distortion.pyx":359 + /* "pyFAI/ext/_distortion.pyx":364 * D1 = pos[i, j, 3, 1] - offset1 * min0 = clip( _floor_min4(A0, B0, C0, D0), 0, shape_out0) * min1 = clip( _floor_min4(A1, B1, C1, D1), 0, shape_out1) # <<<<<<<<<<<<<< @@ -8499,7 +8494,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py */ __pyx_v_min1 = __pyx_f_5pyFAI_3ext_11_distortion_clip(((int)__pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1)), 0, __pyx_v_shape_out1, 0); - /* "pyFAI/ext/_distortion.pyx":360 + /* "pyFAI/ext/_distortion.pyx":365 * min0 = clip( _floor_min4(A0, B0, C0, D0), 0, shape_out0) * min1 = clip( _floor_min4(A1, B1, C1, D1), 0, shape_out1) * max0 = clip( _ceil_max4(A0, B0, C0, D0) + 1, 0, shape_out0) # <<<<<<<<<<<<<< @@ -8508,7 +8503,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py */ __pyx_v_max0 = __pyx_f_5pyFAI_3ext_11_distortion_clip((((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0)) + 1), 0, __pyx_v_shape_out0, 0); - /* "pyFAI/ext/_distortion.pyx":361 + /* "pyFAI/ext/_distortion.pyx":366 * min1 = clip( _floor_min4(A1, B1, C1, D1), 0, shape_out1) * max0 = clip( _ceil_max4(A0, B0, C0, D0) + 1, 0, shape_out0) * max1 = clip( _ceil_max4(A1, B1, C1, D1) + 1, 0, shape_out1) # <<<<<<<<<<<<<< @@ -8517,7 +8512,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py */ __pyx_v_max1 = __pyx_f_5pyFAI_3ext_11_distortion_clip((((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1)) + 1), 0, __pyx_v_shape_out1, 0); - /* "pyFAI/ext/_distortion.pyx":362 + /* "pyFAI/ext/_distortion.pyx":367 * max0 = clip( _ceil_max4(A0, B0, C0, D0) + 1, 0, shape_out0) * max1 = clip( _ceil_max4(A1, B1, C1, D1) + 1, 0, shape_out1) * for k in range(min0, max0): # <<<<<<<<<<<<<< @@ -8528,7 +8523,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py for (__pyx_t_52 = __pyx_v_min0; __pyx_t_52 < __pyx_t_51; __pyx_t_52+=1) { __pyx_v_k = __pyx_t_52; - /* "pyFAI/ext/_distortion.pyx":363 + /* "pyFAI/ext/_distortion.pyx":368 * max1 = clip( _ceil_max4(A1, B1, C1, D1) + 1, 0, shape_out1) * for k in range(min0, max0): * for l in range(min1, max1): # <<<<<<<<<<<<<< @@ -8539,7 +8534,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py for (__pyx_t_54 = __pyx_v_min1; __pyx_t_54 < __pyx_t_53; __pyx_t_54+=1) { __pyx_v_l = __pyx_t_54; - /* "pyFAI/ext/_distortion.pyx":364 + /* "pyFAI/ext/_distortion.pyx":369 * for k in range(min0, max0): * for l in range(min1, max1): * lut_size[k, l] += 1 # <<<<<<<<<<<<<< @@ -8556,7 +8551,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py } } - /* "pyFAI/ext/_distortion.pyx":345 + /* "pyFAI/ext/_distortion.pyx":350 * offset0, offset1 = offset * * with nogil: # <<<<<<<<<<<<<< @@ -8570,17 +8565,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py #endif goto __pyx_L14; } - __pyx_L13_error: { - #ifdef WITH_THREAD - Py_BLOCK_THREADS - #endif - goto __pyx_L1_error; - } __pyx_L14:; } } - /* "pyFAI/ext/_distortion.pyx":365 + /* "pyFAI/ext/_distortion.pyx":370 * for l in range(min1, max1): * lut_size[k, l] += 1 * return lut_size # <<<<<<<<<<<<<< @@ -8592,9 +8581,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_28calc_size(CYTHON_UNUSED Py __pyx_r = ((PyObject *)__pyx_v_lut_size); goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, @@ -8638,9 +8627,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_48__defaults__(CYTHON_UNUSED int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__defaults__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_fromslice(__Pyx_CyFunction_Defaults(__pyx_defaults7, __pyx_self)->__pyx_arg_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__Pyx_CyFunction_Defaults(__pyx_defaults7, __pyx_self)->__pyx_arg_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -8648,7 +8637,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_48__defaults__(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_2, 1, __Pyx_CyFunction_Defaults(__pyx_defaults7, __pyx_self)->__pyx_arg_offset); __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults7, __pyx_self)->__pyx_arg_offset); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -8710,7 +8699,7 @@ static PyObject *__pyx_fuse_1__pyx_pw_5pyFAI_3ext_11_distortion_31calc_size(PyOb case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -8724,7 +8713,7 @@ static PyObject *__pyx_fuse_1__pyx_pw_5pyFAI_3ext_11_distortion_31calc_size(PyOb } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_size") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_size") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -8736,10 +8725,10 @@ static PyObject *__pyx_fuse_1__pyx_pw_5pyFAI_3ext_11_distortion_31calc_size(PyOb default: goto __pyx_L5_argtuple_error; } } - __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_double(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_double(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_shape = values[1]; if (values[2]) { - __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(values[2]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(values[2]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_mask = __pyx_dynamic_args->__pyx_arg_mask; __PYX_INC_MEMVIEW(&__pyx_v_mask, 1); @@ -8748,14 +8737,14 @@ static PyObject *__pyx_fuse_1__pyx_pw_5pyFAI_3ext_11_distortion_31calc_size(PyOb } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_size", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.calc_size", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_pos.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(__pyx_self, __pyx_v_pos, __pyx_v_shape, __pyx_v_mask, __pyx_v_offset); @@ -8864,44 +8853,44 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_pybuffernd_lut_size.data = NULL; __pyx_pybuffernd_lut_size.rcbuffer = &__pyx_pybuffer_lut_size; - /* "pyFAI/ext/_distortion.pyx":326 + /* "pyFAI/ext/_distortion.pyx":331 * cdef: * int i, j, k, l, shape_out0, shape_out1, shape_in0, shape_in1, min0, min1, max0, max1 * numpy.ndarray[numpy.int32_t, ndim = 2] lut_size = numpy.zeros(shape, dtype=numpy.int32) # <<<<<<<<<<<<<< * float A0, A1, B0, B1, C0, C1, D0, D1, offset0, offset1 * bint do_mask = mask is not None */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lut_size.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_lut_size = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_lut_size.diminfo[0].strides = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lut_size.diminfo[0].shape = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_lut_size.diminfo[1].strides = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_lut_size.diminfo[1].shape = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.shape[1]; } } @@ -8909,7 +8898,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_v_lut_size = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":328 + /* "pyFAI/ext/_distortion.pyx":333 * numpy.ndarray[numpy.int32_t, ndim = 2] lut_size = numpy.zeros(shape, dtype=numpy.int32) * float A0, A1, B0, B1, C0, C1, D0, D1, offset0, offset1 * bint do_mask = mask is not None # <<<<<<<<<<<<<< @@ -8918,7 +8907,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py */ __pyx_v_do_mask = (((PyObject *) __pyx_v_mask.memview) != Py_None); - /* "pyFAI/ext/_distortion.pyx":330 + /* "pyFAI/ext/_distortion.pyx":335 * bint do_mask = mask is not None * numpy.int8_t[:, ::1] cmask * shape_in0, shape_in1 = pos.shape[0], pos.shape[1] # <<<<<<<<<<<<<< @@ -8930,7 +8919,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_v_shape_in0 = __pyx_t_7; __pyx_v_shape_in1 = __pyx_t_8; - /* "pyFAI/ext/_distortion.pyx":331 + /* "pyFAI/ext/_distortion.pyx":336 * numpy.int8_t[:, ::1] cmask * shape_in0, shape_in1 = pos.shape[0], pos.shape[1] * shape_out0, shape_out1 = shape # <<<<<<<<<<<<<< @@ -8947,7 +8936,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -8960,21 +8949,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); #endif } else { Py_ssize_t index = -1; - __pyx_t_1 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; @@ -8982,17 +8971,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } - __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_shape_out0 = __pyx_t_10; __pyx_v_shape_out1 = __pyx_t_11; - /* "pyFAI/ext/_distortion.pyx":333 + /* "pyFAI/ext/_distortion.pyx":338 * shape_out0, shape_out1 = shape * * if do_mask: # <<<<<<<<<<<<<< @@ -9002,7 +8991,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_12 = (__pyx_v_do_mask != 0); if (__pyx_t_12) { - /* "pyFAI/ext/_distortion.pyx":335 + /* "pyFAI/ext/_distortion.pyx":340 * if do_mask: * * if ((mask.shape[0] != shape_in0) or (mask.shape[1] != shape_in1)): # <<<<<<<<<<<<<< @@ -9020,22 +9009,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_L7_bool_binop_done:; if (__pyx_t_12) { - /* "pyFAI/ext/_distortion.pyx":336 + /* "pyFAI/ext/_distortion.pyx":341 * * if ((mask.shape[0] != shape_in0) or (mask.shape[1] != shape_in1)): * err = 'Mismatch between shape of detector (%s, %s) and shape of mask (%s, %s)' % (shape_in0, shape_in1, mask.shape[0], mask.shape[1]) # <<<<<<<<<<<<<< * logger.error(err) * raise RuntimeError(err) */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_mask.shape[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_mask.shape[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_mask.shape[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_mask.shape[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -9049,22 +9038,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Mismatch_between_shape_of_detect, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Mismatch_between_shape_of_detect, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_err = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_distortion.pyx":337 + /* "pyFAI/ext/_distortion.pyx":342 * if ((mask.shape[0] != shape_in0) or (mask.shape[1] != shape_in1)): * err = 'Mismatch between shape of detector (%s, %s) and shape of mask (%s, %s)' % (shape_in0, shape_in1, mask.shape[0], mask.shape[1]) * logger.error(err) # <<<<<<<<<<<<<< * raise RuntimeError(err) * else: */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -9078,78 +9067,78 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_err); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_err); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_err); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_err); __Pyx_GIVEREF(__pyx_v_err); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_distortion.pyx":338 + /* "pyFAI/ext/_distortion.pyx":343 * err = 'Mismatch between shape of detector (%s, %s) and shape of mask (%s, %s)' % (shape_in0, shape_in1, mask.shape[0], mask.shape[1]) * logger.error(err) * raise RuntimeError(err) # <<<<<<<<<<<<<< * else: * cmask = numpy.ascontiguousarray(mask, dtype=numpy.int8) */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_err); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_err); __Pyx_GIVEREF(__pyx_v_err); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":340 + /* "pyFAI/ext/_distortion.pyx":345 * raise RuntimeError(err) * else: * cmask = numpy.ascontiguousarray(mask, dtype=numpy.int8) # <<<<<<<<<<<<<< * * if offset is not None: */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_mask, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(__pyx_t_3); - if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_cmask = __pyx_t_14; __pyx_t_14.memview = NULL; @@ -9159,7 +9148,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py } __pyx_L5:; - /* "pyFAI/ext/_distortion.pyx":342 + /* "pyFAI/ext/_distortion.pyx":347 * cmask = numpy.ascontiguousarray(mask, dtype=numpy.int8) * * if offset is not None: # <<<<<<<<<<<<<< @@ -9170,7 +9159,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_13 = (__pyx_t_12 != 0); if (__pyx_t_13) { - /* "pyFAI/ext/_distortion.pyx":343 + /* "pyFAI/ext/_distortion.pyx":348 * * if offset is not None: * offset0, offset1 = offset # <<<<<<<<<<<<<< @@ -9187,7 +9176,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -9200,21 +9189,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); #endif } else { Py_ssize_t index = -1; - __pyx_t_5 = PyObject_GetIter(__pyx_v_offset); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyObject_GetIter(__pyx_v_offset); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_1 = __pyx_t_9(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L11_unpacking_done; @@ -9222,12 +9211,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L11_unpacking_done:; } - __pyx_t_15 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_15 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_15 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_offset0 = __pyx_t_15; __pyx_v_offset1 = __pyx_t_16; @@ -9235,7 +9224,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py } __pyx_L9:; - /* "pyFAI/ext/_distortion.pyx":345 + /* "pyFAI/ext/_distortion.pyx":350 * offset0, offset1 = offset * * with nogil: # <<<<<<<<<<<<<< @@ -9249,7 +9238,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":346 + /* "pyFAI/ext/_distortion.pyx":351 * * with nogil: * for i in range(shape_in0): # <<<<<<<<<<<<<< @@ -9260,7 +9249,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_11; __pyx_t_10+=1) { __pyx_v_i = __pyx_t_10; - /* "pyFAI/ext/_distortion.pyx":347 + /* "pyFAI/ext/_distortion.pyx":352 * with nogil: * for i in range(shape_in0): * for j in range(shape_in1): # <<<<<<<<<<<<<< @@ -9271,7 +9260,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_j = __pyx_t_18; - /* "pyFAI/ext/_distortion.pyx":348 + /* "pyFAI/ext/_distortion.pyx":353 * for i in range(shape_in0): * for j in range(shape_in1): * if do_mask and cmask[i, j]: # <<<<<<<<<<<<<< @@ -9284,7 +9273,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_13 = __pyx_t_12; goto __pyx_L20_bool_binop_done; } - if (unlikely(!__pyx_v_cmask.memview)) { __Pyx_RaiseUnboundMemoryviewSliceNogil("cmask"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L13_error;} } __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_j; __pyx_t_12 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_19 * __pyx_v_cmask.strides[0]) )) + __pyx_t_20)) ))) != 0); @@ -9292,7 +9280,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_L20_bool_binop_done:; if (__pyx_t_13) { - /* "pyFAI/ext/_distortion.pyx":349 + /* "pyFAI/ext/_distortion.pyx":354 * for j in range(shape_in1): * if do_mask and cmask[i, j]: * continue # <<<<<<<<<<<<<< @@ -9302,7 +9290,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py goto __pyx_L17_continue; } - /* "pyFAI/ext/_distortion.pyx":350 + /* "pyFAI/ext/_distortion.pyx":355 * if do_mask and cmask[i, j]: * continue * A0 = pos[i, j, 0, 0] - offset0 # <<<<<<<<<<<<<< @@ -9315,7 +9303,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_7 = 0; __pyx_v_A0 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_21 * __pyx_v_pos.strides[0]) ) + __pyx_t_22 * __pyx_v_pos.strides[1]) ) + __pyx_t_8 * __pyx_v_pos.strides[2]) )) + __pyx_t_7)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":351 + /* "pyFAI/ext/_distortion.pyx":356 * continue * A0 = pos[i, j, 0, 0] - offset0 * A1 = pos[i, j, 0, 1] - offset1 # <<<<<<<<<<<<<< @@ -9328,7 +9316,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_26 = 1; __pyx_v_A1 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_23 * __pyx_v_pos.strides[0]) ) + __pyx_t_24 * __pyx_v_pos.strides[1]) ) + __pyx_t_25 * __pyx_v_pos.strides[2]) )) + __pyx_t_26)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":352 + /* "pyFAI/ext/_distortion.pyx":357 * A0 = pos[i, j, 0, 0] - offset0 * A1 = pos[i, j, 0, 1] - offset1 * B0 = pos[i, j, 1, 0] - offset0 # <<<<<<<<<<<<<< @@ -9341,7 +9329,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_30 = 0; __pyx_v_B0 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_27 * __pyx_v_pos.strides[0]) ) + __pyx_t_28 * __pyx_v_pos.strides[1]) ) + __pyx_t_29 * __pyx_v_pos.strides[2]) )) + __pyx_t_30)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":353 + /* "pyFAI/ext/_distortion.pyx":358 * A1 = pos[i, j, 0, 1] - offset1 * B0 = pos[i, j, 1, 0] - offset0 * B1 = pos[i, j, 1, 1] - offset1 # <<<<<<<<<<<<<< @@ -9354,7 +9342,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_34 = 1; __pyx_v_B1 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_31 * __pyx_v_pos.strides[0]) ) + __pyx_t_32 * __pyx_v_pos.strides[1]) ) + __pyx_t_33 * __pyx_v_pos.strides[2]) )) + __pyx_t_34)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":354 + /* "pyFAI/ext/_distortion.pyx":359 * B0 = pos[i, j, 1, 0] - offset0 * B1 = pos[i, j, 1, 1] - offset1 * C0 = pos[i, j, 2, 0] - offset0 # <<<<<<<<<<<<<< @@ -9367,7 +9355,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_38 = 0; __pyx_v_C0 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_35 * __pyx_v_pos.strides[0]) ) + __pyx_t_36 * __pyx_v_pos.strides[1]) ) + __pyx_t_37 * __pyx_v_pos.strides[2]) )) + __pyx_t_38)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":355 + /* "pyFAI/ext/_distortion.pyx":360 * B1 = pos[i, j, 1, 1] - offset1 * C0 = pos[i, j, 2, 0] - offset0 * C1 = pos[i, j, 2, 1] - offset1 # <<<<<<<<<<<<<< @@ -9380,7 +9368,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_42 = 1; __pyx_v_C1 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_39 * __pyx_v_pos.strides[0]) ) + __pyx_t_40 * __pyx_v_pos.strides[1]) ) + __pyx_t_41 * __pyx_v_pos.strides[2]) )) + __pyx_t_42)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":356 + /* "pyFAI/ext/_distortion.pyx":361 * C0 = pos[i, j, 2, 0] - offset0 * C1 = pos[i, j, 2, 1] - offset1 * D0 = pos[i, j, 3, 0] - offset0 # <<<<<<<<<<<<<< @@ -9393,7 +9381,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_46 = 0; __pyx_v_D0 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_43 * __pyx_v_pos.strides[0]) ) + __pyx_t_44 * __pyx_v_pos.strides[1]) ) + __pyx_t_45 * __pyx_v_pos.strides[2]) )) + __pyx_t_46)) ))) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":357 + /* "pyFAI/ext/_distortion.pyx":362 * C1 = pos[i, j, 2, 1] - offset1 * D0 = pos[i, j, 3, 0] - offset0 * D1 = pos[i, j, 3, 1] - offset1 # <<<<<<<<<<<<<< @@ -9406,7 +9394,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_t_50 = 1; __pyx_v_D1 = ((*((double *) ( /* dim=3 */ ((char *) (((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_47 * __pyx_v_pos.strides[0]) ) + __pyx_t_48 * __pyx_v_pos.strides[1]) ) + __pyx_t_49 * __pyx_v_pos.strides[2]) )) + __pyx_t_50)) ))) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":358 + /* "pyFAI/ext/_distortion.pyx":363 * D0 = pos[i, j, 3, 0] - offset0 * D1 = pos[i, j, 3, 1] - offset1 * min0 = clip( _floor_min4(A0, B0, C0, D0), 0, shape_out0) # <<<<<<<<<<<<<< @@ -9415,7 +9403,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py */ __pyx_v_min0 = __pyx_f_5pyFAI_3ext_11_distortion_clip(((int)__pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0)), 0, __pyx_v_shape_out0, 0); - /* "pyFAI/ext/_distortion.pyx":359 + /* "pyFAI/ext/_distortion.pyx":364 * D1 = pos[i, j, 3, 1] - offset1 * min0 = clip( _floor_min4(A0, B0, C0, D0), 0, shape_out0) * min1 = clip( _floor_min4(A1, B1, C1, D1), 0, shape_out1) # <<<<<<<<<<<<<< @@ -9424,7 +9412,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py */ __pyx_v_min1 = __pyx_f_5pyFAI_3ext_11_distortion_clip(((int)__pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1)), 0, __pyx_v_shape_out1, 0); - /* "pyFAI/ext/_distortion.pyx":360 + /* "pyFAI/ext/_distortion.pyx":365 * min0 = clip( _floor_min4(A0, B0, C0, D0), 0, shape_out0) * min1 = clip( _floor_min4(A1, B1, C1, D1), 0, shape_out1) * max0 = clip( _ceil_max4(A0, B0, C0, D0) + 1, 0, shape_out0) # <<<<<<<<<<<<<< @@ -9433,7 +9421,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py */ __pyx_v_max0 = __pyx_f_5pyFAI_3ext_11_distortion_clip((((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0)) + 1), 0, __pyx_v_shape_out0, 0); - /* "pyFAI/ext/_distortion.pyx":361 + /* "pyFAI/ext/_distortion.pyx":366 * min1 = clip( _floor_min4(A1, B1, C1, D1), 0, shape_out1) * max0 = clip( _ceil_max4(A0, B0, C0, D0) + 1, 0, shape_out0) * max1 = clip( _ceil_max4(A1, B1, C1, D1) + 1, 0, shape_out1) # <<<<<<<<<<<<<< @@ -9442,7 +9430,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py */ __pyx_v_max1 = __pyx_f_5pyFAI_3ext_11_distortion_clip((((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1)) + 1), 0, __pyx_v_shape_out1, 0); - /* "pyFAI/ext/_distortion.pyx":362 + /* "pyFAI/ext/_distortion.pyx":367 * max0 = clip( _ceil_max4(A0, B0, C0, D0) + 1, 0, shape_out0) * max1 = clip( _ceil_max4(A1, B1, C1, D1) + 1, 0, shape_out1) * for k in range(min0, max0): # <<<<<<<<<<<<<< @@ -9453,7 +9441,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py for (__pyx_t_52 = __pyx_v_min0; __pyx_t_52 < __pyx_t_51; __pyx_t_52+=1) { __pyx_v_k = __pyx_t_52; - /* "pyFAI/ext/_distortion.pyx":363 + /* "pyFAI/ext/_distortion.pyx":368 * max1 = clip( _ceil_max4(A1, B1, C1, D1) + 1, 0, shape_out1) * for k in range(min0, max0): * for l in range(min1, max1): # <<<<<<<<<<<<<< @@ -9464,7 +9452,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py for (__pyx_t_54 = __pyx_v_min1; __pyx_t_54 < __pyx_t_53; __pyx_t_54+=1) { __pyx_v_l = __pyx_t_54; - /* "pyFAI/ext/_distortion.pyx":364 + /* "pyFAI/ext/_distortion.pyx":369 * for k in range(min0, max0): * for l in range(min1, max1): * lut_size[k, l] += 1 # <<<<<<<<<<<<<< @@ -9481,7 +9469,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py } } - /* "pyFAI/ext/_distortion.pyx":345 + /* "pyFAI/ext/_distortion.pyx":350 * offset0, offset1 = offset * * with nogil: # <<<<<<<<<<<<<< @@ -9495,17 +9483,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py #endif goto __pyx_L14; } - __pyx_L13_error: { - #ifdef WITH_THREAD - Py_BLOCK_THREADS - #endif - goto __pyx_L1_error; - } __pyx_L14:; } } - /* "pyFAI/ext/_distortion.pyx":365 + /* "pyFAI/ext/_distortion.pyx":370 * for l in range(min1, max1): * lut_size[k, l] += 1 * return lut_size # <<<<<<<<<<<<<< @@ -9517,9 +9499,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py __pyx_r = ((PyObject *)__pyx_v_lut_size); goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, @@ -9553,9 +9535,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":371 - * @cython.boundscheck(False) - * @cython.cdivision(True) +/* "pyFAI/ext/_distortion.pyx":378 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_LUT(float[:, :, :, ::1] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """ @@ -9563,7 +9545,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_30calc_size(CYTHON_UNUSED Py /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_9calc_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_8calc_LUT[] = "\n @param pos: 4D position array\n @param shape: output shape\n @param bin_size: number of input element per output element (numpy array)\n @param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel\n @param mask: arry with bad pixels marked as True\n @return: look-up table\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_8calc_LUT[] = "calc_LUT(__Pyx_memviewslice pos, shape, bin_size, max_pixel_size, __Pyx_memviewslice mask=None)\n\n :param pos: 4D position array\n :param shape: output shape\n :param bin_size: number of input element per output element (numpy array)\n :param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel\n :param mask: arry with bad pixels marked as True\n :return: look-up table\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_9calc_LUT = {"calc_LUT", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_9calc_LUT, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_8calc_LUT}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_9calc_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_pos = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -9600,17 +9582,17 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_9calc_LUT(PyObject *__pyx_se case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bin_size)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_max_pixel_size)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (kw_args > 0) { @@ -9619,7 +9601,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_9calc_LUT(PyObject *__pyx_se } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_LUT") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_LUT") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -9632,12 +9614,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_9calc_LUT(PyObject *__pyx_se default: goto __pyx_L5_argtuple_error; } } - __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_shape = values[1]; __pyx_v_bin_size = values[2]; __pyx_v_max_pixel_size = values[3]; if (values[4]) { - __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[4]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[4]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_mask = __pyx_k__18; __PYX_INC_MEMVIEW(&__pyx_v_mask, 1); @@ -9645,14 +9627,14 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_9calc_LUT(PyObject *__pyx_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_LUT", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.calc_LUT", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_pos.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(__pyx_self, __pyx_v_pos, __pyx_v_shape, __pyx_v_bin_size, __pyx_v_max_pixel_size, __pyx_v_mask); @@ -9820,7 +9802,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb __pyx_pybuffernd_tmp_ary.data = NULL; __pyx_pybuffernd_tmp_ary.rcbuffer = &__pyx_pybuffer_tmp_ary; - /* "pyFAI/ext/_distortion.pyx":384 + /* "pyFAI/ext/_distortion.pyx":391 * int i, j, ms, ml, ns, nl, shape0, shape1, delta0, delta1 * int offset0, offset1, box_size0, box_size1, size, k * numpy.int32_t idx = 0 # <<<<<<<<<<<<<< @@ -9829,7 +9811,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb */ __pyx_v_idx = 0; - /* "pyFAI/ext/_distortion.pyx":385 + /* "pyFAI/ext/_distortion.pyx":392 * int offset0, offset1, box_size0, box_size1, size, k * numpy.int32_t idx = 0 * int err_cnt = 0 # <<<<<<<<<<<<<< @@ -9838,7 +9820,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb */ __pyx_v_err_cnt = 0; - /* "pyFAI/ext/_distortion.pyx":389 + /* "pyFAI/ext/_distortion.pyx":396 * float area, value, foffset0, foffset1 * lut_point[:, :, :] lut * bint do_mask = mask is not None # <<<<<<<<<<<<<< @@ -9847,14 +9829,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb */ __pyx_v_do_mask = (((PyObject *) __pyx_v_mask.memview) != Py_None); - /* "pyFAI/ext/_distortion.pyx":391 + /* "pyFAI/ext/_distortion.pyx":398 * bint do_mask = mask is not None * float[:, ::1] buffer * size = bin_size.max() # <<<<<<<<<<<<<< * shape0, shape1 = shape * if do_mask: */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_size, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_size, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -9867,18 +9849,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":392 + /* "pyFAI/ext/_distortion.pyx":399 * float[:, ::1] buffer * size = bin_size.max() * shape0, shape1 = shape # <<<<<<<<<<<<<< @@ -9895,7 +9877,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -9908,21 +9890,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else - __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); #endif } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; @@ -9930,17 +9912,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_shape0 = __pyx_t_4; __pyx_v_shape1 = __pyx_t_6; - /* "pyFAI/ext/_distortion.pyx":393 + /* "pyFAI/ext/_distortion.pyx":400 * size = bin_size.max() * shape0, shape1 = shape * if do_mask: # <<<<<<<<<<<<<< @@ -9950,7 +9932,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb __pyx_t_7 = (__pyx_v_do_mask != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":394 + /* "pyFAI/ext/_distortion.pyx":401 * shape0, shape1 = shape * if do_mask: * assert shape0 == mask.shape[0], "mask shape dim0" # <<<<<<<<<<<<<< @@ -9961,12 +9943,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_shape0 == (__pyx_v_mask.shape[0])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_mask_shape_dim0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_distortion.pyx":395 + /* "pyFAI/ext/_distortion.pyx":402 * if do_mask: * assert shape0 == mask.shape[0], "mask shape dim0" * assert shape1 == mask.shape[1], "mask shape dim1" # <<<<<<<<<<<<<< @@ -9977,7 +9959,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_shape1 == (__pyx_v_mask.shape[1])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_mask_shape_dim1); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif @@ -9985,7 +9967,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb } __pyx_L5:; - /* "pyFAI/ext/_distortion.pyx":396 + /* "pyFAI/ext/_distortion.pyx":403 * assert shape0 == mask.shape[0], "mask shape dim0" * assert shape1 == mask.shape[1], "mask shape dim1" * delta0, delta1 = max_pixel_size # <<<<<<<<<<<<<< @@ -10002,7 +9984,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -10015,21 +9997,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); #endif } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_v_max_pixel_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetIter(__pyx_v_max_pixel_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_1 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L7_unpacking_done; @@ -10037,30 +10019,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L7_unpacking_done:; } - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_delta0 = __pyx_t_6; __pyx_v_delta1 = __pyx_t_4; - /* "pyFAI/ext/_distortion.pyx":397 + /* "pyFAI/ext/_distortion.pyx":404 * assert shape1 == mask.shape[1], "mask shape dim1" * delta0, delta1 = max_pixel_size * cdef int[:, :] outMax = view.array(shape=(shape0, shape1), itemsize=sizeof(int), format="i") # <<<<<<<<<<<<<< * outMax[:, :] = 0 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) */ - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_shape0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_shape0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -10068,24 +10050,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_8calc_LUT(CYTHON_UNUSED PyOb __Pyx_GIVEREF(__pyx_t_3); __pyx_t_2 = 0; __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyInt_FromSize_t((sizeof(int))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_FromSize_t((sizeof(int))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_itemsize, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_itemsize, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_format, __pyx_n_s_i) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_format, __pyx_n_s_i) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_t_8); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_outMax = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_distortion.pyx":398 + /* "pyFAI/ext/_distortion.pyx":405 * delta0, delta1 = max_pixel_size * cdef int[:, :] outMax = view.array(shape=(shape0, shape1), itemsize=sizeof(int), format="i") * outMax[:, :] = 0 # <<<<<<<<<<<<<< @@ -10128,23 +10110,23 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); - /* "pyFAI/ext/_distortion.pyx":399 + /* "pyFAI/ext/_distortion.pyx":406 * cdef int[:, :] outMax = view.array(shape=(shape0, shape1), itemsize=sizeof(int), format="i") * outMax[:, :] = 0 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) # <<<<<<<<<<<<<< * buffer_nbytes = buffer.nbytes * if (size == 0): # fix 271 */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); @@ -10152,48 +10134,48 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __Pyx_GIVEREF(__pyx_t_3); __pyx_t_8 = 0; __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_11); - if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_buffer = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; - /* "pyFAI/ext/_distortion.pyx":400 + /* "pyFAI/ext/_distortion.pyx":407 * outMax[:, :] = 0 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * buffer_nbytes = buffer.nbytes # <<<<<<<<<<<<<< * if (size == 0): # fix 271 * raise RuntimeError("The look-up table has dimension 0 which is a non-sense." */ - __pyx_t_11 = __pyx_memoryview_fromslice(__pyx_v_buffer, 2, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __pyx_memoryview_fromslice(__pyx_v_buffer, 2, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_buffer_nbytes = __pyx_t_2; __pyx_t_2 = 0; - /* "pyFAI/ext/_distortion.pyx":401 + /* "pyFAI/ext/_distortion.pyx":408 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * buffer_nbytes = buffer.nbytes * if (size == 0): # fix 271 # <<<<<<<<<<<<<< @@ -10203,52 +10185,52 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_7 = ((__pyx_v_size == 0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":403 + /* "pyFAI/ext/_distortion.pyx":410 * if (size == 0): # fix 271 * raise RuntimeError("The look-up table has dimension 0 which is a non-sense." * + "Did you mask out all pixel or is your image out of the geometry range ?") # <<<<<<<<<<<<<< * lut = view.array(shape=(shape0, shape1, size), itemsize=sizeof(lut_point), format="if") * lut_total_size = shape0 * shape1 * size * sizeof(lut_point) */ - __pyx_t_2 = PyNumber_Add(__pyx_kp_s_The_look_up_table_has_dimension, __pyx_kp_s_Did_you_mask_out_all_pixel_or_is); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Add(__pyx_kp_s_The_look_up_table_has_dimension, __pyx_kp_s_Did_you_mask_out_all_pixel_or_is); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - /* "pyFAI/ext/_distortion.pyx":402 + /* "pyFAI/ext/_distortion.pyx":409 * buffer_nbytes = buffer.nbytes * if (size == 0): # fix 271 * raise RuntimeError("The look-up table has dimension 0 which is a non-sense." # <<<<<<<<<<<<<< * + "Did you mask out all pixel or is your image out of the geometry range ?") * lut = view.array(shape=(shape0, shape1, size), itemsize=sizeof(lut_point), format="if") */ - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "pyFAI/ext/_distortion.pyx":404 + /* "pyFAI/ext/_distortion.pyx":411 * raise RuntimeError("The look-up table has dimension 0 which is a non-sense." * + "Did you mask out all pixel or is your image out of the geometry range ?") * lut = view.array(shape=(shape0, shape1, size), itemsize=sizeof(lut_point), format="if") # <<<<<<<<<<<<<< * lut_total_size = shape0 * shape1 * size * sizeof(lut_point) * memset(&lut[0, 0, 0], 0, lut_total_size) */ - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); @@ -10259,36 +10241,36 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_11 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyInt_FromSize_t((sizeof(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_FromSize_t((sizeof(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_itemsize, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_itemsize, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_format, __pyx_n_s_if) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_format, __pyx_n_s_if) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point(__pyx_t_8); - if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_lut = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; - /* "pyFAI/ext/_distortion.pyx":405 + /* "pyFAI/ext/_distortion.pyx":412 * + "Did you mask out all pixel or is your image out of the geometry range ?") * lut = view.array(shape=(shape0, shape1, size), itemsize=sizeof(lut_point), format="if") * lut_total_size = shape0 * shape1 * size * sizeof(lut_point) # <<<<<<<<<<<<<< * memset(&lut[0, 0, 0], 0, lut_total_size) * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], lut_total_size / 1.0e6)) */ - __pyx_t_8 = __Pyx_PyInt_FromSize_t((((__pyx_v_shape0 * __pyx_v_shape1) * __pyx_v_size) * (sizeof(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point)))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_FromSize_t((((__pyx_v_shape0 * __pyx_v_shape1) * __pyx_v_size) * (sizeof(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point)))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_v_lut_total_size = __pyx_t_8; __pyx_t_8 = 0; - /* "pyFAI/ext/_distortion.pyx":406 + /* "pyFAI/ext/_distortion.pyx":413 * lut = view.array(shape=(shape0, shape1, size), itemsize=sizeof(lut_point), format="if") * lut_total_size = shape0 * shape1 * size * sizeof(lut_point) * memset(&lut[0, 0, 0], 0, lut_total_size) # <<<<<<<<<<<<<< @@ -10298,30 +10280,30 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __pyx_t_17 = __Pyx_PyInt_As_size_t(__pyx_v_lut_total_size); if (unlikely((__pyx_t_17 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyInt_As_size_t(__pyx_v_lut_total_size); if (unlikely((__pyx_t_17 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} memset((&(*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_14 * __pyx_v_lut.strides[0]) ) + __pyx_t_15 * __pyx_v_lut.strides[1]) ) + __pyx_t_16 * __pyx_v_lut.strides[2]) )))), 0, __pyx_t_17); - /* "pyFAI/ext/_distortion.pyx":407 + /* "pyFAI/ext/_distortion.pyx":414 * lut_total_size = shape0 * shape1 * size * sizeof(lut_point) * memset(&lut[0, 0, 0], 0, lut_total_size) * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], lut_total_size / 1.0e6)) # <<<<<<<<<<<<<< * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (delta1, delta0, size)) * with nogil: */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_lut.shape[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_lut.shape[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_lut.shape[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_lut.shape[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_11 = PyInt_FromSsize_t((__pyx_v_lut.shape[2])); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyInt_FromSsize_t((__pyx_v_lut.shape[2])); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_18 = __Pyx_PyNumber_Divide(__pyx_v_lut_total_size, __pyx_float_1_0e6); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_PyNumber_Divide(__pyx_v_lut_total_size, __pyx_float_1_0e6); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_18); - __pyx_t_19 = PyTuple_New(4); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = PyTuple_New(4); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -10335,7 +10317,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_3 = 0; __pyx_t_11 = 0; __pyx_t_18 = 0; - __pyx_t_18 = __Pyx_PyString_Format(__pyx_kp_s_LUT_shape_i_i_i_3f_MByte, __pyx_t_19); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_PyString_Format(__pyx_kp_s_LUT_shape_i_i_i_3f_MByte, __pyx_t_19); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_19 = NULL; @@ -10349,42 +10331,42 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } } if (!__pyx_t_19) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_18); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_18); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_GOTREF(__pyx_t_8); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_19); __Pyx_GIVEREF(__pyx_t_19); __pyx_t_19 = NULL; PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_18); __Pyx_GIVEREF(__pyx_t_18); __pyx_t_18 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/_distortion.pyx":408 + /* "pyFAI/ext/_distortion.pyx":415 * memset(&lut[0, 0, 0], 0, lut_total_size) * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], lut_total_size / 1.0e6)) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (delta1, delta0, size)) # <<<<<<<<<<<<<< * with nogil: * # i,j, idx are indexes of the raw image uncorrected */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_18 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_18); - __pyx_t_19 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_19); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -10395,7 +10377,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_1 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - __pyx_t_19 = __Pyx_PyString_Format(__pyx_kp_s_Max_pixel_size_ix_i_Max_source_p, __pyx_t_3); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __Pyx_PyString_Format(__pyx_kp_s_Max_pixel_size_ix_i_Max_source_p, __pyx_t_3); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -10409,24 +10391,24 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } } if (!__pyx_t_3) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_19); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_19); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_GOTREF(__pyx_t_8); } else { - __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_19); __Pyx_GIVEREF(__pyx_t_19); __pyx_t_19 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_18, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_18, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/_distortion.pyx":409 + /* "pyFAI/ext/_distortion.pyx":416 * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], lut_total_size / 1.0e6)) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (delta1, delta0, size)) * with nogil: # <<<<<<<<<<<<<< @@ -10440,7 +10422,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":411 + /* "pyFAI/ext/_distortion.pyx":418 * with nogil: * # i,j, idx are indexes of the raw image uncorrected * for i in range(shape0): # <<<<<<<<<<<<<< @@ -10451,7 +10433,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_4; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "pyFAI/ext/_distortion.pyx":412 + /* "pyFAI/ext/_distortion.pyx":419 * # i,j, idx are indexes of the raw image uncorrected * for i in range(shape0): * for j in range(shape1): # <<<<<<<<<<<<<< @@ -10462,7 +10444,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) { __pyx_v_j = __pyx_t_21; - /* "pyFAI/ext/_distortion.pyx":413 + /* "pyFAI/ext/_distortion.pyx":420 * for i in range(shape0): * for j in range(shape1): * if do_mask and mask[i, j]: # <<<<<<<<<<<<<< @@ -10482,7 +10464,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_L17_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":414 + /* "pyFAI/ext/_distortion.pyx":421 * for j in range(shape1): * if do_mask and mask[i, j]: * continue # <<<<<<<<<<<<<< @@ -10492,7 +10474,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; goto __pyx_L14_continue; } - /* "pyFAI/ext/_distortion.pyx":416 + /* "pyFAI/ext/_distortion.pyx":423 * continue * #reset buffer * buffer[:, :] = 0.0 # <<<<<<<<<<<<<< @@ -10525,7 +10507,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __PYX_XDEC_MEMVIEW(&__pyx_t_25, 0); - /* "pyFAI/ext/_distortion.pyx":418 + /* "pyFAI/ext/_distortion.pyx":425 * buffer[:, :] = 0.0 * * A0 = pos[i, j, 0, 0] # <<<<<<<<<<<<<< @@ -10538,7 +10520,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_29 = 0; __pyx_v_A0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_26 * __pyx_v_pos.strides[0]) ) + __pyx_t_27 * __pyx_v_pos.strides[1]) ) + __pyx_t_28 * __pyx_v_pos.strides[2]) )) + __pyx_t_29)) ))); - /* "pyFAI/ext/_distortion.pyx":419 + /* "pyFAI/ext/_distortion.pyx":426 * * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] # <<<<<<<<<<<<<< @@ -10551,7 +10533,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_33 = 1; __pyx_v_A1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_30 * __pyx_v_pos.strides[0]) ) + __pyx_t_31 * __pyx_v_pos.strides[1]) ) + __pyx_t_32 * __pyx_v_pos.strides[2]) )) + __pyx_t_33)) ))); - /* "pyFAI/ext/_distortion.pyx":420 + /* "pyFAI/ext/_distortion.pyx":427 * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] # <<<<<<<<<<<<<< @@ -10564,7 +10546,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_37 = 0; __pyx_v_B0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_34 * __pyx_v_pos.strides[0]) ) + __pyx_t_35 * __pyx_v_pos.strides[1]) ) + __pyx_t_36 * __pyx_v_pos.strides[2]) )) + __pyx_t_37)) ))); - /* "pyFAI/ext/_distortion.pyx":421 + /* "pyFAI/ext/_distortion.pyx":428 * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] # <<<<<<<<<<<<<< @@ -10577,7 +10559,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_41 = 1; __pyx_v_B1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_38 * __pyx_v_pos.strides[0]) ) + __pyx_t_39 * __pyx_v_pos.strides[1]) ) + __pyx_t_40 * __pyx_v_pos.strides[2]) )) + __pyx_t_41)) ))); - /* "pyFAI/ext/_distortion.pyx":422 + /* "pyFAI/ext/_distortion.pyx":429 * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] # <<<<<<<<<<<<<< @@ -10590,7 +10572,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_45 = 0; __pyx_v_C0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_42 * __pyx_v_pos.strides[0]) ) + __pyx_t_43 * __pyx_v_pos.strides[1]) ) + __pyx_t_44 * __pyx_v_pos.strides[2]) )) + __pyx_t_45)) ))); - /* "pyFAI/ext/_distortion.pyx":423 + /* "pyFAI/ext/_distortion.pyx":430 * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] # <<<<<<<<<<<<<< @@ -10603,7 +10585,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_49 = 1; __pyx_v_C1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_46 * __pyx_v_pos.strides[0]) ) + __pyx_t_47 * __pyx_v_pos.strides[1]) ) + __pyx_t_48 * __pyx_v_pos.strides[2]) )) + __pyx_t_49)) ))); - /* "pyFAI/ext/_distortion.pyx":424 + /* "pyFAI/ext/_distortion.pyx":431 * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] # <<<<<<<<<<<<<< @@ -10616,7 +10598,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_53 = 0; __pyx_v_D0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_50 * __pyx_v_pos.strides[0]) ) + __pyx_t_51 * __pyx_v_pos.strides[1]) ) + __pyx_t_52 * __pyx_v_pos.strides[2]) )) + __pyx_t_53)) ))); - /* "pyFAI/ext/_distortion.pyx":425 + /* "pyFAI/ext/_distortion.pyx":432 * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] # <<<<<<<<<<<<<< @@ -10629,7 +10611,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_57 = 1; __pyx_v_D1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_54 * __pyx_v_pos.strides[0]) ) + __pyx_t_55 * __pyx_v_pos.strides[1]) ) + __pyx_t_56 * __pyx_v_pos.strides[2]) )) + __pyx_t_57)) ))); - /* "pyFAI/ext/_distortion.pyx":426 + /* "pyFAI/ext/_distortion.pyx":433 * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] * foffset0 = _floor_min4(A0, B0, C0, D0) # <<<<<<<<<<<<<< @@ -10638,7 +10620,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_foffset0 = __pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0); - /* "pyFAI/ext/_distortion.pyx":427 + /* "pyFAI/ext/_distortion.pyx":434 * D1 = pos[i, j, 3, 1] * foffset0 = _floor_min4(A0, B0, C0, D0) * foffset1 = _floor_min4(A1, B1, C1, D1) # <<<<<<<<<<<<<< @@ -10647,7 +10629,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_foffset1 = __pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1); - /* "pyFAI/ext/_distortion.pyx":428 + /* "pyFAI/ext/_distortion.pyx":435 * foffset0 = _floor_min4(A0, B0, C0, D0) * foffset1 = _floor_min4(A1, B1, C1, D1) * offset0 = ( foffset0) # <<<<<<<<<<<<<< @@ -10656,7 +10638,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_offset0 = ((int)__pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":429 + /* "pyFAI/ext/_distortion.pyx":436 * foffset1 = _floor_min4(A1, B1, C1, D1) * offset0 = ( foffset0) * offset1 = ( foffset1) # <<<<<<<<<<<<<< @@ -10665,7 +10647,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_offset1 = ((int)__pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":430 + /* "pyFAI/ext/_distortion.pyx":437 * offset0 = ( foffset0) * offset1 = ( foffset1) * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 # <<<<<<<<<<<<<< @@ -10674,7 +10656,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_box_size0 = (((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0)) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":431 + /* "pyFAI/ext/_distortion.pyx":438 * offset1 = ( foffset1) * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 * box_size1 = ( _ceil_max4(A1, B1, C1, D1)) - offset1 # <<<<<<<<<<<<<< @@ -10683,7 +10665,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_box_size1 = (((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1)) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":432 + /* "pyFAI/ext/_distortion.pyx":439 * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 * box_size1 = ( _ceil_max4(A1, B1, C1, D1)) - offset1 * if (box_size0 > delta0) or (box_size1 > delta1): # <<<<<<<<<<<<<< @@ -10701,7 +10683,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L20_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":434 + /* "pyFAI/ext/_distortion.pyx":441 * if (box_size0 > delta0) or (box_size1 > delta1): * # Increase size of the buffer * delta0 = offset0 if offset0 > delta0 else delta0 # <<<<<<<<<<<<<< @@ -10715,7 +10697,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_delta0 = __pyx_t_58; - /* "pyFAI/ext/_distortion.pyx":435 + /* "pyFAI/ext/_distortion.pyx":442 * # Increase size of the buffer * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 # <<<<<<<<<<<<<< @@ -10729,7 +10711,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_delta1 = __pyx_t_58; - /* "pyFAI/ext/_distortion.pyx":436 + /* "pyFAI/ext/_distortion.pyx":443 * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: # <<<<<<<<<<<<<< @@ -10742,23 +10724,23 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":437 + /* "pyFAI/ext/_distortion.pyx":444 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: * buffer = numpy.zeros((delta0, delta1), dtype=numpy.float32) # <<<<<<<<<<<<<< * * A0 -= foffset0 */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_18 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_18 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_18); - __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); @@ -10766,27 +10748,27 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_GIVEREF(__pyx_t_18); __pyx_t_8 = 0; __pyx_t_18 = 0; - __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_19); __Pyx_GIVEREF(__pyx_t_19); __pyx_t_19 = 0; - __pyx_t_19 = PyDict_New(); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_19 = PyDict_New(); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_19); - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_19, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + if (PyDict_SetItem(__pyx_t_19, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_18, __pyx_t_19); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_18, __pyx_t_19); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_3); - if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L25_error;} + if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L25_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_buffer, 1); __pyx_v_buffer = __pyx_t_12; @@ -10794,7 +10776,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_12.data = NULL; } - /* "pyFAI/ext/_distortion.pyx":436 + /* "pyFAI/ext/_distortion.pyx":443 * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: # <<<<<<<<<<<<<< @@ -10821,7 +10803,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L19:; - /* "pyFAI/ext/_distortion.pyx":439 + /* "pyFAI/ext/_distortion.pyx":446 * buffer = numpy.zeros((delta0, delta1), dtype=numpy.float32) * * A0 -= foffset0 # <<<<<<<<<<<<<< @@ -10830,7 +10812,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A0 = (__pyx_v_A0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":440 + /* "pyFAI/ext/_distortion.pyx":447 * * A0 -= foffset0 * A1 -= foffset1 # <<<<<<<<<<<<<< @@ -10839,7 +10821,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A1 = (__pyx_v_A1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":441 + /* "pyFAI/ext/_distortion.pyx":448 * A0 -= foffset0 * A1 -= foffset1 * B0 -= foffset0 # <<<<<<<<<<<<<< @@ -10848,7 +10830,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B0 = (__pyx_v_B0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":442 + /* "pyFAI/ext/_distortion.pyx":449 * A1 -= foffset1 * B0 -= foffset0 * B1 -= foffset1 # <<<<<<<<<<<<<< @@ -10857,7 +10839,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B1 = (__pyx_v_B1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":443 + /* "pyFAI/ext/_distortion.pyx":450 * B0 -= foffset0 * B1 -= foffset1 * C0 -= foffset0 # <<<<<<<<<<<<<< @@ -10866,7 +10848,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C0 = (__pyx_v_C0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":444 + /* "pyFAI/ext/_distortion.pyx":451 * B1 -= foffset1 * C0 -= foffset0 * C1 -= foffset1 # <<<<<<<<<<<<<< @@ -10875,7 +10857,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C1 = (__pyx_v_C1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":445 + /* "pyFAI/ext/_distortion.pyx":452 * C0 -= foffset0 * C1 -= foffset1 * D0 -= foffset0 # <<<<<<<<<<<<<< @@ -10884,7 +10866,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D0 = (__pyx_v_D0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":446 + /* "pyFAI/ext/_distortion.pyx":453 * C1 -= foffset1 * D0 -= foffset0 * D1 -= foffset1 # <<<<<<<<<<<<<< @@ -10893,7 +10875,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D1 = (__pyx_v_D1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":447 + /* "pyFAI/ext/_distortion.pyx":454 * D0 -= foffset0 * D1 -= foffset1 * if B0 != A0: # <<<<<<<<<<<<<< @@ -10903,7 +10885,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_B0 != __pyx_v_A0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":448 + /* "pyFAI/ext/_distortion.pyx":455 * D1 -= foffset1 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) # <<<<<<<<<<<<<< @@ -10912,7 +10894,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pAB = ((__pyx_v_B1 - __pyx_v_A1) / (__pyx_v_B0 - __pyx_v_A0)); - /* "pyFAI/ext/_distortion.pyx":449 + /* "pyFAI/ext/_distortion.pyx":456 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) * cAB = A1 - pAB * A0 # <<<<<<<<<<<<<< @@ -10924,7 +10906,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":451 + /* "pyFAI/ext/_distortion.pyx":458 * cAB = A1 - pAB * A0 * else: * pAB = cAB = 0.0 # <<<<<<<<<<<<<< @@ -10936,7 +10918,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L27:; - /* "pyFAI/ext/_distortion.pyx":452 + /* "pyFAI/ext/_distortion.pyx":459 * else: * pAB = cAB = 0.0 * if C0 != B0: # <<<<<<<<<<<<<< @@ -10946,7 +10928,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_C0 != __pyx_v_B0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":453 + /* "pyFAI/ext/_distortion.pyx":460 * pAB = cAB = 0.0 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) # <<<<<<<<<<<<<< @@ -10955,7 +10937,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pBC = ((__pyx_v_C1 - __pyx_v_B1) / (__pyx_v_C0 - __pyx_v_B0)); - /* "pyFAI/ext/_distortion.pyx":454 + /* "pyFAI/ext/_distortion.pyx":461 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) * cBC = B1 - pBC * B0 # <<<<<<<<<<<<<< @@ -10967,7 +10949,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":456 + /* "pyFAI/ext/_distortion.pyx":463 * cBC = B1 - pBC * B0 * else: * pBC = cBC = 0.0 # <<<<<<<<<<<<<< @@ -10979,7 +10961,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L28:; - /* "pyFAI/ext/_distortion.pyx":457 + /* "pyFAI/ext/_distortion.pyx":464 * else: * pBC = cBC = 0.0 * if D0 != C0: # <<<<<<<<<<<<<< @@ -10989,7 +10971,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_D0 != __pyx_v_C0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":458 + /* "pyFAI/ext/_distortion.pyx":465 * pBC = cBC = 0.0 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) # <<<<<<<<<<<<<< @@ -10998,7 +10980,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pCD = ((__pyx_v_D1 - __pyx_v_C1) / (__pyx_v_D0 - __pyx_v_C0)); - /* "pyFAI/ext/_distortion.pyx":459 + /* "pyFAI/ext/_distortion.pyx":466 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) * cCD = C1 - pCD * C0 # <<<<<<<<<<<<<< @@ -11010,7 +10992,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":461 + /* "pyFAI/ext/_distortion.pyx":468 * cCD = C1 - pCD * C0 * else: * pCD = cCD = 0.0 # <<<<<<<<<<<<<< @@ -11022,7 +11004,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L29:; - /* "pyFAI/ext/_distortion.pyx":462 + /* "pyFAI/ext/_distortion.pyx":469 * else: * pCD = cCD = 0.0 * if A0 != D0: # <<<<<<<<<<<<<< @@ -11032,7 +11014,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_A0 != __pyx_v_D0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":463 + /* "pyFAI/ext/_distortion.pyx":470 * pCD = cCD = 0.0 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) # <<<<<<<<<<<<<< @@ -11041,7 +11023,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pDA = ((__pyx_v_A1 - __pyx_v_D1) / (__pyx_v_A0 - __pyx_v_D0)); - /* "pyFAI/ext/_distortion.pyx":464 + /* "pyFAI/ext/_distortion.pyx":471 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) * cDA = D1 - pDA * D0 # <<<<<<<<<<<<<< @@ -11053,7 +11035,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":466 + /* "pyFAI/ext/_distortion.pyx":473 * cDA = D1 - pDA * D0 * else: * pDA = cDA = 0.0 # <<<<<<<<<<<<<< @@ -11065,7 +11047,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L30:; - /* "pyFAI/ext/_distortion.pyx":469 + /* "pyFAI/ext/_distortion.pyx":476 * * # ABCD is trigonometric order: order input position accordingly * integrate(buffer, B0, A0, pAB, cAB) # <<<<<<<<<<<<<< @@ -11074,7 +11056,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_B0, __pyx_v_A0, __pyx_v_pAB, __pyx_v_cAB); - /* "pyFAI/ext/_distortion.pyx":470 + /* "pyFAI/ext/_distortion.pyx":477 * # ABCD is trigonometric order: order input position accordingly * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, C0, B0, pBC, cBC) # <<<<<<<<<<<<<< @@ -11083,7 +11065,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_C0, __pyx_v_B0, __pyx_v_pBC, __pyx_v_cBC); - /* "pyFAI/ext/_distortion.pyx":471 + /* "pyFAI/ext/_distortion.pyx":478 * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, C0, B0, pBC, cBC) * integrate(buffer, D0, C0, pCD, cCD) # <<<<<<<<<<<<<< @@ -11092,7 +11074,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_D0, __pyx_v_C0, __pyx_v_pCD, __pyx_v_cCD); - /* "pyFAI/ext/_distortion.pyx":472 + /* "pyFAI/ext/_distortion.pyx":479 * integrate(buffer, C0, B0, pBC, cBC) * integrate(buffer, D0, C0, pCD, cCD) * integrate(buffer, A0, D0, pDA, cDA) # <<<<<<<<<<<<<< @@ -11101,7 +11083,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_A0, __pyx_v_D0, __pyx_v_pDA, __pyx_v_cDA); - /* "pyFAI/ext/_distortion.pyx":474 + /* "pyFAI/ext/_distortion.pyx":481 * integrate(buffer, A0, D0, pDA, cDA) * * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) # <<<<<<<<<<<<<< @@ -11110,7 +11092,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_area = (0.5 * (((__pyx_v_C0 - __pyx_v_A0) * (__pyx_v_D1 - __pyx_v_B1)) - ((__pyx_v_C1 - __pyx_v_A1) * (__pyx_v_D0 - __pyx_v_B0)))); - /* "pyFAI/ext/_distortion.pyx":476 + /* "pyFAI/ext/_distortion.pyx":483 * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) * * for ms in range(box_size0): # <<<<<<<<<<<<<< @@ -11121,7 +11103,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_59 = 0; __pyx_t_59 < __pyx_t_58; __pyx_t_59+=1) { __pyx_v_ms = __pyx_t_59; - /* "pyFAI/ext/_distortion.pyx":477 + /* "pyFAI/ext/_distortion.pyx":484 * * for ms in range(box_size0): * ml = ms + offset0 # <<<<<<<<<<<<<< @@ -11130,7 +11112,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_ml = (__pyx_v_ms + __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":478 + /* "pyFAI/ext/_distortion.pyx":485 * for ms in range(box_size0): * ml = ms + offset0 * if ml < 0 or ml >= shape0: # <<<<<<<<<<<<<< @@ -11148,7 +11130,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L34_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":479 + /* "pyFAI/ext/_distortion.pyx":486 * ml = ms + offset0 * if ml < 0 or ml >= shape0: * continue # <<<<<<<<<<<<<< @@ -11158,7 +11140,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L31_continue; } - /* "pyFAI/ext/_distortion.pyx":480 + /* "pyFAI/ext/_distortion.pyx":487 * if ml < 0 or ml >= shape0: * continue * for ns in range(box_size1): # <<<<<<<<<<<<<< @@ -11169,7 +11151,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_61 = 0; __pyx_t_61 < __pyx_t_60; __pyx_t_61+=1) { __pyx_v_ns = __pyx_t_61; - /* "pyFAI/ext/_distortion.pyx":482 + /* "pyFAI/ext/_distortion.pyx":489 * for ns in range(box_size1): * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 # <<<<<<<<<<<<<< @@ -11178,7 +11160,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_nl = (__pyx_v_ns + __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":483 + /* "pyFAI/ext/_distortion.pyx":490 * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 * if nl < 0 or nl >= shape1: # <<<<<<<<<<<<<< @@ -11196,7 +11178,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L39_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":484 + /* "pyFAI/ext/_distortion.pyx":491 * nl = ns + offset1 * if nl < 0 or nl >= shape1: * continue # <<<<<<<<<<<<<< @@ -11206,7 +11188,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L36_continue; } - /* "pyFAI/ext/_distortion.pyx":485 + /* "pyFAI/ext/_distortion.pyx":492 * if nl < 0 or nl >= shape1: * continue * value = buffer[ms, ns] / area # <<<<<<<<<<<<<< @@ -11217,7 +11199,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_63 = __pyx_v_ns; __pyx_v_value = ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_62 * __pyx_v_buffer.strides[0]) )) + __pyx_t_63)) ))) / __pyx_v_area); - /* "pyFAI/ext/_distortion.pyx":486 + /* "pyFAI/ext/_distortion.pyx":493 * continue * value = buffer[ms, ns] / area * if value == 0: # <<<<<<<<<<<<<< @@ -11227,7 +11209,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_value == 0.0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":487 + /* "pyFAI/ext/_distortion.pyx":494 * value = buffer[ms, ns] / area * if value == 0: * continue # <<<<<<<<<<<<<< @@ -11237,7 +11219,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L36_continue; } - /* "pyFAI/ext/_distortion.pyx":488 + /* "pyFAI/ext/_distortion.pyx":495 * if value == 0: * continue * if value < 0 or value > 1.0001: # <<<<<<<<<<<<<< @@ -11255,7 +11237,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L43_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":490 + /* "pyFAI/ext/_distortion.pyx":497 * if value < 0 or value > 1.0001: * # here we print pathological cases for debugging * if err_cnt < 1000: # <<<<<<<<<<<<<< @@ -11265,7 +11247,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_err_cnt < 1000) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":491 + /* "pyFAI/ext/_distortion.pyx":498 * # here we print pathological cases for debugging * if err_cnt < 1000: * with gil: # <<<<<<<<<<<<<< @@ -11278,50 +11260,50 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":492 + /* "pyFAI/ext/_distortion.pyx":499 * if err_cnt < 1000: * with gil: * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) # <<<<<<<<<<<<<< * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_19 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_19 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_19); - __pyx_t_18 = __Pyx_PyInt_From_int(__pyx_v_ms); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_18 = __Pyx_PyInt_From_int(__pyx_v_ms); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_18); - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_box_size0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_box_size0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_ns); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_ns); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_box_size1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_box_size1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_64 = __pyx_v_ms; __pyx_t_65 = __pyx_v_ns; - __pyx_t_2 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_64 * __pyx_v_buffer.strides[0]) )) + __pyx_t_65)) )))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_2 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_64 * __pyx_v_buffer.strides[0]) )) + __pyx_t_65)) )))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_66 = PyFloat_FromDouble(__pyx_v_area); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_66 = PyFloat_FromDouble(__pyx_v_area); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_66); - __pyx_t_67 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_67 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_67); __pyx_t_68 = 0; __pyx_t_69 = 0; - __pyx_t_70 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_68 * __pyx_v_buffer.strides[0]) )) + __pyx_t_69)) )))); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_70 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_68 * __pyx_v_buffer.strides[0]) )) + __pyx_t_69)) )))); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_70); __pyx_t_71 = 0; __pyx_t_72 = 1; - __pyx_t_73 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_71 * __pyx_v_buffer.strides[0]) )) + __pyx_t_72)) )))); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_73 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_71 * __pyx_v_buffer.strides[0]) )) + __pyx_t_72)) )))); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_73); __pyx_t_74 = 1; __pyx_t_75 = 0; - __pyx_t_76 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_74 * __pyx_v_buffer.strides[0]) )) + __pyx_t_75)) )))); if (unlikely(!__pyx_t_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_76 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_74 * __pyx_v_buffer.strides[0]) )) + __pyx_t_75)) )))); if (unlikely(!__pyx_t_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_76); __pyx_t_77 = 1; __pyx_t_78 = 1; - __pyx_t_79 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_77 * __pyx_v_buffer.strides[0]) )) + __pyx_t_78)) )))); if (unlikely(!__pyx_t_79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_79 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_77 * __pyx_v_buffer.strides[0]) )) + __pyx_t_78)) )))); if (unlikely(!__pyx_t_79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_79); - __pyx_t_80 = PyTuple_New(13); if (unlikely(!__pyx_t_80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_80 = PyTuple_New(13); if (unlikely(!__pyx_t_80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_80); PyTuple_SET_ITEM(__pyx_t_80, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -11362,33 +11344,33 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_73 = 0; __pyx_t_76 = 0; __pyx_t_79 = 0; - if (__Pyx_PrintOne(0, __pyx_t_80) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + if (__Pyx_PrintOne(0, __pyx_t_80) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_DECREF(__pyx_t_80); __pyx_t_80 = 0; - /* "pyFAI/ext/_distortion.pyx":493 + /* "pyFAI/ext/_distortion.pyx":500 * with gil: * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) # <<<<<<<<<<<<<< * err_cnt += 1 * continue */ - __pyx_t_80 = PyFloat_FromDouble(__pyx_v_A0); if (unlikely(!__pyx_t_80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_80 = PyFloat_FromDouble(__pyx_v_A0); if (unlikely(!__pyx_t_80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_80); - __pyx_t_79 = PyFloat_FromDouble(__pyx_v_A1); if (unlikely(!__pyx_t_79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_79 = PyFloat_FromDouble(__pyx_v_A1); if (unlikely(!__pyx_t_79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_79); - __pyx_t_76 = PyFloat_FromDouble(__pyx_v_B0); if (unlikely(!__pyx_t_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_76 = PyFloat_FromDouble(__pyx_v_B0); if (unlikely(!__pyx_t_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_76); - __pyx_t_73 = PyFloat_FromDouble(__pyx_v_B1); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_73 = PyFloat_FromDouble(__pyx_v_B1); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_73); - __pyx_t_70 = PyFloat_FromDouble(__pyx_v_C0); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_70 = PyFloat_FromDouble(__pyx_v_C0); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_70); - __pyx_t_67 = PyFloat_FromDouble(__pyx_v_C1); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_67 = PyFloat_FromDouble(__pyx_v_C1); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_66 = PyFloat_FromDouble(__pyx_v_D0); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_66 = PyFloat_FromDouble(__pyx_v_D0); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_66); - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_D1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_D1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_1 = PyTuple_New(8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_80); __Pyx_GIVEREF(__pyx_t_80); @@ -11414,14 +11396,14 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_67 = 0; __pyx_t_66 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__Pyx_PrintOne(0, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L49_error;} + if (__Pyx_PrintOne(0, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L49_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } - /* "pyFAI/ext/_distortion.pyx":491 + /* "pyFAI/ext/_distortion.pyx":498 * # here we print pathological cases for debugging * if err_cnt < 1000: * with gil: # <<<<<<<<<<<<<< @@ -11445,7 +11427,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":494 + /* "pyFAI/ext/_distortion.pyx":501 * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 # <<<<<<<<<<<<<< @@ -11457,7 +11439,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L45:; - /* "pyFAI/ext/_distortion.pyx":495 + /* "pyFAI/ext/_distortion.pyx":502 * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 * continue # <<<<<<<<<<<<<< @@ -11467,7 +11449,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L36_continue; } - /* "pyFAI/ext/_distortion.pyx":496 + /* "pyFAI/ext/_distortion.pyx":503 * err_cnt += 1 * continue * k = outMax[ml, nl] # <<<<<<<<<<<<<< @@ -11478,7 +11460,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_82 = __pyx_v_nl; __pyx_v_k = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outMax.data + __pyx_t_81 * __pyx_v_outMax.strides[0]) ) + __pyx_t_82 * __pyx_v_outMax.strides[1]) ))); - /* "pyFAI/ext/_distortion.pyx":497 + /* "pyFAI/ext/_distortion.pyx":504 * continue * k = outMax[ml, nl] * lut[ml, nl, k].idx = idx # <<<<<<<<<<<<<< @@ -11490,7 +11472,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_85 = __pyx_v_k; (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_83 * __pyx_v_lut.strides[0]) ) + __pyx_t_84 * __pyx_v_lut.strides[1]) ) + __pyx_t_85 * __pyx_v_lut.strides[2]) ))).idx = __pyx_v_idx; - /* "pyFAI/ext/_distortion.pyx":498 + /* "pyFAI/ext/_distortion.pyx":505 * k = outMax[ml, nl] * lut[ml, nl, k].idx = idx * lut[ml, nl, k].coef = value # <<<<<<<<<<<<<< @@ -11502,7 +11484,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_88 = __pyx_v_k; (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_86 * __pyx_v_lut.strides[0]) ) + __pyx_t_87 * __pyx_v_lut.strides[1]) ) + __pyx_t_88 * __pyx_v_lut.strides[2]) ))).coef = __pyx_v_value; - /* "pyFAI/ext/_distortion.pyx":499 + /* "pyFAI/ext/_distortion.pyx":506 * lut[ml, nl, k].idx = idx * lut[ml, nl, k].coef = value * outMax[ml, nl] = k + 1 # <<<<<<<<<<<<<< @@ -11517,7 +11499,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L31_continue:; } - /* "pyFAI/ext/_distortion.pyx":500 + /* "pyFAI/ext/_distortion.pyx":507 * lut[ml, nl, k].coef = value * outMax[ml, nl] = k + 1 * idx += 1 # <<<<<<<<<<<<<< @@ -11530,7 +11512,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":409 + /* "pyFAI/ext/_distortion.pyx":416 * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], lut_total_size / 1.0e6)) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (delta1, delta0, size)) * with nogil: # <<<<<<<<<<<<<< @@ -11554,25 +11536,25 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":503 + /* "pyFAI/ext/_distortion.pyx":510 * * # Hack to prevent memory leak !!! * cdef numpy.ndarray[numpy.float64_t, ndim = 2] tmp_ary = numpy.empty(shape=(shape0 * shape1, size), dtype=numpy.float64) # <<<<<<<<<<<<<< * memcpy(&tmp_ary[0, 0], &lut[0, 0, 0], tmp_ary.nbytes) * return numpy.core.records.array(tmp_ary.view(dtype=dtype_lut), */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_66 = __Pyx_PyInt_From_int((__pyx_v_shape0 * __pyx_v_shape1)); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyInt_From_int((__pyx_v_shape0 * __pyx_v_shape1)); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); - __pyx_t_67 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_70 = PyTuple_New(2); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_70 = PyTuple_New(2); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_70); PyTuple_SET_ITEM(__pyx_t_70, 0, __pyx_t_66); __Pyx_GIVEREF(__pyx_t_66); @@ -11580,26 +11562,26 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_GIVEREF(__pyx_t_67); __pyx_t_66 = 0; __pyx_t_67 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_70) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_70) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_70); __pyx_t_70 = 0; - __pyx_t_70 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_70 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_70); - __pyx_t_67 = __Pyx_PyObject_GetAttrStr(__pyx_t_70, __pyx_n_s_float64); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_PyObject_GetAttrStr(__pyx_t_70, __pyx_n_s_float64); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); __Pyx_DECREF(__pyx_t_70); __pyx_t_70 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_67) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_67) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0; - __pyx_t_67 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_67) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_67, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_67) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_67, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_91 = ((PyArrayObject *)__pyx_t_67); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_tmp_ary.rcbuffer->pybuffer, (PyObject*)__pyx_t_91, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { __pyx_v_tmp_ary = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_tmp_ary.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_tmp_ary.diminfo[0].strides = __pyx_pybuffernd_tmp_ary.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_tmp_ary.diminfo[0].shape = __pyx_pybuffernd_tmp_ary.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_tmp_ary.diminfo[1].strides = __pyx_pybuffernd_tmp_ary.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_tmp_ary.diminfo[1].shape = __pyx_pybuffernd_tmp_ary.rcbuffer->pybuffer.shape[1]; } } @@ -11607,7 +11589,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_v_tmp_ary = ((PyArrayObject *)__pyx_t_67); __pyx_t_67 = 0; - /* "pyFAI/ext/_distortion.pyx":504 + /* "pyFAI/ext/_distortion.pyx":511 * # Hack to prevent memory leak !!! * cdef numpy.ndarray[numpy.float64_t, ndim = 2] tmp_ary = numpy.empty(shape=(shape0 * shape1, size), dtype=numpy.float64) * memcpy(&tmp_ary[0, 0], &lut[0, 0, 0], tmp_ary.nbytes) # <<<<<<<<<<<<<< @@ -11619,13 +11601,13 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_94 = 0; __pyx_t_95 = 0; __pyx_t_96 = 0; - __pyx_t_67 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_tmp_ary), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_tmp_ary), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_17 = __Pyx_PyInt_As_size_t(__pyx_t_67); if (unlikely((__pyx_t_17 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyInt_As_size_t(__pyx_t_67); if (unlikely((__pyx_t_17 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0; memcpy((&(*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_tmp_ary.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_tmp_ary.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_tmp_ary.diminfo[1].strides))), (&(*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_94 * __pyx_v_lut.strides[0]) ) + __pyx_t_95 * __pyx_v_lut.strides[1]) ) + __pyx_t_96 * __pyx_v_lut.strides[2]) )))), __pyx_t_17); - /* "pyFAI/ext/_distortion.pyx":505 + /* "pyFAI/ext/_distortion.pyx":512 * cdef numpy.ndarray[numpy.float64_t, ndim = 2] tmp_ary = numpy.empty(shape=(shape0 * shape1, size), dtype=numpy.float64) * memcpy(&tmp_ary[0, 0], &lut[0, 0, 0], tmp_ary.nbytes) * return numpy.core.records.array(tmp_ary.view(dtype=dtype_lut), # <<<<<<<<<<<<<< @@ -11633,49 +11615,49 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; * copy=True) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_67 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_67, __pyx_n_s_core); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_67, __pyx_n_s_core); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0; - __pyx_t_67 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_records); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_records); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_67, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_67, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0; - __pyx_t_67 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_tmp_ary), __pyx_n_s_view); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_tmp_ary), __pyx_n_s_view); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_70 = __Pyx_GetModuleGlobalName(__pyx_n_s_dtype_lut); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_70 = __Pyx_GetModuleGlobalName(__pyx_n_s_dtype_lut); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_70); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_70) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_70) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_70); __pyx_t_70 = 0; - __pyx_t_70 = __Pyx_PyObject_Call(__pyx_t_67, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_70 = __Pyx_PyObject_Call(__pyx_t_67, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_70); __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_70); __Pyx_GIVEREF(__pyx_t_70); __pyx_t_70 = 0; - __pyx_t_70 = PyDict_New(); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_70 = PyDict_New(); if (unlikely(!__pyx_t_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_70); - /* "pyFAI/ext/_distortion.pyx":506 + /* "pyFAI/ext/_distortion.pyx":513 * memcpy(&tmp_ary[0, 0], &lut[0, 0, 0], tmp_ary.nbytes) * return numpy.core.records.array(tmp_ary.view(dtype=dtype_lut), * shape=(shape0 * shape1, size), dtype=dtype_lut, # <<<<<<<<<<<<<< * copy=True) * */ - __pyx_t_67 = __Pyx_PyInt_From_int((__pyx_v_shape0 * __pyx_v_shape1)); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = __Pyx_PyInt_From_int((__pyx_v_shape0 * __pyx_v_shape1)); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_66 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); - __pyx_t_73 = PyTuple_New(2); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_73 = PyTuple_New(2); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_73); PyTuple_SET_ITEM(__pyx_t_73, 0, __pyx_t_67); __Pyx_GIVEREF(__pyx_t_67); @@ -11683,30 +11665,30 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_GIVEREF(__pyx_t_66); __pyx_t_67 = 0; __pyx_t_66 = 0; - if (PyDict_SetItem(__pyx_t_70, __pyx_n_s_shape, __pyx_t_73) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_70, __pyx_n_s_shape, __pyx_t_73) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_73); __pyx_t_73 = 0; - __pyx_t_73 = __Pyx_GetModuleGlobalName(__pyx_n_s_dtype_lut); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_73 = __Pyx_GetModuleGlobalName(__pyx_n_s_dtype_lut); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_73); - if (PyDict_SetItem(__pyx_t_70, __pyx_n_s_dtype, __pyx_t_73) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_70, __pyx_n_s_dtype, __pyx_t_73) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_73); __pyx_t_73 = 0; - /* "pyFAI/ext/_distortion.pyx":507 + /* "pyFAI/ext/_distortion.pyx":514 * return numpy.core.records.array(tmp_ary.view(dtype=dtype_lut), * shape=(shape0 * shape1, size), dtype=dtype_lut, * copy=True) # <<<<<<<<<<<<<< * * */ - if (PyDict_SetItem(__pyx_t_70, __pyx_n_s_copy, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_70, __pyx_n_s_copy, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":505 + /* "pyFAI/ext/_distortion.pyx":512 * cdef numpy.ndarray[numpy.float64_t, ndim = 2] tmp_ary = numpy.empty(shape=(shape0 * shape1, size), dtype=numpy.float64) * memcpy(&tmp_ary[0, 0], &lut[0, 0, 0], tmp_ary.nbytes) * return numpy.core.records.array(tmp_ary.view(dtype=dtype_lut), # <<<<<<<<<<<<<< * shape=(shape0 * shape1, size), dtype=dtype_lut, * copy=True) */ - __pyx_t_73 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_70); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_73 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_70); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_73); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -11715,9 +11697,9 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_73 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":371 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":378 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_LUT(float[:, :, :, ::1] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """ @@ -11767,9 +11749,9 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":513 - * @cython.boundscheck(False) - * @cython.cdivision(True) +/* "pyFAI/ext/_distortion.pyx":522 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_CSR(float[:, :, :, :] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """Calculate the Look-up table as CSR format @@ -11777,7 +11759,7 @@ __pyx_t_25.strides[1] = __pyx_v_buffer.strides[1]; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_11calc_CSR(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_10calc_CSR[] = "Calculate the Look-up table as CSR format\n\n @param pos: 4D position array\n @param shape: output shape\n @param bin_size: number of input element per output element (as numpy array)\n @param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel\n @return: look-up table in CSR format: 3-tuple of array"; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10calc_CSR[] = "calc_CSR(__Pyx_memviewslice pos, shape, bin_size, max_pixel_size, __Pyx_memviewslice mask=None)\nCalculate the Look-up table as CSR format\n\n :param pos: 4D position array\n :param shape: output shape\n :param bin_size: number of input element per output element (as numpy array)\n :param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel\n :return: look-up table in CSR format: 3-tuple of array"; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_11calc_CSR = {"calc_CSR", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_11calc_CSR, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_10calc_CSR}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_11calc_CSR(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_pos = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -11814,17 +11796,17 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_11calc_CSR(PyObject *__pyx_s case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bin_size)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_max_pixel_size)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (kw_args > 0) { @@ -11833,7 +11815,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_11calc_CSR(PyObject *__pyx_s } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_CSR") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_CSR") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -11846,12 +11828,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_11calc_CSR(PyObject *__pyx_s default: goto __pyx_L5_argtuple_error; } } - __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_shape = values[1]; __pyx_v_bin_size = values[2]; __pyx_v_max_pixel_size = values[3]; if (values[4]) { - __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[4]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[4]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_mask = __pyx_k__19; __PYX_INC_MEMVIEW(&__pyx_v_mask, 1); @@ -11859,14 +11841,14 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_11calc_CSR(PyObject *__pyx_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_CSR", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.calc_CSR", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_pos.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(__pyx_self, __pyx_v_pos, __pyx_v_shape, __pyx_v_bin_size, __pyx_v_max_pixel_size, __pyx_v_mask); @@ -12040,7 +12022,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __pyx_pybuffernd_data.data = NULL; __pyx_pybuffernd_data.rcbuffer = &__pyx_pybuffer_data; - /* "pyFAI/ext/_distortion.pyx":524 + /* "pyFAI/ext/_distortion.pyx":533 * cdef: * int shape0, shape1, delta0, delta1, bins * shape0, shape1 = shape # <<<<<<<<<<<<<< @@ -12057,7 +12039,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -12070,21 +12052,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else - __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); #endif } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; @@ -12092,17 +12074,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_shape0 = __pyx_t_5; __pyx_v_shape1 = __pyx_t_6; - /* "pyFAI/ext/_distortion.pyx":525 + /* "pyFAI/ext/_distortion.pyx":534 * int shape0, shape1, delta0, delta1, bins * shape0, shape1 = shape * delta0, delta1 = max_pixel_size # <<<<<<<<<<<<<< @@ -12119,7 +12101,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -12132,21 +12114,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); #endif } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_v_max_pixel_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetIter(__pyx_v_max_pixel_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L6_unpacking_done; @@ -12154,17 +12136,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L6_unpacking_done:; } - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_delta0 = __pyx_t_6; __pyx_v_delta1 = __pyx_t_5; - /* "pyFAI/ext/_distortion.pyx":526 + /* "pyFAI/ext/_distortion.pyx":535 * shape0, shape1 = shape * delta0, delta1 = max_pixel_size * bins = shape0 * shape1 # <<<<<<<<<<<<<< @@ -12173,7 +12155,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO */ __pyx_v_bins = (__pyx_v_shape0 * __pyx_v_shape1); - /* "pyFAI/ext/_distortion.pyx":528 + /* "pyFAI/ext/_distortion.pyx":537 * bins = shape0 * shape1 * cdef: * int i, j, k, ms, ml, ns, nl, idx = 0, tmp_index, err_cnt=0 # <<<<<<<<<<<<<< @@ -12183,20 +12165,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __pyx_v_idx = 0; __pyx_v_err_cnt = 0; - /* "pyFAI/ext/_distortion.pyx":534 + /* "pyFAI/ext/_distortion.pyx":543 * numpy.ndarray[numpy.int32_t, ndim = 1] indptr, indices * numpy.ndarray[numpy.float32_t, ndim = 1] data * int[:, :] outMax = view.array(shape=(shape0, shape1), itemsize=sizeof(int), format="i") # <<<<<<<<<<<<<< * float[:, ::1] buffer * bint do_mask = mask is not None */ - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_shape0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_shape0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_shape1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -12204,24 +12186,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __Pyx_GIVEREF(__pyx_t_3); __pyx_t_2 = 0; __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyInt_FromSize_t((sizeof(int))); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_FromSize_t((sizeof(int))); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_itemsize, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_itemsize, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_format, __pyx_n_s_i) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_format, __pyx_n_s_i) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_outMax = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_distortion.pyx":536 + /* "pyFAI/ext/_distortion.pyx":545 * int[:, :] outMax = view.array(shape=(shape0, shape1), itemsize=sizeof(int), format="i") * float[:, ::1] buffer * bint do_mask = mask is not None # <<<<<<<<<<<<<< @@ -12230,7 +12212,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO */ __pyx_v_do_mask = (((PyObject *) __pyx_v_mask.memview) != Py_None); - /* "pyFAI/ext/_distortion.pyx":537 + /* "pyFAI/ext/_distortion.pyx":546 * float[:, ::1] buffer * bint do_mask = mask is not None * if do_mask: # <<<<<<<<<<<<<< @@ -12240,7 +12222,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO __pyx_t_9 = (__pyx_v_do_mask != 0); if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":538 + /* "pyFAI/ext/_distortion.pyx":547 * bint do_mask = mask is not None * if do_mask: * assert shape0 == mask.shape[0], "mask shape dim0" # <<<<<<<<<<<<<< @@ -12251,12 +12233,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_shape0 == (__pyx_v_mask.shape[0])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_mask_shape_dim0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_distortion.pyx":539 + /* "pyFAI/ext/_distortion.pyx":548 * if do_mask: * assert shape0 == mask.shape[0], "mask shape dim0" * assert shape1 == mask.shape[1], "mask shape dim1" # <<<<<<<<<<<<<< @@ -12267,7 +12249,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_shape1 == (__pyx_v_mask.shape[1])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_mask_shape_dim1); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif @@ -12275,7 +12257,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10calc_CSR(CYTHON_UNUSED PyO } __pyx_L7:; - /* "pyFAI/ext/_distortion.pyx":541 + /* "pyFAI/ext/_distortion.pyx":550 * assert shape1 == mask.shape[1], "mask shape dim1" * * outMax[:, :] = 0 # <<<<<<<<<<<<<< @@ -12318,40 +12300,40 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); - /* "pyFAI/ext/_distortion.pyx":542 + /* "pyFAI/ext/_distortion.pyx":551 * * outMax[:, :] = 0 * indptr = numpy.empty(bins + 1, dtype=numpy.int32) # <<<<<<<<<<<<<< * indptr[0] = 0 * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyInt_From_long((__pyx_v_bins + 1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_From_long((__pyx_v_bins + 1)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_12 = ((PyArrayObject *)__pyx_t_11); { __Pyx_BufFmt_StackElem __pyx_stack[1]; @@ -12367,13 +12349,13 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } } __pyx_pybuffernd_indptr.diminfo[0].strides = __pyx_pybuffernd_indptr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indptr.diminfo[0].shape = __pyx_pybuffernd_indptr.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_12 = 0; __pyx_v_indptr = ((PyArrayObject *)__pyx_t_11); __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":543 + /* "pyFAI/ext/_distortion.pyx":552 * outMax[:, :] = 0 * indptr = numpy.empty(bins + 1, dtype=numpy.int32) * indptr[0] = 0 # <<<<<<<<<<<<<< @@ -12383,32 +12365,32 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_16 = 0; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indptr.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_indptr.diminfo[0].strides) = 0; - /* "pyFAI/ext/_distortion.pyx":544 + /* "pyFAI/ext/_distortion.pyx":553 * indptr = numpy.empty(bins + 1, dtype=numpy.int32) * indptr[0] = 0 * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) # <<<<<<<<<<<<<< * lut_size = indptr[bins] * */ - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_size, __pyx_n_s_cumsum); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_size, __pyx_n_s_cumsum); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_indptr), __pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__20, 1, 0, 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_indptr), __pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__20, 1, 0, 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":545 + /* "pyFAI/ext/_distortion.pyx":554 * indptr[0] = 0 * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) * lut_size = indptr[bins] # <<<<<<<<<<<<<< @@ -12418,36 +12400,36 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_5 = __pyx_v_bins; __pyx_v_lut_size = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indptr.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_indptr.diminfo[0].strides)); - /* "pyFAI/ext/_distortion.pyx":547 + /* "pyFAI/ext/_distortion.pyx":556 * lut_size = indptr[bins] * * indices = numpy.zeros(shape=lut_size, dtype=numpy.int32) # <<<<<<<<<<<<<< * data = numpy.zeros(shape=lut_size, dtype=numpy.float32) * */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_int32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_int32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_12 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; @@ -12463,42 +12445,42 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } } __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_12 = 0; __pyx_v_indices = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/_distortion.pyx":548 + /* "pyFAI/ext/_distortion.pyx":557 * * indices = numpy.zeros(shape=lut_size, dtype=numpy.int32) * data = numpy.zeros(shape=lut_size, dtype=numpy.float32) # <<<<<<<<<<<<<< * * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_shape, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_shape, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_17 = ((PyArrayObject *)__pyx_t_11); { __Pyx_BufFmt_StackElem __pyx_stack[1]; @@ -12514,67 +12496,67 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } } __pyx_pybuffernd_data.diminfo[0].strides = __pyx_pybuffernd_data.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_data.diminfo[0].shape = __pyx_pybuffernd_data.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_17 = 0; __pyx_v_data = ((PyArrayObject *)__pyx_t_11); __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":550 + /* "pyFAI/ext/_distortion.pyx":559 * data = numpy.zeros(shape=lut_size, dtype=numpy.float32) * * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) # <<<<<<<<<<<<<< * * logger.info("CSR matrix: %.3f MByte" % ((indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6)) */ - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_size, __pyx_n_s_cumsum); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_size, __pyx_n_s_cumsum); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_indptr), __pyx_t_7, 1, 0, NULL, NULL, &__pyx_slice__21, 1, 0, 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_indptr), __pyx_t_7, 1, 0, NULL, NULL, &__pyx_slice__21, 1, 0, 0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":552 + /* "pyFAI/ext/_distortion.pyx":561 * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) * * logger.info("CSR matrix: %.3f MByte" % ((indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6)) # <<<<<<<<<<<<<< * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], lut_size)) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_indices), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_indices), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_indptr), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_indptr), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_float_1_0e6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_float_1_0e6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_CSR_matrix_3f_MByte, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_CSR_matrix_3f_MByte, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; @@ -12588,40 +12570,40 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } } if (!__pyx_t_1) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_7); } else { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":553 + /* "pyFAI/ext/_distortion.pyx":562 * * logger.info("CSR matrix: %.3f MByte" % ((indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6)) * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) # <<<<<<<<<<<<<< * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], lut_size)) * with nogil: */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); @@ -12629,51 +12611,51 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __Pyx_GIVEREF(__pyx_t_2); __pyx_t_7 = 0; __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_18 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_1); - if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_buffer = __pyx_t_18; __pyx_t_18.memview = NULL; __pyx_t_18.data = NULL; - /* "pyFAI/ext/_distortion.pyx":554 + /* "pyFAI/ext/_distortion.pyx":563 * logger.info("CSR matrix: %.3f MByte" % ((indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6)) * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], lut_size)) # <<<<<<<<<<<<<< * with nogil: * # i,j, idx are indices of the raw image uncorrected */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_buffer.shape[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_buffer.shape[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_11 = PyInt_FromSsize_t((__pyx_v_buffer.shape[0])); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyInt_FromSsize_t((__pyx_v_buffer.shape[0])); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_19 = PyTuple_New(3); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = PyTuple_New(3); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -12684,7 +12666,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_t_3 = 0; __pyx_t_11 = 0; __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Max_pixel_size_ix_i_Max_source_p, __pyx_t_19); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Max_pixel_size_ix_i_Max_source_p, __pyx_t_19); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_19 = NULL; @@ -12698,24 +12680,24 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; } } if (!__pyx_t_19) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_19); __Pyx_GIVEREF(__pyx_t_19); __pyx_t_19 = NULL; PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":555 + /* "pyFAI/ext/_distortion.pyx":564 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], lut_size)) * with nogil: # <<<<<<<<<<<<<< @@ -12729,7 +12711,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":557 + /* "pyFAI/ext/_distortion.pyx":566 * with nogil: * # i,j, idx are indices of the raw image uncorrected * for i in range(shape0): # <<<<<<<<<<<<<< @@ -12740,7 +12722,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_6; __pyx_t_20+=1) { __pyx_v_i = __pyx_t_20; - /* "pyFAI/ext/_distortion.pyx":558 + /* "pyFAI/ext/_distortion.pyx":567 * # i,j, idx are indices of the raw image uncorrected * for i in range(shape0): * for j in range(shape1): # <<<<<<<<<<<<<< @@ -12751,7 +12733,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) { __pyx_v_j = __pyx_t_22; - /* "pyFAI/ext/_distortion.pyx":559 + /* "pyFAI/ext/_distortion.pyx":568 * for i in range(shape0): * for j in range(shape1): * if do_mask and mask[i, j]: # <<<<<<<<<<<<<< @@ -12771,7 +12753,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; __pyx_L16_bool_binop_done:; if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":560 + /* "pyFAI/ext/_distortion.pyx":569 * for j in range(shape1): * if do_mask and mask[i, j]: * continue # <<<<<<<<<<<<<< @@ -12781,7 +12763,7 @@ __pyx_t_10.strides[1] = __pyx_v_outMax.strides[1]; goto __pyx_L13_continue; } - /* "pyFAI/ext/_distortion.pyx":562 + /* "pyFAI/ext/_distortion.pyx":571 * continue * # reinit of buffer * buffer[:, :] = 0 # <<<<<<<<<<<<<< @@ -12814,7 +12796,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __PYX_XDEC_MEMVIEW(&__pyx_t_26, 0); - /* "pyFAI/ext/_distortion.pyx":563 + /* "pyFAI/ext/_distortion.pyx":572 * # reinit of buffer * buffer[:, :] = 0 * A0 = pos[i, j, 0, 0] # <<<<<<<<<<<<<< @@ -12827,7 +12809,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_30 = 0; __pyx_v_A0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_27 * __pyx_v_pos.strides[0]) ) + __pyx_t_28 * __pyx_v_pos.strides[1]) ) + __pyx_t_29 * __pyx_v_pos.strides[2]) ) + __pyx_t_30 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":564 + /* "pyFAI/ext/_distortion.pyx":573 * buffer[:, :] = 0 * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] # <<<<<<<<<<<<<< @@ -12840,7 +12822,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_34 = 1; __pyx_v_A1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_31 * __pyx_v_pos.strides[0]) ) + __pyx_t_32 * __pyx_v_pos.strides[1]) ) + __pyx_t_33 * __pyx_v_pos.strides[2]) ) + __pyx_t_34 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":565 + /* "pyFAI/ext/_distortion.pyx":574 * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] # <<<<<<<<<<<<<< @@ -12853,7 +12835,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_38 = 0; __pyx_v_B0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_35 * __pyx_v_pos.strides[0]) ) + __pyx_t_36 * __pyx_v_pos.strides[1]) ) + __pyx_t_37 * __pyx_v_pos.strides[2]) ) + __pyx_t_38 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":566 + /* "pyFAI/ext/_distortion.pyx":575 * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] # <<<<<<<<<<<<<< @@ -12866,7 +12848,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_42 = 1; __pyx_v_B1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_39 * __pyx_v_pos.strides[0]) ) + __pyx_t_40 * __pyx_v_pos.strides[1]) ) + __pyx_t_41 * __pyx_v_pos.strides[2]) ) + __pyx_t_42 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":567 + /* "pyFAI/ext/_distortion.pyx":576 * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] # <<<<<<<<<<<<<< @@ -12879,7 +12861,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_46 = 0; __pyx_v_C0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_43 * __pyx_v_pos.strides[0]) ) + __pyx_t_44 * __pyx_v_pos.strides[1]) ) + __pyx_t_45 * __pyx_v_pos.strides[2]) ) + __pyx_t_46 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":568 + /* "pyFAI/ext/_distortion.pyx":577 * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] # <<<<<<<<<<<<<< @@ -12892,7 +12874,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_50 = 1; __pyx_v_C1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_47 * __pyx_v_pos.strides[0]) ) + __pyx_t_48 * __pyx_v_pos.strides[1]) ) + __pyx_t_49 * __pyx_v_pos.strides[2]) ) + __pyx_t_50 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":569 + /* "pyFAI/ext/_distortion.pyx":578 * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] # <<<<<<<<<<<<<< @@ -12905,7 +12887,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_54 = 0; __pyx_v_D0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_51 * __pyx_v_pos.strides[0]) ) + __pyx_t_52 * __pyx_v_pos.strides[1]) ) + __pyx_t_53 * __pyx_v_pos.strides[2]) ) + __pyx_t_54 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":570 + /* "pyFAI/ext/_distortion.pyx":579 * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] # <<<<<<<<<<<<<< @@ -12918,7 +12900,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_58 = 1; __pyx_v_D1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_55 * __pyx_v_pos.strides[0]) ) + __pyx_t_56 * __pyx_v_pos.strides[1]) ) + __pyx_t_57 * __pyx_v_pos.strides[2]) ) + __pyx_t_58 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":571 + /* "pyFAI/ext/_distortion.pyx":580 * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] * foffset0 = _floor_min4(A0, B0, C0, D0) # <<<<<<<<<<<<<< @@ -12927,7 +12909,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_foffset0 = __pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0); - /* "pyFAI/ext/_distortion.pyx":572 + /* "pyFAI/ext/_distortion.pyx":581 * D1 = pos[i, j, 3, 1] * foffset0 = _floor_min4(A0, B0, C0, D0) * foffset1 = _floor_min4(A1, B1, C1, D1) # <<<<<<<<<<<<<< @@ -12936,7 +12918,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_foffset1 = __pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1); - /* "pyFAI/ext/_distortion.pyx":573 + /* "pyFAI/ext/_distortion.pyx":582 * foffset0 = _floor_min4(A0, B0, C0, D0) * foffset1 = _floor_min4(A1, B1, C1, D1) * offset0 = ( foffset0) # <<<<<<<<<<<<<< @@ -12945,7 +12927,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_offset0 = ((int)__pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":574 + /* "pyFAI/ext/_distortion.pyx":583 * foffset1 = _floor_min4(A1, B1, C1, D1) * offset0 = ( foffset0) * offset1 = ( foffset1) # <<<<<<<<<<<<<< @@ -12954,7 +12936,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_offset1 = ((int)__pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":575 + /* "pyFAI/ext/_distortion.pyx":584 * offset0 = ( foffset0) * offset1 = ( foffset1) * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 # <<<<<<<<<<<<<< @@ -12963,7 +12945,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_box_size0 = (((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0)) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":576 + /* "pyFAI/ext/_distortion.pyx":585 * offset1 = ( foffset1) * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 * box_size1 = ( _ceil_max4(A1, B1, C1, D1)) - offset1 # <<<<<<<<<<<<<< @@ -12972,7 +12954,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_box_size1 = (((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1)) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":578 + /* "pyFAI/ext/_distortion.pyx":587 * box_size1 = ( _ceil_max4(A1, B1, C1, D1)) - offset1 * * if (box_size0 > delta0) or (box_size1 > delta1): # <<<<<<<<<<<<<< @@ -12990,7 +12972,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L19_bool_binop_done:; if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":580 + /* "pyFAI/ext/_distortion.pyx":589 * if (box_size0 > delta0) or (box_size1 > delta1): * # Increase size of the buffer * delta0 = offset0 if offset0 > delta0 else delta0 # <<<<<<<<<<<<<< @@ -13004,7 +12986,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_delta0 = __pyx_t_59; - /* "pyFAI/ext/_distortion.pyx":581 + /* "pyFAI/ext/_distortion.pyx":590 * # Increase size of the buffer * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 # <<<<<<<<<<<<<< @@ -13018,7 +13000,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_delta1 = __pyx_t_59; - /* "pyFAI/ext/_distortion.pyx":582 + /* "pyFAI/ext/_distortion.pyx":591 * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: # <<<<<<<<<<<<<< @@ -13031,23 +13013,23 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":583 + /* "pyFAI/ext/_distortion.pyx":592 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: * buffer = numpy.zeros((delta0, delta1), dtype=numpy.float32) # <<<<<<<<<<<<<< * * A0 -= foffset0 */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -13055,27 +13037,27 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_GIVEREF(__pyx_t_11); __pyx_t_1 = 0; __pyx_t_11 = 0; - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_19) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_19) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; - __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_18 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_19); - if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L24_error;} + if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L24_error;} __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_buffer, 1); __pyx_v_buffer = __pyx_t_18; @@ -13083,7 +13065,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_18.data = NULL; } - /* "pyFAI/ext/_distortion.pyx":582 + /* "pyFAI/ext/_distortion.pyx":591 * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: # <<<<<<<<<<<<<< @@ -13110,7 +13092,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L18:; - /* "pyFAI/ext/_distortion.pyx":585 + /* "pyFAI/ext/_distortion.pyx":594 * buffer = numpy.zeros((delta0, delta1), dtype=numpy.float32) * * A0 -= foffset0 # <<<<<<<<<<<<<< @@ -13119,7 +13101,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A0 = (__pyx_v_A0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":586 + /* "pyFAI/ext/_distortion.pyx":595 * * A0 -= foffset0 * A1 -= foffset1 # <<<<<<<<<<<<<< @@ -13128,7 +13110,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A1 = (__pyx_v_A1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":587 + /* "pyFAI/ext/_distortion.pyx":596 * A0 -= foffset0 * A1 -= foffset1 * B0 -= foffset0 # <<<<<<<<<<<<<< @@ -13137,7 +13119,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B0 = (__pyx_v_B0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":588 + /* "pyFAI/ext/_distortion.pyx":597 * A1 -= foffset1 * B0 -= foffset0 * B1 -= foffset1 # <<<<<<<<<<<<<< @@ -13146,7 +13128,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B1 = (__pyx_v_B1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":589 + /* "pyFAI/ext/_distortion.pyx":598 * B0 -= foffset0 * B1 -= foffset1 * C0 -= foffset0 # <<<<<<<<<<<<<< @@ -13155,7 +13137,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C0 = (__pyx_v_C0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":590 + /* "pyFAI/ext/_distortion.pyx":599 * B1 -= foffset1 * C0 -= foffset0 * C1 -= foffset1 # <<<<<<<<<<<<<< @@ -13164,7 +13146,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C1 = (__pyx_v_C1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":591 + /* "pyFAI/ext/_distortion.pyx":600 * C0 -= foffset0 * C1 -= foffset1 * D0 -= foffset0 # <<<<<<<<<<<<<< @@ -13173,7 +13155,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D0 = (__pyx_v_D0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":592 + /* "pyFAI/ext/_distortion.pyx":601 * C1 -= foffset1 * D0 -= foffset0 * D1 -= foffset1 # <<<<<<<<<<<<<< @@ -13182,7 +13164,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D1 = (__pyx_v_D1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":593 + /* "pyFAI/ext/_distortion.pyx":602 * D0 -= foffset0 * D1 -= foffset1 * if B0 != A0: # <<<<<<<<<<<<<< @@ -13192,7 +13174,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_9 = ((__pyx_v_B0 != __pyx_v_A0) != 0); if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":594 + /* "pyFAI/ext/_distortion.pyx":603 * D1 -= foffset1 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) # <<<<<<<<<<<<<< @@ -13201,7 +13183,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pAB = ((__pyx_v_B1 - __pyx_v_A1) / (__pyx_v_B0 - __pyx_v_A0)); - /* "pyFAI/ext/_distortion.pyx":595 + /* "pyFAI/ext/_distortion.pyx":604 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) * cAB = A1 - pAB * A0 # <<<<<<<<<<<<<< @@ -13213,7 +13195,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":597 + /* "pyFAI/ext/_distortion.pyx":606 * cAB = A1 - pAB * A0 * else: * pAB = cAB = 0.0 # <<<<<<<<<<<<<< @@ -13225,7 +13207,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L26:; - /* "pyFAI/ext/_distortion.pyx":598 + /* "pyFAI/ext/_distortion.pyx":607 * else: * pAB = cAB = 0.0 * if C0 != B0: # <<<<<<<<<<<<<< @@ -13235,7 +13217,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_9 = ((__pyx_v_C0 != __pyx_v_B0) != 0); if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":599 + /* "pyFAI/ext/_distortion.pyx":608 * pAB = cAB = 0.0 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) # <<<<<<<<<<<<<< @@ -13244,7 +13226,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pBC = ((__pyx_v_C1 - __pyx_v_B1) / (__pyx_v_C0 - __pyx_v_B0)); - /* "pyFAI/ext/_distortion.pyx":600 + /* "pyFAI/ext/_distortion.pyx":609 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) * cBC = B1 - pBC * B0 # <<<<<<<<<<<<<< @@ -13256,7 +13238,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":602 + /* "pyFAI/ext/_distortion.pyx":611 * cBC = B1 - pBC * B0 * else: * pBC = cBC = 0.0 # <<<<<<<<<<<<<< @@ -13268,7 +13250,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L27:; - /* "pyFAI/ext/_distortion.pyx":603 + /* "pyFAI/ext/_distortion.pyx":612 * else: * pBC = cBC = 0.0 * if D0 != C0: # <<<<<<<<<<<<<< @@ -13278,7 +13260,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_9 = ((__pyx_v_D0 != __pyx_v_C0) != 0); if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":604 + /* "pyFAI/ext/_distortion.pyx":613 * pBC = cBC = 0.0 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) # <<<<<<<<<<<<<< @@ -13287,7 +13269,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pCD = ((__pyx_v_D1 - __pyx_v_C1) / (__pyx_v_D0 - __pyx_v_C0)); - /* "pyFAI/ext/_distortion.pyx":605 + /* "pyFAI/ext/_distortion.pyx":614 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) * cCD = C1 - pCD * C0 # <<<<<<<<<<<<<< @@ -13299,7 +13281,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":607 + /* "pyFAI/ext/_distortion.pyx":616 * cCD = C1 - pCD * C0 * else: * pCD = cCD = 0.0 # <<<<<<<<<<<<<< @@ -13311,7 +13293,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L28:; - /* "pyFAI/ext/_distortion.pyx":608 + /* "pyFAI/ext/_distortion.pyx":617 * else: * pCD = cCD = 0.0 * if A0 != D0: # <<<<<<<<<<<<<< @@ -13321,7 +13303,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_9 = ((__pyx_v_A0 != __pyx_v_D0) != 0); if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":609 + /* "pyFAI/ext/_distortion.pyx":618 * pCD = cCD = 0.0 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) # <<<<<<<<<<<<<< @@ -13330,7 +13312,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pDA = ((__pyx_v_A1 - __pyx_v_D1) / (__pyx_v_A0 - __pyx_v_D0)); - /* "pyFAI/ext/_distortion.pyx":610 + /* "pyFAI/ext/_distortion.pyx":619 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) * cDA = D1 - pDA * D0 # <<<<<<<<<<<<<< @@ -13342,7 +13324,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":612 + /* "pyFAI/ext/_distortion.pyx":621 * cDA = D1 - pDA * D0 * else: * pDA = cDA = 0.0 # <<<<<<<<<<<<<< @@ -13354,7 +13336,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L29:; - /* "pyFAI/ext/_distortion.pyx":613 + /* "pyFAI/ext/_distortion.pyx":622 * else: * pDA = cDA = 0.0 * integrate(buffer, B0, A0, pAB, cAB) # <<<<<<<<<<<<<< @@ -13363,7 +13345,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_B0, __pyx_v_A0, __pyx_v_pAB, __pyx_v_cAB); - /* "pyFAI/ext/_distortion.pyx":614 + /* "pyFAI/ext/_distortion.pyx":623 * pDA = cDA = 0.0 * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, A0, D0, pDA, cDA) # <<<<<<<<<<<<<< @@ -13372,7 +13354,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_A0, __pyx_v_D0, __pyx_v_pDA, __pyx_v_cDA); - /* "pyFAI/ext/_distortion.pyx":615 + /* "pyFAI/ext/_distortion.pyx":624 * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, A0, D0, pDA, cDA) * integrate(buffer, D0, C0, pCD, cCD) # <<<<<<<<<<<<<< @@ -13381,7 +13363,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_D0, __pyx_v_C0, __pyx_v_pCD, __pyx_v_cCD); - /* "pyFAI/ext/_distortion.pyx":616 + /* "pyFAI/ext/_distortion.pyx":625 * integrate(buffer, A0, D0, pDA, cDA) * integrate(buffer, D0, C0, pCD, cCD) * integrate(buffer, C0, B0, pBC, cBC) # <<<<<<<<<<<<<< @@ -13390,7 +13372,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_C0, __pyx_v_B0, __pyx_v_pBC, __pyx_v_cBC); - /* "pyFAI/ext/_distortion.pyx":617 + /* "pyFAI/ext/_distortion.pyx":626 * integrate(buffer, D0, C0, pCD, cCD) * integrate(buffer, C0, B0, pBC, cBC) * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) # <<<<<<<<<<<<<< @@ -13399,7 +13381,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_area = (0.5 * (((__pyx_v_C0 - __pyx_v_A0) * (__pyx_v_D1 - __pyx_v_B1)) - ((__pyx_v_C1 - __pyx_v_A1) * (__pyx_v_D0 - __pyx_v_B0)))); - /* "pyFAI/ext/_distortion.pyx":618 + /* "pyFAI/ext/_distortion.pyx":627 * integrate(buffer, C0, B0, pBC, cBC) * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) * for ms in range(box_size0): # <<<<<<<<<<<<<< @@ -13410,7 +13392,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_60 = 0; __pyx_t_60 < __pyx_t_59; __pyx_t_60+=1) { __pyx_v_ms = __pyx_t_60; - /* "pyFAI/ext/_distortion.pyx":619 + /* "pyFAI/ext/_distortion.pyx":628 * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) * for ms in range(box_size0): * ml = ms + offset0 # <<<<<<<<<<<<<< @@ -13419,7 +13401,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_ml = (__pyx_v_ms + __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":620 + /* "pyFAI/ext/_distortion.pyx":629 * for ms in range(box_size0): * ml = ms + offset0 * if ml < 0 or ml >= shape0: # <<<<<<<<<<<<<< @@ -13437,7 +13419,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L33_bool_binop_done:; if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":621 + /* "pyFAI/ext/_distortion.pyx":630 * ml = ms + offset0 * if ml < 0 or ml >= shape0: * continue # <<<<<<<<<<<<<< @@ -13447,7 +13429,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L30_continue; } - /* "pyFAI/ext/_distortion.pyx":622 + /* "pyFAI/ext/_distortion.pyx":631 * if ml < 0 or ml >= shape0: * continue * for ns in range(box_size1): # <<<<<<<<<<<<<< @@ -13458,7 +13440,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_62 = 0; __pyx_t_62 < __pyx_t_61; __pyx_t_62+=1) { __pyx_v_ns = __pyx_t_62; - /* "pyFAI/ext/_distortion.pyx":624 + /* "pyFAI/ext/_distortion.pyx":633 * for ns in range(box_size1): * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 # <<<<<<<<<<<<<< @@ -13467,7 +13449,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_nl = (__pyx_v_ns + __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":625 + /* "pyFAI/ext/_distortion.pyx":634 * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 * if nl < 0 or nl >= shape1: # <<<<<<<<<<<<<< @@ -13485,7 +13467,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L38_bool_binop_done:; if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":626 + /* "pyFAI/ext/_distortion.pyx":635 * nl = ns + offset1 * if nl < 0 or nl >= shape1: * continue # <<<<<<<<<<<<<< @@ -13495,7 +13477,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L35_continue; } - /* "pyFAI/ext/_distortion.pyx":627 + /* "pyFAI/ext/_distortion.pyx":636 * if nl < 0 or nl >= shape1: * continue * value = buffer[ms, ns] / area # <<<<<<<<<<<<<< @@ -13506,7 +13488,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_64 = __pyx_v_ns; __pyx_v_value = ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_63 * __pyx_v_buffer.strides[0]) )) + __pyx_t_64)) ))) / __pyx_v_area); - /* "pyFAI/ext/_distortion.pyx":628 + /* "pyFAI/ext/_distortion.pyx":637 * continue * value = buffer[ms, ns] / area * if value == 0.0: # <<<<<<<<<<<<<< @@ -13516,7 +13498,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_9 = ((__pyx_v_value == 0.0) != 0); if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":629 + /* "pyFAI/ext/_distortion.pyx":638 * value = buffer[ms, ns] / area * if value == 0.0: * continue # <<<<<<<<<<<<<< @@ -13526,7 +13508,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L35_continue; } - /* "pyFAI/ext/_distortion.pyx":630 + /* "pyFAI/ext/_distortion.pyx":639 * if value == 0.0: * continue * if value < 0.0 or value > 1.0001: # <<<<<<<<<<<<<< @@ -13544,7 +13526,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L42_bool_binop_done:; if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":632 + /* "pyFAI/ext/_distortion.pyx":641 * if value < 0.0 or value > 1.0001: * # here we print pathological cases for debugging * if err_cnt < 1000: # <<<<<<<<<<<<<< @@ -13554,7 +13536,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_9 = ((__pyx_v_err_cnt < 1000) != 0); if (__pyx_t_9) { - /* "pyFAI/ext/_distortion.pyx":633 + /* "pyFAI/ext/_distortion.pyx":642 * # here we print pathological cases for debugging * if err_cnt < 1000: * with gil: # <<<<<<<<<<<<<< @@ -13567,50 +13549,50 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":634 + /* "pyFAI/ext/_distortion.pyx":643 * if err_cnt < 1000: * with gil: * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) # <<<<<<<<<<<<<< * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 */ - __pyx_t_19 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_19 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_19); - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_ms); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_ms); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_box_size0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_box_size0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ns); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ns); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_box_size1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_box_size1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_65 = __pyx_v_ms; __pyx_t_66 = __pyx_v_ns; - __pyx_t_67 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_65 * __pyx_v_buffer.strides[0]) )) + __pyx_t_66)) )))); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_67 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_65 * __pyx_v_buffer.strides[0]) )) + __pyx_t_66)) )))); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_68 = PyFloat_FromDouble(__pyx_v_area); if (unlikely(!__pyx_t_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_68 = PyFloat_FromDouble(__pyx_v_area); if (unlikely(!__pyx_t_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_68); - __pyx_t_69 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_69 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_69); __pyx_t_70 = 0; __pyx_t_71 = 0; - __pyx_t_72 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_70 * __pyx_v_buffer.strides[0]) )) + __pyx_t_71)) )))); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_72 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_70 * __pyx_v_buffer.strides[0]) )) + __pyx_t_71)) )))); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_72); __pyx_t_73 = 0; __pyx_t_74 = 1; - __pyx_t_75 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_73 * __pyx_v_buffer.strides[0]) )) + __pyx_t_74)) )))); if (unlikely(!__pyx_t_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_75 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_73 * __pyx_v_buffer.strides[0]) )) + __pyx_t_74)) )))); if (unlikely(!__pyx_t_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_75); __pyx_t_76 = 1; __pyx_t_77 = 0; - __pyx_t_78 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_76 * __pyx_v_buffer.strides[0]) )) + __pyx_t_77)) )))); if (unlikely(!__pyx_t_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_78 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_76 * __pyx_v_buffer.strides[0]) )) + __pyx_t_77)) )))); if (unlikely(!__pyx_t_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_78); __pyx_t_79 = 1; __pyx_t_80 = 1; - __pyx_t_81 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_79 * __pyx_v_buffer.strides[0]) )) + __pyx_t_80)) )))); if (unlikely(!__pyx_t_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_81 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_79 * __pyx_v_buffer.strides[0]) )) + __pyx_t_80)) )))); if (unlikely(!__pyx_t_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_81); - __pyx_t_82 = PyTuple_New(13); if (unlikely(!__pyx_t_82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_82 = PyTuple_New(13); if (unlikely(!__pyx_t_82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_82); PyTuple_SET_ITEM(__pyx_t_82, 0, __pyx_t_19); __Pyx_GIVEREF(__pyx_t_19); @@ -13651,33 +13633,33 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_75 = 0; __pyx_t_78 = 0; __pyx_t_81 = 0; - if (__Pyx_PrintOne(0, __pyx_t_82) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + if (__Pyx_PrintOne(0, __pyx_t_82) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_DECREF(__pyx_t_82); __pyx_t_82 = 0; - /* "pyFAI/ext/_distortion.pyx":635 + /* "pyFAI/ext/_distortion.pyx":644 * with gil: * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) # <<<<<<<<<<<<<< * err_cnt += 1 * continue */ - __pyx_t_82 = PyFloat_FromDouble(__pyx_v_A0); if (unlikely(!__pyx_t_82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_82 = PyFloat_FromDouble(__pyx_v_A0); if (unlikely(!__pyx_t_82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_82); - __pyx_t_81 = PyFloat_FromDouble(__pyx_v_A1); if (unlikely(!__pyx_t_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_81 = PyFloat_FromDouble(__pyx_v_A1); if (unlikely(!__pyx_t_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_81); - __pyx_t_78 = PyFloat_FromDouble(__pyx_v_B0); if (unlikely(!__pyx_t_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_78 = PyFloat_FromDouble(__pyx_v_B0); if (unlikely(!__pyx_t_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_78); - __pyx_t_75 = PyFloat_FromDouble(__pyx_v_B1); if (unlikely(!__pyx_t_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_75 = PyFloat_FromDouble(__pyx_v_B1); if (unlikely(!__pyx_t_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_75); - __pyx_t_72 = PyFloat_FromDouble(__pyx_v_C0); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_72 = PyFloat_FromDouble(__pyx_v_C0); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_72); - __pyx_t_69 = PyFloat_FromDouble(__pyx_v_C1); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_69 = PyFloat_FromDouble(__pyx_v_C1); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_69); - __pyx_t_68 = PyFloat_FromDouble(__pyx_v_D0); if (unlikely(!__pyx_t_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_68 = PyFloat_FromDouble(__pyx_v_D0); if (unlikely(!__pyx_t_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_68); - __pyx_t_67 = PyFloat_FromDouble(__pyx_v_D1); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_67 = PyFloat_FromDouble(__pyx_v_D1); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_67); - __pyx_t_3 = PyTuple_New(8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_3 = PyTuple_New(8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_82); __Pyx_GIVEREF(__pyx_t_82); @@ -13703,14 +13685,14 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_69 = 0; __pyx_t_68 = 0; __pyx_t_67 = 0; - __pyx_t_67 = __Pyx_PyString_Format(__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, __pyx_t_3); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + __pyx_t_67 = __Pyx_PyString_Format(__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, __pyx_t_3); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_GOTREF(__pyx_t_67); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__Pyx_PrintOne(0, __pyx_t_67) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L48_error;} + if (__Pyx_PrintOne(0, __pyx_t_67) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L48_error;} __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0; } - /* "pyFAI/ext/_distortion.pyx":633 + /* "pyFAI/ext/_distortion.pyx":642 * # here we print pathological cases for debugging * if err_cnt < 1000: * with gil: # <<<<<<<<<<<<<< @@ -13734,7 +13716,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":636 + /* "pyFAI/ext/_distortion.pyx":645 * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 # <<<<<<<<<<<<<< @@ -13746,7 +13728,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L44:; - /* "pyFAI/ext/_distortion.pyx":637 + /* "pyFAI/ext/_distortion.pyx":646 * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 * continue # <<<<<<<<<<<<<< @@ -13756,7 +13738,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L35_continue; } - /* "pyFAI/ext/_distortion.pyx":639 + /* "pyFAI/ext/_distortion.pyx":648 * continue * * k = outMax[ml, nl] # <<<<<<<<<<<<<< @@ -13767,7 +13749,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_84 = __pyx_v_nl; __pyx_v_k = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outMax.data + __pyx_t_83 * __pyx_v_outMax.strides[0]) ) + __pyx_t_84 * __pyx_v_outMax.strides[1]) ))); - /* "pyFAI/ext/_distortion.pyx":640 + /* "pyFAI/ext/_distortion.pyx":649 * * k = outMax[ml, nl] * tmp_index = indptr[ml * shape1 + nl] # <<<<<<<<<<<<<< @@ -13777,7 +13759,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_85 = ((__pyx_v_ml * __pyx_v_shape1) + __pyx_v_nl); __pyx_v_tmp_index = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indptr.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_indptr.diminfo[0].strides)); - /* "pyFAI/ext/_distortion.pyx":641 + /* "pyFAI/ext/_distortion.pyx":650 * k = outMax[ml, nl] * tmp_index = indptr[ml * shape1 + nl] * indices[tmp_index + k] = idx # <<<<<<<<<<<<<< @@ -13787,7 +13769,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_86 = (__pyx_v_tmp_index + __pyx_v_k); *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_indices.diminfo[0].strides) = __pyx_v_idx; - /* "pyFAI/ext/_distortion.pyx":642 + /* "pyFAI/ext/_distortion.pyx":651 * tmp_index = indptr[ml * shape1 + nl] * indices[tmp_index + k] = idx * data[tmp_index + k] = value # <<<<<<<<<<<<<< @@ -13797,7 +13779,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_87 = (__pyx_v_tmp_index + __pyx_v_k); *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_data.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_data.diminfo[0].strides) = __pyx_v_value; - /* "pyFAI/ext/_distortion.pyx":643 + /* "pyFAI/ext/_distortion.pyx":652 * indices[tmp_index + k] = idx * data[tmp_index + k] = value * outMax[ml, nl] = k + 1 # <<<<<<<<<<<<<< @@ -13812,7 +13794,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L30_continue:; } - /* "pyFAI/ext/_distortion.pyx":644 + /* "pyFAI/ext/_distortion.pyx":653 * data[tmp_index + k] = value * outMax[ml, nl] = k + 1 * idx += 1 # <<<<<<<<<<<<<< @@ -13825,7 +13807,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":555 + /* "pyFAI/ext/_distortion.pyx":564 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], lut_size)) * with nogil: # <<<<<<<<<<<<<< @@ -13849,7 +13831,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":645 + /* "pyFAI/ext/_distortion.pyx":654 * outMax[ml, nl] = k + 1 * idx += 1 * return (data, indices, indptr) # <<<<<<<<<<<<<< @@ -13857,7 +13839,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_67 = PyTuple_New(3); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_67 = PyTuple_New(3); if (unlikely(!__pyx_t_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_67); __Pyx_INCREF(((PyObject *)__pyx_v_data)); PyTuple_SET_ITEM(__pyx_t_67, 0, ((PyObject *)__pyx_v_data)); @@ -13872,9 +13854,9 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_67 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":513 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":522 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_CSR(float[:, :, :, :] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """Calculate the Look-up table as CSR format @@ -13926,7 +13908,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":651 +/* "pyFAI/ext/_distortion.pyx":660 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_openmp(float[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< @@ -13936,7 +13918,7 @@ __pyx_t_26.strides[1] = __pyx_v_buffer.strides[1]; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_13calc_openmp(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_12calc_openmp[] = "Calculate the look-up table (or CSR) using OpenMP\n\n @param pos: 4D position array\n @param shape: output shape\n @param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel\n @param format: can be \"CSR\" or \"LUT\"\n @param bins_per_pixel: average splitting factor (number of pixels per bin)\n @return: look-up table in CSR/LUT format\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_12calc_openmp[] = "calc_openmp(__Pyx_memviewslice pos, shape, max_pixel_size=(8, 8), __Pyx_memviewslice mask=None, format='csr', int bins_per_pixel=8)\nCalculate the look-up table (or CSR) using OpenMP\n\n :param pos: 4D position array\n :param shape: output shape\n :param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel\n :param format: can be \"CSR\" or \"LUT\"\n :param bins_per_pixel: average splitting factor (number of pixels per bin)\n :return: look-up table in CSR/LUT format\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_13calc_openmp = {"calc_openmp", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_13calc_openmp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_12calc_openmp}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_13calc_openmp(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_pos = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -13955,7 +13937,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_13calc_openmp(PyObject *__py static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pos,&__pyx_n_s_shape,&__pyx_n_s_max_pixel_size,&__pyx_n_s_mask,&__pyx_n_s_format,&__pyx_n_s_bins_per_pixel,0}; PyObject* values[6] = {0,0,0,0,0,0}; - /* "pyFAI/ext/_distortion.pyx":653 + /* "pyFAI/ext/_distortion.pyx":662 * def calc_openmp(float[:, :, :, ::1] pos not None, * shape, * max_pixel_size=(8, 8), # <<<<<<<<<<<<<< @@ -13985,7 +13967,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_13calc_openmp(PyObject *__py case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_openmp", 0, 2, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_openmp", 0, 2, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -14009,7 +13991,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_13calc_openmp(PyObject *__py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_openmp") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_openmp") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -14023,36 +14005,36 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_13calc_openmp(PyObject *__py default: goto __pyx_L5_argtuple_error; } } - __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_pos = __Pyx_PyObject_to_MemoryviewSlice_d_d_d_dc_float(values[0]); if (unlikely(!__pyx_v_pos.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_shape = values[1]; __pyx_v_max_pixel_size = values[2]; if (values[3]) { - __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[3]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_mask = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[3]); if (unlikely(!__pyx_v_mask.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_mask = __pyx_k__23; __PYX_INC_MEMVIEW(&__pyx_v_mask, 1); } __pyx_v_format = values[4]; if (values[5]) { - __pyx_v_bins_per_pixel = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_bins_per_pixel == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_bins_per_pixel = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_bins_per_pixel == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_bins_per_pixel = ((int)8); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_openmp", 0, 2, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_openmp", 0, 2, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.calc_openmp", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_pos.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "pos"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(__pyx_self, __pyx_v_pos, __pyx_v_shape, __pyx_v_max_pixel_size, __pyx_v_mask, __pyx_v_format, __pyx_v_bins_per_pixel); - /* "pyFAI/ext/_distortion.pyx":651 + /* "pyFAI/ext/_distortion.pyx":660 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_openmp(float[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< @@ -14231,14 +14213,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __Pyx_RefNannySetupContext("calc_openmp", 0); __Pyx_INCREF(__pyx_v_format); - /* "pyFAI/ext/_distortion.pyx":668 + /* "pyFAI/ext/_distortion.pyx":677 * cdef: * int shape_in0, shape_in1, shape_out0, shape_out1, size_in, delta0, delta1, bins, large_size * format = format.lower() # <<<<<<<<<<<<<< * shape_out0, shape_out1 = shape * delta0, delta1 = max_pixel_size */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 677; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -14251,17 +14233,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 677; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 677; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":669 + /* "pyFAI/ext/_distortion.pyx":678 * int shape_in0, shape_in1, shape_out0, shape_out1, size_in, delta0, delta1, bins, large_size * format = format.lower() * shape_out0, shape_out1 = shape # <<<<<<<<<<<<<< @@ -14278,7 +14260,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -14291,21 +14273,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else - __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); #endif } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetIter(__pyx_v_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; @@ -14313,17 +14295,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_shape_out0 = __pyx_t_5; __pyx_v_shape_out1 = __pyx_t_6; - /* "pyFAI/ext/_distortion.pyx":670 + /* "pyFAI/ext/_distortion.pyx":679 * format = format.lower() * shape_out0, shape_out1 = shape * delta0, delta1 = max_pixel_size # <<<<<<<<<<<<<< @@ -14340,7 +14322,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -14353,21 +14335,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); #endif } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_v_max_pixel_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_GetIter(__pyx_v_max_pixel_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L6_unpacking_done; @@ -14375,17 +14357,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L6_unpacking_done:; } - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_delta0 = __pyx_t_6; __pyx_v_delta1 = __pyx_t_5; - /* "pyFAI/ext/_distortion.pyx":671 + /* "pyFAI/ext/_distortion.pyx":680 * shape_out0, shape_out1 = shape * delta0, delta1 = max_pixel_size * bins = shape_out0 * shape_out1 # <<<<<<<<<<<<<< @@ -14394,7 +14376,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_bins = (__pyx_v_shape_out0 * __pyx_v_shape_out1); - /* "pyFAI/ext/_distortion.pyx":672 + /* "pyFAI/ext/_distortion.pyx":681 * delta0, delta1 = max_pixel_size * bins = shape_out0 * shape_out1 * large_size = bins * bins_per_pixel # <<<<<<<<<<<<<< @@ -14403,7 +14385,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_large_size = (__pyx_v_bins * __pyx_v_bins_per_pixel); - /* "pyFAI/ext/_distortion.pyx":673 + /* "pyFAI/ext/_distortion.pyx":682 * bins = shape_out0 * shape_out1 * large_size = bins * bins_per_pixel * shape_in0 = pos.shape[0] # <<<<<<<<<<<<<< @@ -14412,7 +14394,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_shape_in0 = (__pyx_v_pos.shape[0]); - /* "pyFAI/ext/_distortion.pyx":674 + /* "pyFAI/ext/_distortion.pyx":683 * large_size = bins * bins_per_pixel * shape_in0 = pos.shape[0] * shape_in1 = pos.shape[1] # <<<<<<<<<<<<<< @@ -14421,7 +14403,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_shape_in1 = (__pyx_v_pos.shape[1]); - /* "pyFAI/ext/_distortion.pyx":675 + /* "pyFAI/ext/_distortion.pyx":684 * shape_in0 = pos.shape[0] * shape_in1 = pos.shape[1] * size_in = shape_in0 * shape_in1 # <<<<<<<<<<<<<< @@ -14430,7 +14412,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_size_in = (__pyx_v_shape_in0 * __pyx_v_shape_in1); - /* "pyFAI/ext/_distortion.pyx":680 + /* "pyFAI/ext/_distortion.pyx":689 * int i0, i1, lut_size, offset0, offset1, box_size0, box_size1 * int counter, bin_number * int idx, err_cnt=0 # <<<<<<<<<<<<<< @@ -14439,7 +14421,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_err_cnt = 0; - /* "pyFAI/ext/_distortion.pyx":686 + /* "pyFAI/ext/_distortion.pyx":695 * float[::1] data, large_data * float[:, ::1] buffer * bint do_mask = mask is not None # <<<<<<<<<<<<<< @@ -14448,7 +14430,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_do_mask = (((PyObject *) __pyx_v_mask.memview) != Py_None); - /* "pyFAI/ext/_distortion.pyx":688 + /* "pyFAI/ext/_distortion.pyx":697 * bint do_mask = mask is not None * lut_point[:, :] lut * if do_mask: # <<<<<<<<<<<<<< @@ -14458,7 +14440,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __pyx_t_7 = (__pyx_v_do_mask != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":689 + /* "pyFAI/ext/_distortion.pyx":698 * lut_point[:, :] lut * if do_mask: * assert shape_in0 == mask.shape[0], "shape_in0 == mask.shape[0]" # <<<<<<<<<<<<<< @@ -14469,12 +14451,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_shape_in0 == (__pyx_v_mask.shape[0])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_shape_in0_mask_shape_0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_distortion.pyx":690 + /* "pyFAI/ext/_distortion.pyx":699 * if do_mask: * assert shape_in0 == mask.shape[0], "shape_in0 == mask.shape[0]" * assert shape_in1 == mask.shape[1], "shape_in1 == mask.shape[1]" # <<<<<<<<<<<<<< @@ -14485,7 +14467,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_shape_in1 == (__pyx_v_mask.shape[1])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_shape_in1_mask_shape_1); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif @@ -14493,219 +14475,219 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED } __pyx_L7:; - /* "pyFAI/ext/_distortion.pyx":693 + /* "pyFAI/ext/_distortion.pyx":702 * * # count the number of pixel falling into every single bin * pixel_count = numpy.zeros(bins, dtype=numpy.int32) # <<<<<<<<<<<<<< * idx_pixel = numpy.zeros(large_size, dtype=numpy.int32) * idx_bin = numpy.zeros(large_size, dtype=numpy.int32) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_bins); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_int(__pyx_t_9); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 693; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_pixel_count = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/_distortion.pyx":694 + /* "pyFAI/ext/_distortion.pyx":703 * # count the number of pixel falling into every single bin * pixel_count = numpy.zeros(bins, dtype=numpy.int32) * idx_pixel = numpy.zeros(large_size, dtype=numpy.int32) # <<<<<<<<<<<<<< * idx_bin = numpy.zeros(large_size, dtype=numpy.int32) * large_data = numpy.zeros(large_size, dtype=numpy.float32) */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_large_size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_large_size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_int(__pyx_t_8); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_idx_pixel = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/_distortion.pyx":695 + /* "pyFAI/ext/_distortion.pyx":704 * pixel_count = numpy.zeros(bins, dtype=numpy.int32) * idx_pixel = numpy.zeros(large_size, dtype=numpy.int32) * idx_bin = numpy.zeros(large_size, dtype=numpy.int32) # <<<<<<<<<<<<<< * large_data = numpy.zeros(large_size, dtype=numpy.float32) * logger.info("Temporary storage: %.3fMB", */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_large_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_large_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_int(__pyx_t_2); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_idx_bin = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/_distortion.pyx":696 + /* "pyFAI/ext/_distortion.pyx":705 * idx_pixel = numpy.zeros(large_size, dtype=numpy.int32) * idx_bin = numpy.zeros(large_size, dtype=numpy.int32) * large_data = numpy.zeros(large_size, dtype=numpy.float32) # <<<<<<<<<<<<<< * logger.info("Temporary storage: %.3fMB", * (large_data.nbytes + pixel_count.nbytes + idx_pixel.nbytes + idx_bin.nbytes) / 1e6) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_large_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_large_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_1); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_large_data = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "pyFAI/ext/_distortion.pyx":697 + /* "pyFAI/ext/_distortion.pyx":706 * idx_bin = numpy.zeros(large_size, dtype=numpy.int32) * large_data = numpy.zeros(large_size, dtype=numpy.float32) * logger.info("Temporary storage: %.3fMB", # <<<<<<<<<<<<<< * (large_data.nbytes + pixel_count.nbytes + idx_pixel.nbytes + idx_bin.nbytes) / 1e6) * */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_distortion.pyx":698 + /* "pyFAI/ext/_distortion.pyx":707 * large_data = numpy.zeros(large_size, dtype=numpy.float32) * logger.info("Temporary storage: %.3fMB", * (large_data.nbytes + pixel_count.nbytes + idx_pixel.nbytes + idx_bin.nbytes) / 1e6) # <<<<<<<<<<<<<< * * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) */ - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_large_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_large_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_pixel_count, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_pixel_count, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_idx_pixel, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_idx_pixel, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Add(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyNumber_Add(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_idx_bin, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_idx_bin, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_float_1e6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_float_1e6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; @@ -14720,7 +14702,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __pyx_t_12 = 1; } } - __pyx_t_9 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_8) { PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL; @@ -14731,29 +14713,29 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_12, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":700 + /* "pyFAI/ext/_distortion.pyx":709 * (large_data.nbytes + pixel_count.nbytes + idx_pixel.nbytes + idx_bin.nbytes) / 1e6) * * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) # <<<<<<<<<<<<<< * counter = -1 # bin index * with nogil: */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -14761,33 +14743,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_9); __pyx_t_1 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_8); - if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_buffer = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; - /* "pyFAI/ext/_distortion.pyx":701 + /* "pyFAI/ext/_distortion.pyx":710 * * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * counter = -1 # bin index # <<<<<<<<<<<<<< @@ -14796,7 +14778,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_counter = -1; - /* "pyFAI/ext/_distortion.pyx":702 + /* "pyFAI/ext/_distortion.pyx":711 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * counter = -1 # bin index * with nogil: # <<<<<<<<<<<<<< @@ -14810,7 +14792,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":704 + /* "pyFAI/ext/_distortion.pyx":713 * with nogil: * # i, j, idx are indices of the raw image uncorrected * for idx in range(size_in): # <<<<<<<<<<<<<< @@ -14821,7 +14803,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_idx = __pyx_t_6; - /* "pyFAI/ext/_distortion.pyx":705 + /* "pyFAI/ext/_distortion.pyx":714 * # i, j, idx are indices of the raw image uncorrected * for idx in range(size_in): * i = idx // shape_in1 # <<<<<<<<<<<<<< @@ -14830,7 +14812,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_i = (__pyx_v_idx / __pyx_v_shape_in1); - /* "pyFAI/ext/_distortion.pyx":706 + /* "pyFAI/ext/_distortion.pyx":715 * for idx in range(size_in): * i = idx // shape_in1 * j = idx % shape_in1 # <<<<<<<<<<<<<< @@ -14839,7 +14821,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_j = (__pyx_v_idx % __pyx_v_shape_in1); - /* "pyFAI/ext/_distortion.pyx":707 + /* "pyFAI/ext/_distortion.pyx":716 * i = idx // shape_in1 * j = idx % shape_in1 * if do_mask and mask[i, j]: # <<<<<<<<<<<<<< @@ -14861,7 +14843,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED __pyx_L14_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":708 + /* "pyFAI/ext/_distortion.pyx":717 * j = idx % shape_in1 * if do_mask and mask[i, j]: * continue # <<<<<<<<<<<<<< @@ -14871,7 +14853,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED goto __pyx_L11_continue; } - /* "pyFAI/ext/_distortion.pyx":709 + /* "pyFAI/ext/_distortion.pyx":718 * if do_mask and mask[i, j]: * continue * idx = i * shape_in1 + j # pixel index # <<<<<<<<<<<<<< @@ -14880,7 +14862,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_12calc_openmp(CYTHON_UNUSED */ __pyx_v_idx = ((__pyx_v_i * __pyx_v_shape_in1) + __pyx_v_j); - /* "pyFAI/ext/_distortion.pyx":710 + /* "pyFAI/ext/_distortion.pyx":719 * continue * idx = i * shape_in1 + j # pixel index * buffer[:, :] = 0.0 # <<<<<<<<<<<<<< @@ -14913,7 +14895,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __PYX_XDEC_MEMVIEW(&__pyx_t_17, 0); - /* "pyFAI/ext/_distortion.pyx":711 + /* "pyFAI/ext/_distortion.pyx":720 * idx = i * shape_in1 + j # pixel index * buffer[:, :] = 0.0 * A0 = pos[i, j, 0, 0] # <<<<<<<<<<<<<< @@ -14930,7 +14912,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_20 < 0) __pyx_t_20 += __pyx_v_pos.shape[3]; __pyx_v_A0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_18 * __pyx_v_pos.strides[0]) ) + __pyx_t_19 * __pyx_v_pos.strides[1]) ) + __pyx_t_12 * __pyx_v_pos.strides[2]) )) + __pyx_t_20)) ))); - /* "pyFAI/ext/_distortion.pyx":712 + /* "pyFAI/ext/_distortion.pyx":721 * buffer[:, :] = 0.0 * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] # <<<<<<<<<<<<<< @@ -14947,7 +14929,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_24 < 0) __pyx_t_24 += __pyx_v_pos.shape[3]; __pyx_v_A1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_21 * __pyx_v_pos.strides[0]) ) + __pyx_t_22 * __pyx_v_pos.strides[1]) ) + __pyx_t_23 * __pyx_v_pos.strides[2]) )) + __pyx_t_24)) ))); - /* "pyFAI/ext/_distortion.pyx":713 + /* "pyFAI/ext/_distortion.pyx":722 * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] # <<<<<<<<<<<<<< @@ -14964,7 +14946,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_28 < 0) __pyx_t_28 += __pyx_v_pos.shape[3]; __pyx_v_B0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_25 * __pyx_v_pos.strides[0]) ) + __pyx_t_26 * __pyx_v_pos.strides[1]) ) + __pyx_t_27 * __pyx_v_pos.strides[2]) )) + __pyx_t_28)) ))); - /* "pyFAI/ext/_distortion.pyx":714 + /* "pyFAI/ext/_distortion.pyx":723 * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] # <<<<<<<<<<<<<< @@ -14981,7 +14963,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_32 < 0) __pyx_t_32 += __pyx_v_pos.shape[3]; __pyx_v_B1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_29 * __pyx_v_pos.strides[0]) ) + __pyx_t_30 * __pyx_v_pos.strides[1]) ) + __pyx_t_31 * __pyx_v_pos.strides[2]) )) + __pyx_t_32)) ))); - /* "pyFAI/ext/_distortion.pyx":715 + /* "pyFAI/ext/_distortion.pyx":724 * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] # <<<<<<<<<<<<<< @@ -14998,7 +14980,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_36 < 0) __pyx_t_36 += __pyx_v_pos.shape[3]; __pyx_v_C0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_33 * __pyx_v_pos.strides[0]) ) + __pyx_t_34 * __pyx_v_pos.strides[1]) ) + __pyx_t_35 * __pyx_v_pos.strides[2]) )) + __pyx_t_36)) ))); - /* "pyFAI/ext/_distortion.pyx":716 + /* "pyFAI/ext/_distortion.pyx":725 * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] # <<<<<<<<<<<<<< @@ -15015,7 +14997,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_40 < 0) __pyx_t_40 += __pyx_v_pos.shape[3]; __pyx_v_C1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_37 * __pyx_v_pos.strides[0]) ) + __pyx_t_38 * __pyx_v_pos.strides[1]) ) + __pyx_t_39 * __pyx_v_pos.strides[2]) )) + __pyx_t_40)) ))); - /* "pyFAI/ext/_distortion.pyx":717 + /* "pyFAI/ext/_distortion.pyx":726 * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] # <<<<<<<<<<<<<< @@ -15032,7 +15014,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_44 < 0) __pyx_t_44 += __pyx_v_pos.shape[3]; __pyx_v_D0 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_41 * __pyx_v_pos.strides[0]) ) + __pyx_t_42 * __pyx_v_pos.strides[1]) ) + __pyx_t_43 * __pyx_v_pos.strides[2]) )) + __pyx_t_44)) ))); - /* "pyFAI/ext/_distortion.pyx":718 + /* "pyFAI/ext/_distortion.pyx":727 * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] # <<<<<<<<<<<<<< @@ -15049,7 +15031,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_48 < 0) __pyx_t_48 += __pyx_v_pos.shape[3]; __pyx_v_D1 = (*((float *) ( /* dim=3 */ ((char *) (((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_45 * __pyx_v_pos.strides[0]) ) + __pyx_t_46 * __pyx_v_pos.strides[1]) ) + __pyx_t_47 * __pyx_v_pos.strides[2]) )) + __pyx_t_48)) ))); - /* "pyFAI/ext/_distortion.pyx":719 + /* "pyFAI/ext/_distortion.pyx":728 * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] * foffset0 = _floor_min4(A0, B0, C0, D0) # <<<<<<<<<<<<<< @@ -15058,7 +15040,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_foffset0 = __pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0); - /* "pyFAI/ext/_distortion.pyx":720 + /* "pyFAI/ext/_distortion.pyx":729 * D1 = pos[i, j, 3, 1] * foffset0 = _floor_min4(A0, B0, C0, D0) * foffset1 = _floor_min4(A1, B1, C1, D1) # <<<<<<<<<<<<<< @@ -15067,7 +15049,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_foffset1 = __pyx_f_5pyFAI_3ext_11_distortion__floor_min4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1); - /* "pyFAI/ext/_distortion.pyx":721 + /* "pyFAI/ext/_distortion.pyx":730 * foffset0 = _floor_min4(A0, B0, C0, D0) * foffset1 = _floor_min4(A1, B1, C1, D1) * offset0 = foffset0 # <<<<<<<<<<<<<< @@ -15076,7 +15058,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_offset0 = ((int)__pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":722 + /* "pyFAI/ext/_distortion.pyx":731 * foffset1 = _floor_min4(A1, B1, C1, D1) * offset0 = foffset0 * offset1 = foffset1 # <<<<<<<<<<<<<< @@ -15085,7 +15067,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_offset1 = ((int)__pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":723 + /* "pyFAI/ext/_distortion.pyx":732 * offset0 = foffset0 * offset1 = foffset1 * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 # <<<<<<<<<<<<<< @@ -15094,7 +15076,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_box_size0 = (((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A0, __pyx_v_B0, __pyx_v_C0, __pyx_v_D0)) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":724 + /* "pyFAI/ext/_distortion.pyx":733 * offset1 = foffset1 * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 * box_size1 = ( _ceil_max4(A1, B1, C1, D1)) - offset1 # <<<<<<<<<<<<<< @@ -15103,7 +15085,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_box_size1 = (((int)__pyx_f_5pyFAI_3ext_11_distortion__ceil_max4(__pyx_v_A1, __pyx_v_B1, __pyx_v_C1, __pyx_v_D1)) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":725 + /* "pyFAI/ext/_distortion.pyx":734 * box_size0 = ( _ceil_max4(A0, B0, C0, D0)) - offset0 * box_size1 = ( _ceil_max4(A1, B1, C1, D1)) - offset1 * if (box_size0 > delta0) or (box_size1 > delta1): # <<<<<<<<<<<<<< @@ -15121,7 +15103,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L17_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":727 + /* "pyFAI/ext/_distortion.pyx":736 * if (box_size0 > delta0) or (box_size1 > delta1): * # Increase size of the buffer * delta0 = offset0 if offset0 > delta0 else delta0 # <<<<<<<<<<<<<< @@ -15135,7 +15117,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_delta0 = __pyx_t_49; - /* "pyFAI/ext/_distortion.pyx":728 + /* "pyFAI/ext/_distortion.pyx":737 * # Increase size of the buffer * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 # <<<<<<<<<<<<<< @@ -15149,7 +15131,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_delta1 = __pyx_t_49; - /* "pyFAI/ext/_distortion.pyx":729 + /* "pyFAI/ext/_distortion.pyx":738 * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: # <<<<<<<<<<<<<< @@ -15162,23 +15144,23 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":730 + /* "pyFAI/ext/_distortion.pyx":739 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: * buffer = numpy.zeros((delta0, delta1), dtype=numpy.float32) # <<<<<<<<<<<<<< * * A0 = A0 - foffset0 */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_delta0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_delta1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); @@ -15186,27 +15168,27 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_GIVEREF(__pyx_t_9); __pyx_t_8 = 0; __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_1); - if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L22_error;} + if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L22_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_buffer, 1); __pyx_v_buffer = __pyx_t_13; @@ -15214,7 +15196,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_13.data = NULL; } - /* "pyFAI/ext/_distortion.pyx":729 + /* "pyFAI/ext/_distortion.pyx":738 * delta0 = offset0 if offset0 > delta0 else delta0 * delta1 = offset1 if offset1 > delta1 else delta1 * with gil: # <<<<<<<<<<<<<< @@ -15241,7 +15223,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L16:; - /* "pyFAI/ext/_distortion.pyx":732 + /* "pyFAI/ext/_distortion.pyx":741 * buffer = numpy.zeros((delta0, delta1), dtype=numpy.float32) * * A0 = A0 - foffset0 # <<<<<<<<<<<<<< @@ -15250,7 +15232,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A0 = (__pyx_v_A0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":733 + /* "pyFAI/ext/_distortion.pyx":742 * * A0 = A0 - foffset0 * A1 = A1 - foffset1 # <<<<<<<<<<<<<< @@ -15259,7 +15241,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A1 = (__pyx_v_A1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":734 + /* "pyFAI/ext/_distortion.pyx":743 * A0 = A0 - foffset0 * A1 = A1 - foffset1 * B0 = B0 - foffset0 # <<<<<<<<<<<<<< @@ -15268,7 +15250,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B0 = (__pyx_v_B0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":735 + /* "pyFAI/ext/_distortion.pyx":744 * A1 = A1 - foffset1 * B0 = B0 - foffset0 * B1 = B1 - foffset1 # <<<<<<<<<<<<<< @@ -15277,7 +15259,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B1 = (__pyx_v_B1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":736 + /* "pyFAI/ext/_distortion.pyx":745 * B0 = B0 - foffset0 * B1 = B1 - foffset1 * C0 = C0 - foffset0 # <<<<<<<<<<<<<< @@ -15286,7 +15268,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C0 = (__pyx_v_C0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":737 + /* "pyFAI/ext/_distortion.pyx":746 * B1 = B1 - foffset1 * C0 = C0 - foffset0 * C1 = C1 - foffset1 # <<<<<<<<<<<<<< @@ -15295,7 +15277,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C1 = (__pyx_v_C1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":738 + /* "pyFAI/ext/_distortion.pyx":747 * C0 = C0 - foffset0 * C1 = C1 - foffset1 * D0 = D0 - foffset0 # <<<<<<<<<<<<<< @@ -15304,7 +15286,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D0 = (__pyx_v_D0 - __pyx_v_foffset0); - /* "pyFAI/ext/_distortion.pyx":739 + /* "pyFAI/ext/_distortion.pyx":748 * C1 = C1 - foffset1 * D0 = D0 - foffset0 * D1 = D1 - foffset1 # <<<<<<<<<<<<<< @@ -15313,7 +15295,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D1 = (__pyx_v_D1 - __pyx_v_foffset1); - /* "pyFAI/ext/_distortion.pyx":740 + /* "pyFAI/ext/_distortion.pyx":749 * D0 = D0 - foffset0 * D1 = D1 - foffset1 * if B0 != A0: # <<<<<<<<<<<<<< @@ -15323,7 +15305,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_B0 != __pyx_v_A0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":741 + /* "pyFAI/ext/_distortion.pyx":750 * D1 = D1 - foffset1 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) # <<<<<<<<<<<<<< @@ -15332,7 +15314,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pAB = ((__pyx_v_B1 - __pyx_v_A1) / (__pyx_v_B0 - __pyx_v_A0)); - /* "pyFAI/ext/_distortion.pyx":742 + /* "pyFAI/ext/_distortion.pyx":751 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) * cAB = A1 - pAB * A0 # <<<<<<<<<<<<<< @@ -15344,7 +15326,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":744 + /* "pyFAI/ext/_distortion.pyx":753 * cAB = A1 - pAB * A0 * else: * pAB = cAB = 0.0 # <<<<<<<<<<<<<< @@ -15356,7 +15338,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L24:; - /* "pyFAI/ext/_distortion.pyx":745 + /* "pyFAI/ext/_distortion.pyx":754 * else: * pAB = cAB = 0.0 * if C0 != B0: # <<<<<<<<<<<<<< @@ -15366,7 +15348,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_C0 != __pyx_v_B0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":746 + /* "pyFAI/ext/_distortion.pyx":755 * pAB = cAB = 0.0 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) # <<<<<<<<<<<<<< @@ -15375,7 +15357,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pBC = ((__pyx_v_C1 - __pyx_v_B1) / (__pyx_v_C0 - __pyx_v_B0)); - /* "pyFAI/ext/_distortion.pyx":747 + /* "pyFAI/ext/_distortion.pyx":756 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) * cBC = B1 - pBC * B0 # <<<<<<<<<<<<<< @@ -15387,7 +15369,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":749 + /* "pyFAI/ext/_distortion.pyx":758 * cBC = B1 - pBC * B0 * else: * pBC = cBC = 0.0 # <<<<<<<<<<<<<< @@ -15399,7 +15381,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L25:; - /* "pyFAI/ext/_distortion.pyx":750 + /* "pyFAI/ext/_distortion.pyx":759 * else: * pBC = cBC = 0.0 * if D0 != C0: # <<<<<<<<<<<<<< @@ -15409,7 +15391,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_D0 != __pyx_v_C0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":751 + /* "pyFAI/ext/_distortion.pyx":760 * pBC = cBC = 0.0 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) # <<<<<<<<<<<<<< @@ -15418,7 +15400,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pCD = ((__pyx_v_D1 - __pyx_v_C1) / (__pyx_v_D0 - __pyx_v_C0)); - /* "pyFAI/ext/_distortion.pyx":752 + /* "pyFAI/ext/_distortion.pyx":761 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) * cCD = C1 - pCD * C0 # <<<<<<<<<<<<<< @@ -15430,7 +15412,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":754 + /* "pyFAI/ext/_distortion.pyx":763 * cCD = C1 - pCD * C0 * else: * pCD = cCD = 0.0 # <<<<<<<<<<<<<< @@ -15442,7 +15424,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L26:; - /* "pyFAI/ext/_distortion.pyx":755 + /* "pyFAI/ext/_distortion.pyx":764 * else: * pCD = cCD = 0.0 * if A0 != D0: # <<<<<<<<<<<<<< @@ -15452,7 +15434,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_A0 != __pyx_v_D0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":756 + /* "pyFAI/ext/_distortion.pyx":765 * pCD = cCD = 0.0 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) # <<<<<<<<<<<<<< @@ -15461,7 +15443,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pDA = ((__pyx_v_A1 - __pyx_v_D1) / (__pyx_v_A0 - __pyx_v_D0)); - /* "pyFAI/ext/_distortion.pyx":757 + /* "pyFAI/ext/_distortion.pyx":766 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) * cDA = D1 - pDA * D0 # <<<<<<<<<<<<<< @@ -15473,7 +15455,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":759 + /* "pyFAI/ext/_distortion.pyx":768 * cDA = D1 - pDA * D0 * else: * pDA = cDA = 0.0 # <<<<<<<<<<<<<< @@ -15485,7 +15467,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L27:; - /* "pyFAI/ext/_distortion.pyx":761 + /* "pyFAI/ext/_distortion.pyx":770 * pDA = cDA = 0.0 * * integrate(buffer, B0, A0, pAB, cAB) # <<<<<<<<<<<<<< @@ -15494,7 +15476,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_B0, __pyx_v_A0, __pyx_v_pAB, __pyx_v_cAB); - /* "pyFAI/ext/_distortion.pyx":762 + /* "pyFAI/ext/_distortion.pyx":771 * * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, A0, D0, pDA, cDA) # <<<<<<<<<<<<<< @@ -15503,7 +15485,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_A0, __pyx_v_D0, __pyx_v_pDA, __pyx_v_cDA); - /* "pyFAI/ext/_distortion.pyx":763 + /* "pyFAI/ext/_distortion.pyx":772 * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, A0, D0, pDA, cDA) * integrate(buffer, D0, C0, pCD, cCD) # <<<<<<<<<<<<<< @@ -15512,7 +15494,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_D0, __pyx_v_C0, __pyx_v_pCD, __pyx_v_cCD); - /* "pyFAI/ext/_distortion.pyx":764 + /* "pyFAI/ext/_distortion.pyx":773 * integrate(buffer, A0, D0, pDA, cDA) * integrate(buffer, D0, C0, pCD, cCD) * integrate(buffer, C0, B0, pBC, cBC) # <<<<<<<<<<<<<< @@ -15521,7 +15503,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_C0, __pyx_v_B0, __pyx_v_pBC, __pyx_v_cBC); - /* "pyFAI/ext/_distortion.pyx":765 + /* "pyFAI/ext/_distortion.pyx":774 * integrate(buffer, D0, C0, pCD, cCD) * integrate(buffer, C0, B0, pBC, cBC) * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) # <<<<<<<<<<<<<< @@ -15530,7 +15512,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_area = (0.5 * (((__pyx_v_C0 - __pyx_v_A0) * (__pyx_v_D1 - __pyx_v_B1)) - ((__pyx_v_C1 - __pyx_v_A1) * (__pyx_v_D0 - __pyx_v_B0)))); - /* "pyFAI/ext/_distortion.pyx":766 + /* "pyFAI/ext/_distortion.pyx":775 * integrate(buffer, C0, B0, pBC, cBC) * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) * for ms in range(box_size0): # <<<<<<<<<<<<<< @@ -15541,7 +15523,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_50 = 0; __pyx_t_50 < __pyx_t_49; __pyx_t_50+=1) { __pyx_v_ms = __pyx_t_50; - /* "pyFAI/ext/_distortion.pyx":767 + /* "pyFAI/ext/_distortion.pyx":776 * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) * for ms in range(box_size0): * ml = ms + offset0 # <<<<<<<<<<<<<< @@ -15550,7 +15532,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_ml = (__pyx_v_ms + __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":768 + /* "pyFAI/ext/_distortion.pyx":777 * for ms in range(box_size0): * ml = ms + offset0 * if ml < 0 or ml >= shape_out0: # <<<<<<<<<<<<<< @@ -15568,7 +15550,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L31_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":769 + /* "pyFAI/ext/_distortion.pyx":778 * ml = ms + offset0 * if ml < 0 or ml >= shape_out0: * continue # <<<<<<<<<<<<<< @@ -15578,7 +15560,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L28_continue; } - /* "pyFAI/ext/_distortion.pyx":770 + /* "pyFAI/ext/_distortion.pyx":779 * if ml < 0 or ml >= shape_out0: * continue * for ns in range(box_size1): # <<<<<<<<<<<<<< @@ -15589,7 +15571,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_52 = 0; __pyx_t_52 < __pyx_t_51; __pyx_t_52+=1) { __pyx_v_ns = __pyx_t_52; - /* "pyFAI/ext/_distortion.pyx":772 + /* "pyFAI/ext/_distortion.pyx":781 * for ns in range(box_size1): * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 # <<<<<<<<<<<<<< @@ -15598,7 +15580,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_nl = (__pyx_v_ns + __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":773 + /* "pyFAI/ext/_distortion.pyx":782 * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 * if nl < 0 or nl >= shape_out1: # <<<<<<<<<<<<<< @@ -15616,7 +15598,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L36_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":774 + /* "pyFAI/ext/_distortion.pyx":783 * nl = ns + offset1 * if nl < 0 or nl >= shape_out1: * continue # <<<<<<<<<<<<<< @@ -15626,7 +15608,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L33_continue; } - /* "pyFAI/ext/_distortion.pyx":775 + /* "pyFAI/ext/_distortion.pyx":784 * if nl < 0 or nl >= shape_out1: * continue * value = buffer[ms, ns] / area # <<<<<<<<<<<<<< @@ -15639,7 +15621,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_54 < 0) __pyx_t_54 += __pyx_v_buffer.shape[1]; __pyx_v_value = ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_53 * __pyx_v_buffer.strides[0]) )) + __pyx_t_54)) ))) / __pyx_v_area); - /* "pyFAI/ext/_distortion.pyx":776 + /* "pyFAI/ext/_distortion.pyx":785 * continue * value = buffer[ms, ns] / area * if value == 0.0: # <<<<<<<<<<<<<< @@ -15649,7 +15631,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_value == 0.0) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":777 + /* "pyFAI/ext/_distortion.pyx":786 * value = buffer[ms, ns] / area * if value == 0.0: * continue # <<<<<<<<<<<<<< @@ -15659,7 +15641,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L33_continue; } - /* "pyFAI/ext/_distortion.pyx":778 + /* "pyFAI/ext/_distortion.pyx":787 * if value == 0.0: * continue * if value < 0.0 or value > 1.0001: # <<<<<<<<<<<<<< @@ -15677,7 +15659,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L40_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":780 + /* "pyFAI/ext/_distortion.pyx":789 * if value < 0.0 or value > 1.0001: * # here we print pathological cases for debugging * if err_cnt < 1000: # <<<<<<<<<<<<<< @@ -15687,7 +15669,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_err_cnt < 1000) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":781 + /* "pyFAI/ext/_distortion.pyx":790 * # here we print pathological cases for debugging * if err_cnt < 1000: * with gil: # <<<<<<<<<<<<<< @@ -15700,60 +15682,60 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":782 + /* "pyFAI/ext/_distortion.pyx":791 * if err_cnt < 1000: * with gil: * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) # <<<<<<<<<<<<<< * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_ms); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_ms); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_box_size0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_box_size0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_ns); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_ns); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_box_size1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_box_size1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_55); __pyx_t_56 = __pyx_v_ms; __pyx_t_57 = __pyx_v_ns; if (__pyx_t_56 < 0) __pyx_t_56 += __pyx_v_buffer.shape[0]; if (__pyx_t_57 < 0) __pyx_t_57 += __pyx_v_buffer.shape[1]; - __pyx_t_58 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_56 * __pyx_v_buffer.strides[0]) )) + __pyx_t_57)) )))); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_58 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_56 * __pyx_v_buffer.strides[0]) )) + __pyx_t_57)) )))); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_59 = PyFloat_FromDouble(__pyx_v_area); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_59 = PyFloat_FromDouble(__pyx_v_area); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_59); - __pyx_t_60 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_60 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_60); __pyx_t_61 = 0; __pyx_t_62 = 0; if (__pyx_t_61 < 0) __pyx_t_61 += __pyx_v_buffer.shape[0]; if (__pyx_t_62 < 0) __pyx_t_62 += __pyx_v_buffer.shape[1]; - __pyx_t_63 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_61 * __pyx_v_buffer.strides[0]) )) + __pyx_t_62)) )))); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_63 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_61 * __pyx_v_buffer.strides[0]) )) + __pyx_t_62)) )))); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_63); __pyx_t_64 = 0; __pyx_t_65 = 1; if (__pyx_t_64 < 0) __pyx_t_64 += __pyx_v_buffer.shape[0]; if (__pyx_t_65 < 0) __pyx_t_65 += __pyx_v_buffer.shape[1]; - __pyx_t_66 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_64 * __pyx_v_buffer.strides[0]) )) + __pyx_t_65)) )))); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_66 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_64 * __pyx_v_buffer.strides[0]) )) + __pyx_t_65)) )))); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_66); __pyx_t_67 = 1; __pyx_t_68 = 0; if (__pyx_t_67 < 0) __pyx_t_67 += __pyx_v_buffer.shape[0]; if (__pyx_t_68 < 0) __pyx_t_68 += __pyx_v_buffer.shape[1]; - __pyx_t_69 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_67 * __pyx_v_buffer.strides[0]) )) + __pyx_t_68)) )))); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_69 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_67 * __pyx_v_buffer.strides[0]) )) + __pyx_t_68)) )))); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_69); __pyx_t_70 = 1; __pyx_t_71 = 1; if (__pyx_t_70 < 0) __pyx_t_70 += __pyx_v_buffer.shape[0]; if (__pyx_t_71 < 0) __pyx_t_71 += __pyx_v_buffer.shape[1]; - __pyx_t_72 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_70 * __pyx_v_buffer.strides[0]) )) + __pyx_t_71)) )))); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_72 = PyFloat_FromDouble((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_70 * __pyx_v_buffer.strides[0]) )) + __pyx_t_71)) )))); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_72); - __pyx_t_73 = PyTuple_New(13); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_73 = PyTuple_New(13); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_73); PyTuple_SET_ITEM(__pyx_t_73, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -15794,33 +15776,33 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_66 = 0; __pyx_t_69 = 0; __pyx_t_72 = 0; - if (__Pyx_PrintOne(0, __pyx_t_73) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + if (__Pyx_PrintOne(0, __pyx_t_73) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_DECREF(__pyx_t_73); __pyx_t_73 = 0; - /* "pyFAI/ext/_distortion.pyx":783 + /* "pyFAI/ext/_distortion.pyx":792 * with gil: * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) # <<<<<<<<<<<<<< * err_cnt += 1 * continue */ - __pyx_t_73 = PyFloat_FromDouble(__pyx_v_A0); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_73 = PyFloat_FromDouble(__pyx_v_A0); if (unlikely(!__pyx_t_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_73); - __pyx_t_72 = PyFloat_FromDouble(__pyx_v_A1); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_72 = PyFloat_FromDouble(__pyx_v_A1); if (unlikely(!__pyx_t_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_72); - __pyx_t_69 = PyFloat_FromDouble(__pyx_v_B0); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_69 = PyFloat_FromDouble(__pyx_v_B0); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_69); - __pyx_t_66 = PyFloat_FromDouble(__pyx_v_B1); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_66 = PyFloat_FromDouble(__pyx_v_B1); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_66); - __pyx_t_63 = PyFloat_FromDouble(__pyx_v_C0); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_63 = PyFloat_FromDouble(__pyx_v_C0); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_60 = PyFloat_FromDouble(__pyx_v_C1); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_60 = PyFloat_FromDouble(__pyx_v_C1); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_60); - __pyx_t_59 = PyFloat_FromDouble(__pyx_v_D0); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_59 = PyFloat_FromDouble(__pyx_v_D0); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_59); - __pyx_t_58 = PyFloat_FromDouble(__pyx_v_D1); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_58 = PyFloat_FromDouble(__pyx_v_D1); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_55 = PyTuple_New(8); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_55 = PyTuple_New(8); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_55); PyTuple_SET_ITEM(__pyx_t_55, 0, __pyx_t_73); __Pyx_GIVEREF(__pyx_t_73); @@ -15846,14 +15828,14 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_60 = 0; __pyx_t_59 = 0; __pyx_t_58 = 0; - __pyx_t_58 = __Pyx_PyString_Format(__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, __pyx_t_55); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + __pyx_t_58 = __Pyx_PyString_Format(__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, __pyx_t_55); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - if (__Pyx_PrintOne(0, __pyx_t_58) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L46_error;} + if (__Pyx_PrintOne(0, __pyx_t_58) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L46_error;} __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; } - /* "pyFAI/ext/_distortion.pyx":781 + /* "pyFAI/ext/_distortion.pyx":790 * # here we print pathological cases for debugging * if err_cnt < 1000: * with gil: # <<<<<<<<<<<<<< @@ -15877,7 +15859,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":784 + /* "pyFAI/ext/_distortion.pyx":793 * print(i, j, ms, box_size0, ns, box_size1, buffer[ms, ns], area, value, buffer[0, 0], buffer[0, 1], buffer[1, 0], buffer[1, 1]) * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 # <<<<<<<<<<<<<< @@ -15889,7 +15871,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L42:; - /* "pyFAI/ext/_distortion.pyx":785 + /* "pyFAI/ext/_distortion.pyx":794 * print(" A0=%s; A1=%s; B0=%s; B1=%s; C0=%s; C1=%s; D0=%s; D1=%s" % (A0, A1, B0, B1, C0, C1, D0, D1)) * err_cnt += 1 * continue # <<<<<<<<<<<<<< @@ -15899,7 +15881,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L33_continue; } - /* "pyFAI/ext/_distortion.pyx":787 + /* "pyFAI/ext/_distortion.pyx":796 * continue * * bin_number = ml * shape_out1 + nl # <<<<<<<<<<<<<< @@ -15908,7 +15890,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_bin_number = ((__pyx_v_ml * __pyx_v_shape_out1) + __pyx_v_nl); - /* "pyFAI/ext/_distortion.pyx":789 + /* "pyFAI/ext/_distortion.pyx":798 * bin_number = ml * shape_out1 + nl * # with gil: #Use the gil to perform an atomic operation * counter += 1 # <<<<<<<<<<<<<< @@ -15917,7 +15899,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_counter = (__pyx_v_counter + 1); - /* "pyFAI/ext/_distortion.pyx":790 + /* "pyFAI/ext/_distortion.pyx":799 * # with gil: #Use the gil to perform an atomic operation * counter += 1 * pixel_count[bin_number] += 1 # <<<<<<<<<<<<<< @@ -15928,7 +15910,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_74 < 0) __pyx_t_74 += __pyx_v_pixel_count.shape[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_pixel_count.data) + __pyx_t_74)) )) += 1; - /* "pyFAI/ext/_distortion.pyx":791 + /* "pyFAI/ext/_distortion.pyx":800 * counter += 1 * pixel_count[bin_number] += 1 * if counter >= large_size: # <<<<<<<<<<<<<< @@ -15938,7 +15920,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_7 = ((__pyx_v_counter >= __pyx_v_large_size) != 0); if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":792 + /* "pyFAI/ext/_distortion.pyx":801 * pixel_count[bin_number] += 1 * if counter >= large_size: * with gil: # <<<<<<<<<<<<<< @@ -15951,76 +15933,76 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":794 + /* "pyFAI/ext/_distortion.pyx":803 * with gil: * raise RuntimeError("Provided temporary space for storage is not enough. " + * "Please increase bins_per_pixel=%s. "%bins_per_pixel + # <<<<<<<<<<<<<< * "The suggested value is %i or greater."%ceil(1.1*bins_per_pixel*size_in/idx)) * idx_pixel[counter] += idx */ - __pyx_t_58 = __Pyx_PyInt_From_int(__pyx_v_bins_per_pixel); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_58 = __Pyx_PyInt_From_int(__pyx_v_bins_per_pixel); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_55 = __Pyx_PyString_Format(__pyx_kp_s_Please_increase_bins_per_pixel_s, __pyx_t_58); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_55 = __Pyx_PyString_Format(__pyx_kp_s_Please_increase_bins_per_pixel_s, __pyx_t_58); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; - /* "pyFAI/ext/_distortion.pyx":793 + /* "pyFAI/ext/_distortion.pyx":802 * if counter >= large_size: * with gil: * raise RuntimeError("Provided temporary space for storage is not enough. " + # <<<<<<<<<<<<<< * "Please increase bins_per_pixel=%s. "%bins_per_pixel + * "The suggested value is %i or greater."%ceil(1.1*bins_per_pixel*size_in/idx)) */ - __pyx_t_58 = PyNumber_Add(__pyx_kp_s_Provided_temporary_space_for_sto, __pyx_t_55); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_58 = PyNumber_Add(__pyx_kp_s_Provided_temporary_space_for_sto, __pyx_t_55); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - /* "pyFAI/ext/_distortion.pyx":795 + /* "pyFAI/ext/_distortion.pyx":804 * raise RuntimeError("Provided temporary space for storage is not enough. " + * "Please increase bins_per_pixel=%s. "%bins_per_pixel + * "The suggested value is %i or greater."%ceil(1.1*bins_per_pixel*size_in/idx)) # <<<<<<<<<<<<<< * idx_pixel[counter] += idx * idx_bin[counter] += bin_number */ - __pyx_t_55 = PyFloat_FromDouble(ceil((((1.1 * __pyx_v_bins_per_pixel) * __pyx_v_size_in) / __pyx_v_idx))); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_55 = PyFloat_FromDouble(ceil((((1.1 * __pyx_v_bins_per_pixel) * __pyx_v_size_in) / __pyx_v_idx))); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_59 = __Pyx_PyString_Format(__pyx_kp_s_The_suggested_value_is_i_or_grea, __pyx_t_55); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_59 = __Pyx_PyString_Format(__pyx_kp_s_The_suggested_value_is_i_or_grea, __pyx_t_55); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_59); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - /* "pyFAI/ext/_distortion.pyx":794 + /* "pyFAI/ext/_distortion.pyx":803 * with gil: * raise RuntimeError("Provided temporary space for storage is not enough. " + * "Please increase bins_per_pixel=%s. "%bins_per_pixel + # <<<<<<<<<<<<<< * "The suggested value is %i or greater."%ceil(1.1*bins_per_pixel*size_in/idx)) * idx_pixel[counter] += idx */ - __pyx_t_55 = PyNumber_Add(__pyx_t_58, __pyx_t_59); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_55 = PyNumber_Add(__pyx_t_58, __pyx_t_59); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; __Pyx_DECREF(__pyx_t_59); __pyx_t_59 = 0; - /* "pyFAI/ext/_distortion.pyx":793 + /* "pyFAI/ext/_distortion.pyx":802 * if counter >= large_size: * with gil: * raise RuntimeError("Provided temporary space for storage is not enough. " + # <<<<<<<<<<<<<< * "Please increase bins_per_pixel=%s. "%bins_per_pixel + * "The suggested value is %i or greater."%ceil(1.1*bins_per_pixel*size_in/idx)) */ - __pyx_t_59 = PyTuple_New(1); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_59 = PyTuple_New(1); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_59); PyTuple_SET_ITEM(__pyx_t_59, 0, __pyx_t_55); __Pyx_GIVEREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_55 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_59, NULL); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + __pyx_t_55 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_59, NULL); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L52_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_59); __pyx_t_59 = 0; __Pyx_Raise(__pyx_t_55, 0, 0, 0); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L52_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L52_error;} } - /* "pyFAI/ext/_distortion.pyx":792 + /* "pyFAI/ext/_distortion.pyx":801 * pixel_count[bin_number] += 1 * if counter >= large_size: * with gil: # <<<<<<<<<<<<<< @@ -16038,7 +16020,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":796 + /* "pyFAI/ext/_distortion.pyx":805 * "Please increase bins_per_pixel=%s. "%bins_per_pixel + * "The suggested value is %i or greater."%ceil(1.1*bins_per_pixel*size_in/idx)) * idx_pixel[counter] += idx # <<<<<<<<<<<<<< @@ -16049,7 +16031,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_75 < 0) __pyx_t_75 += __pyx_v_idx_pixel.shape[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_idx_pixel.data) + __pyx_t_75)) )) += __pyx_v_idx; - /* "pyFAI/ext/_distortion.pyx":797 + /* "pyFAI/ext/_distortion.pyx":806 * "The suggested value is %i or greater."%ceil(1.1*bins_per_pixel*size_in/idx)) * idx_pixel[counter] += idx * idx_bin[counter] += bin_number # <<<<<<<<<<<<<< @@ -16060,7 +16042,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_76 < 0) __pyx_t_76 += __pyx_v_idx_bin.shape[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_idx_bin.data) + __pyx_t_76)) )) += __pyx_v_bin_number; - /* "pyFAI/ext/_distortion.pyx":798 + /* "pyFAI/ext/_distortion.pyx":807 * idx_pixel[counter] += idx * idx_bin[counter] += bin_number * large_data[counter] += value # <<<<<<<<<<<<<< @@ -16078,7 +16060,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":702 + /* "pyFAI/ext/_distortion.pyx":711 * buffer = numpy.empty((delta0, delta1), dtype=numpy.float32) * counter = -1 # bin index * with nogil: # <<<<<<<<<<<<<< @@ -16102,31 +16084,31 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":799 + /* "pyFAI/ext/_distortion.pyx":808 * idx_bin[counter] += bin_number * large_data[counter] += value * logger.info("number of elements: %s, average per bin %.3f allocated max: %s", # <<<<<<<<<<<<<< * counter, counter / size_in, bins_per_pixel) * */ - __pyx_t_59 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_59 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_59); - __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_59, __pyx_n_s_info); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_59, __pyx_n_s_info); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_59); __pyx_t_59 = 0; - /* "pyFAI/ext/_distortion.pyx":800 + /* "pyFAI/ext/_distortion.pyx":809 * large_data[counter] += value * logger.info("number of elements: %s, average per bin %.3f allocated max: %s", * counter, counter / size_in, bins_per_pixel) # <<<<<<<<<<<<<< * * if format == "csr": */ - __pyx_t_59 = __Pyx_PyInt_From_int(__pyx_v_counter); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_59 = __Pyx_PyInt_From_int(__pyx_v_counter); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_59); - __pyx_t_60 = __Pyx_PyInt_From_int((__pyx_v_counter / __pyx_v_size_in)); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyInt_From_int((__pyx_v_counter / __pyx_v_size_in)); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); - __pyx_t_63 = __Pyx_PyInt_From_int(__pyx_v_bins_per_pixel); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_PyInt_From_int(__pyx_v_bins_per_pixel); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); __pyx_t_66 = NULL; __pyx_t_78 = 0; @@ -16140,7 +16122,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_78 = 1; } } - __pyx_t_69 = PyTuple_New(4+__pyx_t_78); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = PyTuple_New(4+__pyx_t_78); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); if (__pyx_t_66) { PyTuple_SET_ITEM(__pyx_t_69, 0, __pyx_t_66); __Pyx_GIVEREF(__pyx_t_66); __pyx_t_66 = NULL; @@ -16157,63 +16139,63 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_59 = 0; __pyx_t_60 = 0; __pyx_t_63 = 0; - __pyx_t_55 = __Pyx_PyObject_Call(__pyx_t_58, __pyx_t_69, NULL); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyObject_Call(__pyx_t_58, __pyx_t_69, NULL); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - /* "pyFAI/ext/_distortion.pyx":802 + /* "pyFAI/ext/_distortion.pyx":811 * counter, counter / size_in, bins_per_pixel) * * if format == "csr": # <<<<<<<<<<<<<< * indptr = numpy.zeros(bins + 1, dtype=numpy.int32) * # cumsum */ - __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_csr, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_csr, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":803 + /* "pyFAI/ext/_distortion.pyx":812 * * if format == "csr": * indptr = numpy.zeros(bins + 1, dtype=numpy.int32) # <<<<<<<<<<<<<< * # cumsum * j = 0 */ - __pyx_t_55 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_55, __pyx_n_s_zeros); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_55, __pyx_n_s_zeros); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_55 = __Pyx_PyInt_From_long((__pyx_v_bins + 1)); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyInt_From_long((__pyx_v_bins + 1)); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_69 = PyTuple_New(1); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = PyTuple_New(1); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); PyTuple_SET_ITEM(__pyx_t_69, 0, __pyx_t_55); __Pyx_GIVEREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_55 = PyDict_New(); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = PyDict_New(); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_int32); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_int32); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - if (PyDict_SetItem(__pyx_t_55, __pyx_n_s_dtype, __pyx_t_60) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_55, __pyx_n_s_dtype, __pyx_t_60) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; - __pyx_t_60 = __Pyx_PyObject_Call(__pyx_t_58, __pyx_t_69, __pyx_t_55); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_Call(__pyx_t_58, __pyx_t_69, __pyx_t_55); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_int(__pyx_t_60); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; __pyx_v_indptr = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/_distortion.pyx":805 + /* "pyFAI/ext/_distortion.pyx":814 * indptr = numpy.zeros(bins + 1, dtype=numpy.int32) * # cumsum * j = 0 # <<<<<<<<<<<<<< @@ -16222,7 +16204,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_j = 0; - /* "pyFAI/ext/_distortion.pyx":806 + /* "pyFAI/ext/_distortion.pyx":815 * # cumsum * j = 0 * for i in range(bins): # <<<<<<<<<<<<<< @@ -16233,7 +16215,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "pyFAI/ext/_distortion.pyx":807 + /* "pyFAI/ext/_distortion.pyx":816 * j = 0 * for i in range(bins): * indptr[i] = j # <<<<<<<<<<<<<< @@ -16244,7 +16226,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_49 < 0) __pyx_t_49 += __pyx_v_indptr.shape[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_indptr.data) + __pyx_t_49)) )) = __pyx_v_j; - /* "pyFAI/ext/_distortion.pyx":808 + /* "pyFAI/ext/_distortion.pyx":817 * for i in range(bins): * indptr[i] = j * j += pixel_count[i] # <<<<<<<<<<<<<< @@ -16256,7 +16238,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; __pyx_v_j = (__pyx_v_j + (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_pixel_count.data) + __pyx_t_50)) )))); } - /* "pyFAI/ext/_distortion.pyx":809 + /* "pyFAI/ext/_distortion.pyx":818 * indptr[i] = j * j += pixel_count[i] * indptr[bins] = j # <<<<<<<<<<<<<< @@ -16267,7 +16249,7 @@ __pyx_t_17.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_5 < 0) __pyx_t_5 += __pyx_v_indptr.shape[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_indptr.data) + __pyx_t_5)) )) = __pyx_v_j; - /* "pyFAI/ext/_distortion.pyx":811 + /* "pyFAI/ext/_distortion.pyx":820 * indptr[bins] = j * # indptr[1:] = numpy.asarray(pixel_count).cumsum(dtype=numpy.int32) * pixel_count[:] = 0 # <<<<<<<<<<<<<< @@ -16296,7 +16278,7 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; } __PYX_XDEC_MEMVIEW(&__pyx_t_79, 1); - /* "pyFAI/ext/_distortion.pyx":812 + /* "pyFAI/ext/_distortion.pyx":821 * # indptr[1:] = numpy.asarray(pixel_count).cumsum(dtype=numpy.int32) * pixel_count[:] = 0 * lut_size = indptr[bins] # <<<<<<<<<<<<<< @@ -16307,127 +16289,127 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_6 < 0) __pyx_t_6 += __pyx_v_indptr.shape[0]; __pyx_v_lut_size = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_indptr.data) + __pyx_t_6)) ))); - /* "pyFAI/ext/_distortion.pyx":813 + /* "pyFAI/ext/_distortion.pyx":822 * pixel_count[:] = 0 * lut_size = indptr[bins] * indices = numpy.zeros(shape=lut_size, dtype=numpy.int32) # <<<<<<<<<<<<<< * data = numpy.zeros(shape=lut_size, dtype=numpy.float32) * */ - __pyx_t_60 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); - __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_60, __pyx_n_s_zeros); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_60, __pyx_n_s_zeros); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; - __pyx_t_60 = PyDict_New(); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = PyDict_New(); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); - __pyx_t_69 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); - if (PyDict_SetItem(__pyx_t_60, __pyx_n_s_shape, __pyx_t_69) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_60, __pyx_n_s_shape, __pyx_t_69) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; - __pyx_t_69 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); - __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_69, __pyx_n_s_int32); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_69, __pyx_n_s_int32); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; - if (PyDict_SetItem(__pyx_t_60, __pyx_n_s_dtype, __pyx_t_58) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_60, __pyx_n_s_dtype, __pyx_t_58) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; - __pyx_t_58 = __Pyx_PyObject_Call(__pyx_t_55, __pyx_empty_tuple, __pyx_t_60); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_PyObject_Call(__pyx_t_55, __pyx_empty_tuple, __pyx_t_60); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_int(__pyx_t_58); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; __pyx_v_indices = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/_distortion.pyx":814 + /* "pyFAI/ext/_distortion.pyx":823 * lut_size = indptr[bins] * indices = numpy.zeros(shape=lut_size, dtype=numpy.int32) * data = numpy.zeros(shape=lut_size, dtype=numpy.float32) # <<<<<<<<<<<<<< * * logger.info("CSR matrix: %.3f MByte; Max source pixel in target: %i, average splitting: %.2f", */ - __pyx_t_58 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_zeros); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_zeros); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; - __pyx_t_58 = PyDict_New(); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = PyDict_New(); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - if (PyDict_SetItem(__pyx_t_58, __pyx_n_s_shape, __pyx_t_55) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_58, __pyx_n_s_shape, __pyx_t_55) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_55 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_55, __pyx_n_s_float32); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_55, __pyx_n_s_float32); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - if (PyDict_SetItem(__pyx_t_58, __pyx_n_s_dtype, __pyx_t_69) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_58, __pyx_n_s_dtype, __pyx_t_69) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; - __pyx_t_69 = __Pyx_PyObject_Call(__pyx_t_60, __pyx_empty_tuple, __pyx_t_58); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_Call(__pyx_t_60, __pyx_empty_tuple, __pyx_t_58); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_69); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; __pyx_v_data = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "pyFAI/ext/_distortion.pyx":816 + /* "pyFAI/ext/_distortion.pyx":825 * data = numpy.zeros(shape=lut_size, dtype=numpy.float32) * * logger.info("CSR matrix: %.3f MByte; Max source pixel in target: %i, average splitting: %.2f", # <<<<<<<<<<<<<< * (indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6, lut_size, (1.0 * counter / bins)) * */ - __pyx_t_58 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_info); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_info); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; - /* "pyFAI/ext/_distortion.pyx":817 + /* "pyFAI/ext/_distortion.pyx":826 * * logger.info("CSR matrix: %.3f MByte; Max source pixel in target: %i, average splitting: %.2f", * (indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6, lut_size, (1.0 * counter / bins)) # <<<<<<<<<<<<<< * * for idx in range(counter + 1): */ - __pyx_t_58 = __pyx_memoryview_fromslice(__pyx_v_indices, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __pyx_memoryview_fromslice(__pyx_v_indices, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; - __pyx_t_58 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); - __pyx_t_63 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_PyObject_GetAttrStr(__pyx_t_58, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; - __pyx_t_58 = PyNumber_Add(__pyx_t_55, __pyx_t_63); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = PyNumber_Add(__pyx_t_55, __pyx_t_63); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_63 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_63 = PyNumber_Add(__pyx_t_58, __pyx_t_55); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = PyNumber_Add(__pyx_t_58, __pyx_t_55); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_55 = __Pyx_PyNumber_Divide(__pyx_t_63, __pyx_float_1_0e6); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyNumber_Divide(__pyx_t_63, __pyx_float_1_0e6); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_63 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_58 = PyFloat_FromDouble(((1.0 * __pyx_v_counter) / __pyx_v_bins)); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = PyFloat_FromDouble(((1.0 * __pyx_v_counter) / __pyx_v_bins)); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __pyx_t_59 = NULL; __pyx_t_78 = 0; @@ -16441,7 +16423,7 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; __pyx_t_78 = 1; } } - __pyx_t_66 = PyTuple_New(4+__pyx_t_78); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = PyTuple_New(4+__pyx_t_78); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); if (__pyx_t_59) { PyTuple_SET_ITEM(__pyx_t_66, 0, __pyx_t_59); __Pyx_GIVEREF(__pyx_t_59); __pyx_t_59 = NULL; @@ -16458,13 +16440,13 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; __pyx_t_55 = 0; __pyx_t_63 = 0; __pyx_t_58 = 0; - __pyx_t_69 = __Pyx_PyObject_Call(__pyx_t_60, __pyx_t_66, NULL); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_Call(__pyx_t_60, __pyx_t_66, NULL); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; - /* "pyFAI/ext/_distortion.pyx":819 + /* "pyFAI/ext/_distortion.pyx":828 * (indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6, lut_size, (1.0 * counter / bins)) * * for idx in range(counter + 1): # <<<<<<<<<<<<<< @@ -16475,7 +16457,7 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; for (__pyx_t_51 = 0; __pyx_t_51 < __pyx_t_80; __pyx_t_51+=1) { __pyx_v_idx = __pyx_t_51; - /* "pyFAI/ext/_distortion.pyx":820 + /* "pyFAI/ext/_distortion.pyx":829 * * for idx in range(counter + 1): * bin_number = idx_bin[idx] # <<<<<<<<<<<<<< @@ -16486,7 +16468,7 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_52 < 0) __pyx_t_52 += __pyx_v_idx_bin.shape[0]; __pyx_v_bin_number = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_idx_bin.data) + __pyx_t_52)) ))); - /* "pyFAI/ext/_distortion.pyx":821 + /* "pyFAI/ext/_distortion.pyx":830 * for idx in range(counter + 1): * bin_number = idx_bin[idx] * i = indptr[bin_number] + pixel_count[bin_number] # <<<<<<<<<<<<<< @@ -16499,7 +16481,7 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_82 < 0) __pyx_t_82 += __pyx_v_pixel_count.shape[0]; __pyx_v_i = ((*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_indptr.data) + __pyx_t_81)) ))) + (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_pixel_count.data) + __pyx_t_82)) )))); - /* "pyFAI/ext/_distortion.pyx":822 + /* "pyFAI/ext/_distortion.pyx":831 * bin_number = idx_bin[idx] * i = indptr[bin_number] + pixel_count[bin_number] * pixel_count[bin_number] += 1 # <<<<<<<<<<<<<< @@ -16510,7 +16492,7 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_83 < 0) __pyx_t_83 += __pyx_v_pixel_count.shape[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_pixel_count.data) + __pyx_t_83)) )) += 1; - /* "pyFAI/ext/_distortion.pyx":823 + /* "pyFAI/ext/_distortion.pyx":832 * i = indptr[bin_number] + pixel_count[bin_number] * pixel_count[bin_number] += 1 * indices[i] = idx_pixel[idx] # <<<<<<<<<<<<<< @@ -16523,7 +16505,7 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_85 < 0) __pyx_t_85 += __pyx_v_indices.shape[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_indices.data) + __pyx_t_85)) )) = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_idx_pixel.data) + __pyx_t_84)) ))); - /* "pyFAI/ext/_distortion.pyx":824 + /* "pyFAI/ext/_distortion.pyx":833 * pixel_count[bin_number] += 1 * indices[i] = idx_pixel[idx] * data[i] = large_data[idx] # <<<<<<<<<<<<<< @@ -16537,19 +16519,19 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; *((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_data.data) + __pyx_t_87)) )) = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_large_data.data) + __pyx_t_86)) ))); } - /* "pyFAI/ext/_distortion.pyx":825 + /* "pyFAI/ext/_distortion.pyx":834 * indices[i] = idx_pixel[idx] * data[i] = large_data[idx] * res = (numpy.asarray(data), numpy.asarray(indices), numpy.asarray(indptr)) # <<<<<<<<<<<<<< * elif format == "lut": * lut_size = numpy.asarray(pixel_count).max() */ - __pyx_t_60 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); - __pyx_t_66 = __Pyx_PyObject_GetAttrStr(__pyx_t_60, __pyx_n_s_asarray); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyObject_GetAttrStr(__pyx_t_60, __pyx_n_s_asarray); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; - __pyx_t_60 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __pyx_t_58 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_66))) { @@ -16562,27 +16544,27 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; } } if (!__pyx_t_58) { - __pyx_t_69 = __Pyx_PyObject_CallOneArg(__pyx_t_66, __pyx_t_60); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_CallOneArg(__pyx_t_66, __pyx_t_60); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; __Pyx_GOTREF(__pyx_t_69); } else { - __pyx_t_63 = PyTuple_New(1+1); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = PyTuple_New(1+1); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); PyTuple_SET_ITEM(__pyx_t_63, 0, __pyx_t_58); __Pyx_GIVEREF(__pyx_t_58); __pyx_t_58 = NULL; PyTuple_SET_ITEM(__pyx_t_63, 0+1, __pyx_t_60); __Pyx_GIVEREF(__pyx_t_60); __pyx_t_60 = 0; - __pyx_t_69 = __Pyx_PyObject_Call(__pyx_t_66, __pyx_t_63, NULL); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_Call(__pyx_t_66, __pyx_t_63, NULL); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; } __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; - __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_asarray); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_asarray); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_63 = __pyx_memoryview_fromslice(__pyx_v_indices, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __pyx_memoryview_fromslice(__pyx_v_indices, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); __pyx_t_58 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_60))) { @@ -16595,27 +16577,27 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; } } if (!__pyx_t_58) { - __pyx_t_66 = __Pyx_PyObject_CallOneArg(__pyx_t_60, __pyx_t_63); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyObject_CallOneArg(__pyx_t_60, __pyx_t_63); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; __Pyx_GOTREF(__pyx_t_66); } else { - __pyx_t_55 = PyTuple_New(1+1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = PyTuple_New(1+1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); PyTuple_SET_ITEM(__pyx_t_55, 0, __pyx_t_58); __Pyx_GIVEREF(__pyx_t_58); __pyx_t_58 = NULL; PyTuple_SET_ITEM(__pyx_t_55, 0+1, __pyx_t_63); __Pyx_GIVEREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_60, __pyx_t_55, NULL); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_60, __pyx_t_55, NULL); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; } __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; - __pyx_t_55 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_63 = __Pyx_PyObject_GetAttrStr(__pyx_t_55, __pyx_n_s_asarray); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_PyObject_GetAttrStr(__pyx_t_55, __pyx_n_s_asarray); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_55 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); __pyx_t_58 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_63))) { @@ -16628,22 +16610,22 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; } } if (!__pyx_t_58) { - __pyx_t_60 = __Pyx_PyObject_CallOneArg(__pyx_t_63, __pyx_t_55); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_CallOneArg(__pyx_t_63, __pyx_t_55); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; __Pyx_GOTREF(__pyx_t_60); } else { - __pyx_t_59 = PyTuple_New(1+1); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_59 = PyTuple_New(1+1); if (unlikely(!__pyx_t_59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_59); PyTuple_SET_ITEM(__pyx_t_59, 0, __pyx_t_58); __Pyx_GIVEREF(__pyx_t_58); __pyx_t_58 = NULL; PyTuple_SET_ITEM(__pyx_t_59, 0+1, __pyx_t_55); __Pyx_GIVEREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_60 = __Pyx_PyObject_Call(__pyx_t_63, __pyx_t_59, NULL); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_Call(__pyx_t_63, __pyx_t_59, NULL); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __Pyx_DECREF(__pyx_t_59); __pyx_t_59 = 0; } __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_63 = PyTuple_New(3); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = PyTuple_New(3); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); PyTuple_SET_ITEM(__pyx_t_63, 0, __pyx_t_69); __Pyx_GIVEREF(__pyx_t_69); @@ -16659,29 +16641,29 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; goto __pyx_L54; } - /* "pyFAI/ext/_distortion.pyx":826 + /* "pyFAI/ext/_distortion.pyx":835 * data[i] = large_data[idx] * res = (numpy.asarray(data), numpy.asarray(indices), numpy.asarray(indptr)) * elif format == "lut": # <<<<<<<<<<<<<< * lut_size = numpy.asarray(pixel_count).max() * lut = numpy.zeros(shape=(bins, lut_size), dtype=dtype_lut) */ - __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_lut, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_lut, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - /* "pyFAI/ext/_distortion.pyx":827 + /* "pyFAI/ext/_distortion.pyx":836 * res = (numpy.asarray(data), numpy.asarray(indices), numpy.asarray(indptr)) * elif format == "lut": * lut_size = numpy.asarray(pixel_count).max() # <<<<<<<<<<<<<< * lut = numpy.zeros(shape=(bins, lut_size), dtype=dtype_lut) * pixel_count[:] = 0 */ - __pyx_t_66 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); - __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_66, __pyx_n_s_asarray); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_66, __pyx_n_s_asarray); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; - __pyx_t_66 = __pyx_memoryview_fromslice(__pyx_v_pixel_count, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __pyx_memoryview_fromslice(__pyx_v_pixel_count, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); __pyx_t_59 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_69))) { @@ -16694,22 +16676,22 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; } } if (!__pyx_t_59) { - __pyx_t_60 = __Pyx_PyObject_CallOneArg(__pyx_t_69, __pyx_t_66); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_CallOneArg(__pyx_t_69, __pyx_t_66); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; __Pyx_GOTREF(__pyx_t_60); } else { - __pyx_t_55 = PyTuple_New(1+1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = PyTuple_New(1+1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); PyTuple_SET_ITEM(__pyx_t_55, 0, __pyx_t_59); __Pyx_GIVEREF(__pyx_t_59); __pyx_t_59 = NULL; PyTuple_SET_ITEM(__pyx_t_55, 0+1, __pyx_t_66); __Pyx_GIVEREF(__pyx_t_66); __pyx_t_66 = 0; - __pyx_t_60 = __Pyx_PyObject_Call(__pyx_t_69, __pyx_t_55, NULL); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyObject_Call(__pyx_t_69, __pyx_t_55, NULL); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; } __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; - __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_60, __pyx_n_s_max); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_60, __pyx_n_s_max); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; __pyx_t_60 = NULL; @@ -16723,36 +16705,36 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; } } if (__pyx_t_60) { - __pyx_t_63 = __Pyx_PyObject_CallOneArg(__pyx_t_69, __pyx_t_60); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_PyObject_CallOneArg(__pyx_t_69, __pyx_t_60); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_60); __pyx_t_60 = 0; } else { - __pyx_t_63 = __Pyx_PyObject_CallNoArg(__pyx_t_69); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_PyObject_CallNoArg(__pyx_t_69); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_63); __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; - __pyx_t_51 = __Pyx_PyInt_As_int(__pyx_t_63); if (unlikely((__pyx_t_51 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_51 = __Pyx_PyInt_As_int(__pyx_t_63); if (unlikely((__pyx_t_51 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; __pyx_v_lut_size = __pyx_t_51; - /* "pyFAI/ext/_distortion.pyx":828 + /* "pyFAI/ext/_distortion.pyx":837 * elif format == "lut": * lut_size = numpy.asarray(pixel_count).max() * lut = numpy.zeros(shape=(bins, lut_size), dtype=dtype_lut) # <<<<<<<<<<<<<< * pixel_count[:] = 0 * logger.info("LUT matrix: %.3f MByte; Max source pixel in target: %i, average splitting: %.2f", */ - __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_zeros); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_zeros); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_63 = PyDict_New(); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = PyDict_New(); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_60 = __Pyx_PyInt_From_int(__pyx_v_bins); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = __Pyx_PyInt_From_int(__pyx_v_bins); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); - __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_66 = PyTuple_New(2); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = PyTuple_New(2); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); PyTuple_SET_ITEM(__pyx_t_66, 0, __pyx_t_60); __Pyx_GIVEREF(__pyx_t_60); @@ -16760,24 +16742,24 @@ __pyx_t_79.strides[0] = __pyx_v_pixel_count.strides[0]; __Pyx_GIVEREF(__pyx_t_55); __pyx_t_60 = 0; __pyx_t_55 = 0; - if (PyDict_SetItem(__pyx_t_63, __pyx_n_s_shape, __pyx_t_66) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_63, __pyx_n_s_shape, __pyx_t_66) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; - __pyx_t_66 = __Pyx_GetModuleGlobalName(__pyx_n_s_dtype_lut); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_GetModuleGlobalName(__pyx_n_s_dtype_lut); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); - if (PyDict_SetItem(__pyx_t_63, __pyx_n_s_dtype, __pyx_t_66) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_63, __pyx_n_s_dtype, __pyx_t_66) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; - __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_69, __pyx_empty_tuple, __pyx_t_63); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_69, __pyx_empty_tuple, __pyx_t_63); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; __pyx_t_88 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point(__pyx_t_66); - if (unlikely(!__pyx_t_88.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_88.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; __pyx_v_lut = __pyx_t_88; __pyx_t_88.memview = NULL; __pyx_t_88.data = NULL; - /* "pyFAI/ext/_distortion.pyx":829 + /* "pyFAI/ext/_distortion.pyx":838 * lut_size = numpy.asarray(pixel_count).max() * lut = numpy.zeros(shape=(bins, lut_size), dtype=dtype_lut) * pixel_count[:] = 0 # <<<<<<<<<<<<<< @@ -16806,37 +16788,37 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; } __PYX_XDEC_MEMVIEW(&__pyx_t_89, 1); - /* "pyFAI/ext/_distortion.pyx":830 + /* "pyFAI/ext/_distortion.pyx":839 * lut = numpy.zeros(shape=(bins, lut_size), dtype=dtype_lut) * pixel_count[:] = 0 * logger.info("LUT matrix: %.3f MByte; Max source pixel in target: %i, average splitting: %.2f", # <<<<<<<<<<<<<< * (lut.nbytes) / 1.0e6, lut_size, (1.0 * counter / bins)) * for idx in range(counter + 1): */ - __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_info); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_info); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - /* "pyFAI/ext/_distortion.pyx":831 + /* "pyFAI/ext/_distortion.pyx":840 * pixel_count[:] = 0 * logger.info("LUT matrix: %.3f MByte; Max source pixel in target: %i, average splitting: %.2f", * (lut.nbytes) / 1.0e6, lut_size, (1.0 * counter / bins)) # <<<<<<<<<<<<<< * for idx in range(counter + 1): * bin_number = idx_bin[idx] */ - __pyx_t_63 = __pyx_memoryview_fromslice(__pyx_v_lut, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, 0);; if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __pyx_memoryview_fromslice(__pyx_v_lut, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, 0);; if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); - __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyObject_GetAttrStr(__pyx_t_63, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); __Pyx_DECREF(__pyx_t_63); __pyx_t_63 = 0; - __pyx_t_63 = __Pyx_PyNumber_Divide(__pyx_t_55, __pyx_float_1_0e6); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_63 = __Pyx_PyNumber_Divide(__pyx_t_55, __pyx_float_1_0e6); if (unlikely(!__pyx_t_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_63); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; - __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = __Pyx_PyInt_From_int(__pyx_v_lut_size); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); - __pyx_t_60 = PyFloat_FromDouble(((1.0 * __pyx_v_counter) / __pyx_v_bins)); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_60 = PyFloat_FromDouble(((1.0 * __pyx_v_counter) / __pyx_v_bins)); if (unlikely(!__pyx_t_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_60); __pyx_t_59 = NULL; __pyx_t_78 = 0; @@ -16850,7 +16832,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; __pyx_t_78 = 1; } } - __pyx_t_58 = PyTuple_New(4+__pyx_t_78); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = PyTuple_New(4+__pyx_t_78); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); if (__pyx_t_59) { PyTuple_SET_ITEM(__pyx_t_58, 0, __pyx_t_59); __Pyx_GIVEREF(__pyx_t_59); __pyx_t_59 = NULL; @@ -16867,13 +16849,13 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; __pyx_t_63 = 0; __pyx_t_55 = 0; __pyx_t_60 = 0; - __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_69, __pyx_t_58, NULL); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_69, __pyx_t_58, NULL); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; - /* "pyFAI/ext/_distortion.pyx":832 + /* "pyFAI/ext/_distortion.pyx":841 * logger.info("LUT matrix: %.3f MByte; Max source pixel in target: %i, average splitting: %.2f", * (lut.nbytes) / 1.0e6, lut_size, (1.0 * counter / bins)) * for idx in range(counter + 1): # <<<<<<<<<<<<<< @@ -16884,7 +16866,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; for (__pyx_t_51 = 0; __pyx_t_51 < __pyx_t_80; __pyx_t_51+=1) { __pyx_v_idx = __pyx_t_51; - /* "pyFAI/ext/_distortion.pyx":833 + /* "pyFAI/ext/_distortion.pyx":842 * (lut.nbytes) / 1.0e6, lut_size, (1.0 * counter / bins)) * for idx in range(counter + 1): * bin_number = idx_bin[idx] # <<<<<<<<<<<<<< @@ -16895,7 +16877,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_90 < 0) __pyx_t_90 += __pyx_v_idx_bin.shape[0]; __pyx_v_bin_number = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_idx_bin.data) + __pyx_t_90)) ))); - /* "pyFAI/ext/_distortion.pyx":834 + /* "pyFAI/ext/_distortion.pyx":843 * for idx in range(counter + 1): * bin_number = idx_bin[idx] * i = pixel_count[bin_number] # <<<<<<<<<<<<<< @@ -16906,7 +16888,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_91 < 0) __pyx_t_91 += __pyx_v_pixel_count.shape[0]; __pyx_v_i = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_pixel_count.data) + __pyx_t_91)) ))); - /* "pyFAI/ext/_distortion.pyx":835 + /* "pyFAI/ext/_distortion.pyx":844 * bin_number = idx_bin[idx] * i = pixel_count[bin_number] * lut[bin_number, i].idx = idx_pixel[idx] # <<<<<<<<<<<<<< @@ -16921,7 +16903,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_94 < 0) __pyx_t_94 += __pyx_v_lut.shape[1]; (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_93 * __pyx_v_lut.strides[0]) ) + __pyx_t_94 * __pyx_v_lut.strides[1]) ))).idx = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_idx_pixel.data) + __pyx_t_92)) ))); - /* "pyFAI/ext/_distortion.pyx":836 + /* "pyFAI/ext/_distortion.pyx":845 * i = pixel_count[bin_number] * lut[bin_number, i].idx = idx_pixel[idx] * lut[bin_number, i].coef = large_data[idx] # <<<<<<<<<<<<<< @@ -16936,7 +16918,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; if (__pyx_t_97 < 0) __pyx_t_97 += __pyx_v_lut.shape[1]; (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_lut.data + __pyx_t_96 * __pyx_v_lut.strides[0]) ) + __pyx_t_97 * __pyx_v_lut.strides[1]) ))).coef = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_large_data.data) + __pyx_t_95)) ))); - /* "pyFAI/ext/_distortion.pyx":837 + /* "pyFAI/ext/_distortion.pyx":846 * lut[bin_number, i].idx = idx_pixel[idx] * lut[bin_number, i].coef = large_data[idx] * pixel_count[bin_number] += 1 # <<<<<<<<<<<<<< @@ -16948,19 +16930,19 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; *((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_pixel_count.data) + __pyx_t_98)) )) += 1; } - /* "pyFAI/ext/_distortion.pyx":838 + /* "pyFAI/ext/_distortion.pyx":847 * lut[bin_number, i].coef = large_data[idx] * pixel_count[bin_number] += 1 * res = numpy.asarray(lut) # <<<<<<<<<<<<<< * else: * raise RuntimeError("Unimplemented sparse matrix format: %s", format) */ - __pyx_t_69 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); - __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_69, __pyx_n_s_asarray); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_PyObject_GetAttrStr(__pyx_t_69, __pyx_n_s_asarray); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; - __pyx_t_69 = __pyx_memoryview_fromslice(__pyx_v_lut, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, 0);; if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_69 = __pyx_memoryview_fromslice(__pyx_v_lut, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point, 0);; if (unlikely(!__pyx_t_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_69); __pyx_t_60 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_58))) { @@ -16973,17 +16955,17 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; } } if (!__pyx_t_60) { - __pyx_t_66 = __Pyx_PyObject_CallOneArg(__pyx_t_58, __pyx_t_69); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyObject_CallOneArg(__pyx_t_58, __pyx_t_69); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_69); __pyx_t_69 = 0; __Pyx_GOTREF(__pyx_t_66); } else { - __pyx_t_55 = PyTuple_New(1+1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_55 = PyTuple_New(1+1); if (unlikely(!__pyx_t_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_55); PyTuple_SET_ITEM(__pyx_t_55, 0, __pyx_t_60); __Pyx_GIVEREF(__pyx_t_60); __pyx_t_60 = NULL; PyTuple_SET_ITEM(__pyx_t_55, 0+1, __pyx_t_69); __Pyx_GIVEREF(__pyx_t_69); __pyx_t_69 = 0; - __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_58, __pyx_t_55, NULL); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = __Pyx_PyObject_Call(__pyx_t_58, __pyx_t_55, NULL); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); __Pyx_DECREF(__pyx_t_55); __pyx_t_55 = 0; } @@ -16994,14 +16976,14 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":840 + /* "pyFAI/ext/_distortion.pyx":849 * res = numpy.asarray(lut) * else: * raise RuntimeError("Unimplemented sparse matrix format: %s", format) # <<<<<<<<<<<<<< * return res * */ - __pyx_t_66 = PyTuple_New(2); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_66 = PyTuple_New(2); if (unlikely(!__pyx_t_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_66); __Pyx_INCREF(__pyx_kp_s_Unimplemented_sparse_matrix_form); PyTuple_SET_ITEM(__pyx_t_66, 0, __pyx_kp_s_Unimplemented_sparse_matrix_form); @@ -17009,16 +16991,16 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; __Pyx_INCREF(__pyx_v_format); PyTuple_SET_ITEM(__pyx_t_66, 1, __pyx_v_format); __Pyx_GIVEREF(__pyx_v_format); - __pyx_t_58 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_66, NULL); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_58 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_66, NULL); if (unlikely(!__pyx_t_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_58); __Pyx_DECREF(__pyx_t_66); __pyx_t_66 = 0; __Pyx_Raise(__pyx_t_58, 0, 0, 0); __Pyx_DECREF(__pyx_t_58); __pyx_t_58 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L54:; - /* "pyFAI/ext/_distortion.pyx":841 + /* "pyFAI/ext/_distortion.pyx":850 * else: * raise RuntimeError("Unimplemented sparse matrix format: %s", format) * return res # <<<<<<<<<<<<<< @@ -17030,7 +17012,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":651 + /* "pyFAI/ext/_distortion.pyx":660 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_openmp(float[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< @@ -17082,9 +17064,9 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":846 - * @cython.wraparound(False) - * @cython.boundscheck(False) +/* "pyFAI/ext/_distortion.pyx":858 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_LUT(image, shape_in, shape_out, lut_point[:, ::1] LUT not None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """Correct an image based on the look-up table calculated ... * @@ -17092,7 +17074,7 @@ __pyx_t_89.strides[0] = __pyx_v_pixel_count.strides[0]; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_15correct_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_14correct_LUT[] = "Correct an image based on the look-up table calculated ...\n\n @param image: 2D-array with the image\n @param shape_in: shape of input image\n @param shape_out: shape of output image\n @param LUT: Look up table, here a 2D-array of struct\n @param dummy: value for invalid pixels\n @param delta_dummy: precision for invalid pixels\n @return: corrected 2D image\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_14correct_LUT[] = "correct_LUT(image, shape_in, shape_out, __Pyx_memviewslice LUT, dummy=None, delta_dummy=None)\nCorrect an image based on the look-up table calculated ...\n\n :param image: 2D-array with the image\n :param shape_in: shape of input image\n :param shape_out: shape of output image\n :param LUT: Look up table, here a 2D-array of struct\n :param dummy: value for invalid pixels\n :param delta_dummy: precision for invalid pixels\n :return: corrected 2D image\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_15correct_LUT = {"correct_LUT", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_15correct_LUT, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_14correct_LUT}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_15correct_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_image = 0; @@ -17133,17 +17115,17 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_15correct_LUT(PyObject *__py case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape_in)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape_out)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_LUT)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (kw_args > 0) { @@ -17157,7 +17139,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_15correct_LUT(PyObject *__py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "correct_LUT") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "correct_LUT") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -17174,20 +17156,20 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_15correct_LUT(PyObject *__py __pyx_v_image = values[0]; __pyx_v_shape_in = values[1]; __pyx_v_shape_out = values[2]; - __pyx_v_LUT = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point(values[3]); if (unlikely(!__pyx_v_LUT.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_LUT = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point(values[3]); if (unlikely(!__pyx_v_LUT.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_dummy = values[4]; __pyx_v_delta_dummy = values[5]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_LUT", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.correct_LUT", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_LUT.memview) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "LUT"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "LUT"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(__pyx_self, __pyx_v_image, __pyx_v_shape_in, __pyx_v_shape_out, __pyx_v_LUT, __pyx_v_dummy, __pyx_v_delta_dummy); @@ -17260,7 +17242,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_RefNannySetupContext("correct_LUT", 0); __Pyx_INCREF(__pyx_v_image); - /* "pyFAI/ext/_distortion.pyx":862 + /* "pyFAI/ext/_distortion.pyx":874 * float coef, sum, error, t, y, value, cdummy, cdelta_dummy * float[::1] lout, lin * bint do_dummy = dummy is not None # <<<<<<<<<<<<<< @@ -17270,7 +17252,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_1 = (__pyx_v_dummy != Py_None); __pyx_v_do_dummy = __pyx_t_1; - /* "pyFAI/ext/_distortion.pyx":863 + /* "pyFAI/ext/_distortion.pyx":875 * float[::1] lout, lin * bint do_dummy = dummy is not None * if do_dummy: # <<<<<<<<<<<<<< @@ -17280,17 +17262,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_1 = (__pyx_v_do_dummy != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_distortion.pyx":864 + /* "pyFAI/ext/_distortion.pyx":876 * bint do_dummy = dummy is not None * if do_dummy: * cdummy = dummy # <<<<<<<<<<<<<< * if delta_dummy is None: * cdelta_dummy = 0.0 */ - __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_v_dummy); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_v_dummy); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cdummy = __pyx_t_2; - /* "pyFAI/ext/_distortion.pyx":865 + /* "pyFAI/ext/_distortion.pyx":877 * if do_dummy: * cdummy = dummy * if delta_dummy is None: # <<<<<<<<<<<<<< @@ -17301,7 +17283,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_3 = (__pyx_t_1 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":866 + /* "pyFAI/ext/_distortion.pyx":878 * cdummy = dummy * if delta_dummy is None: * cdelta_dummy = 0.0 # <<<<<<<<<<<<<< @@ -17316,7 +17298,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } __pyx_L3:; - /* "pyFAI/ext/_distortion.pyx":867 + /* "pyFAI/ext/_distortion.pyx":879 * if delta_dummy is None: * cdelta_dummy = 0.0 * shape_in0, shape_in1 = shape_in # <<<<<<<<<<<<<< @@ -17333,7 +17315,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -17346,21 +17328,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); #endif } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_v_shape_in); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_GetIter(__pyx_v_shape_in); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L6_unpacking_done; @@ -17368,17 +17350,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L6_unpacking_done:; } - __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_shape_in0 = __pyx_t_8; __pyx_v_shape_in1 = __pyx_t_9; - /* "pyFAI/ext/_distortion.pyx":868 + /* "pyFAI/ext/_distortion.pyx":880 * cdelta_dummy = 0.0 * shape_in0, shape_in1 = shape_in * shape_out0, shape_out1 = shape_out # <<<<<<<<<<<<<< @@ -17395,7 +17377,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -17408,21 +17390,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); #endif } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_v_shape_out); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_GetIter(__pyx_v_shape_out); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L8_unpacking_done; @@ -17430,17 +17412,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L8_unpacking_done:; } - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_shape_out0 = __pyx_t_9; __pyx_v_shape_out1 = __pyx_t_8; - /* "pyFAI/ext/_distortion.pyx":869 + /* "pyFAI/ext/_distortion.pyx":881 * shape_in0, shape_in1 = shape_in * shape_out0, shape_out1 = shape_out * lshape0 = LUT.shape[0] # <<<<<<<<<<<<<< @@ -17449,7 +17431,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED */ __pyx_v_lshape0 = (__pyx_v_LUT.shape[0]); - /* "pyFAI/ext/_distortion.pyx":870 + /* "pyFAI/ext/_distortion.pyx":882 * shape_out0, shape_out1 = shape_out * lshape0 = LUT.shape[0] * lshape1 = LUT.shape[1] # <<<<<<<<<<<<<< @@ -17458,7 +17440,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED */ __pyx_v_lshape1 = (__pyx_v_LUT.shape[1]); - /* "pyFAI/ext/_distortion.pyx":871 + /* "pyFAI/ext/_distortion.pyx":883 * lshape0 = LUT.shape[0] * lshape1 = LUT.shape[1] * assert shape_out0 * shape_out1 == LUT.shape[0], "shape_out0 * shape_out1 == LUT.shape[0]" # <<<<<<<<<<<<<< @@ -17469,19 +17451,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!(((__pyx_v_shape_out0 * __pyx_v_shape_out1) == (__pyx_v_LUT.shape[0])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_shape_out0_shape_out1_LUT_shape); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_distortion.pyx":872 + /* "pyFAI/ext/_distortion.pyx":884 * lshape1 = LUT.shape[1] * assert shape_out0 * shape_out1 == LUT.shape[0], "shape_out0 * shape_out1 == LUT.shape[0]" * shape_img0, shape_img1 = image.shape # <<<<<<<<<<<<<< * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; @@ -17493,7 +17475,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -17506,15 +17488,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; - __pyx_t_10 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_10)->tp_iternext; @@ -17522,7 +17504,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L10_unpacking_done; @@ -17530,17 +17512,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L10_unpacking_done:; } - __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_shape_img0 = __pyx_t_8; __pyx_v_shape_img1 = __pyx_t_9; - /* "pyFAI/ext/_distortion.pyx":873 + /* "pyFAI/ext/_distortion.pyx":885 * assert shape_out0 * shape_out1 == LUT.shape[0], "shape_out0 * shape_out1 == LUT.shape[0]" * shape_img0, shape_img1 = image.shape * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): # <<<<<<<<<<<<<< @@ -17558,23 +17540,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_L12_bool_binop_done:; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":874 + /* "pyFAI/ext/_distortion.pyx":886 * shape_img0, shape_img1 = image.shape * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) # <<<<<<<<<<<<<< * if shape_img0 < shape_in0: * if shape_img1 < shape_in1: */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); @@ -17582,21 +17564,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -17604,7 +17586,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_v_new_image = __pyx_t_11; __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":875 + /* "pyFAI/ext/_distortion.pyx":887 * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) * if shape_img0 < shape_in0: # <<<<<<<<<<<<<< @@ -17614,7 +17596,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_shape_img0 < __pyx_v_shape_in0) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":876 + /* "pyFAI/ext/_distortion.pyx":888 * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) * if shape_img0 < shape_in0: * if shape_img1 < shape_in1: # <<<<<<<<<<<<<< @@ -17624,24 +17606,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_shape_img1 < __pyx_v_shape_in1) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":877 + /* "pyFAI/ext/_distortion.pyx":889 * if shape_img0 < shape_in0: * if shape_img1 < shape_in1: * new_image[:shape_img0, :shape_img1] = image # <<<<<<<<<<<<<< * else: * new_image[:shape_img0, :] = image[:, :shape_in1] */ - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_10 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_5 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); @@ -17649,25 +17631,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_5); __pyx_t_10 = 0; __pyx_t_5 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_11, __pyx_v_image) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_11, __pyx_v_image) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L15; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":879 + /* "pyFAI/ext/_distortion.pyx":891 * new_image[:shape_img0, :shape_img1] = image * else: * new_image[:shape_img0, :] = image[:, :shape_in1] # <<<<<<<<<<<<<< * else: * if shape_img1 < shape_in1: */ - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_5 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_slice__24); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_slice__24); @@ -17675,15 +17657,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyObject_GetItem(__pyx_v_image, __pyx_t_11); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = PyObject_GetItem(__pyx_v_image, __pyx_t_11); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_10 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); @@ -17691,7 +17673,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_slice__25); __Pyx_GIVEREF(__pyx_slice__25); __pyx_t_10 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_11, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_11, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -17700,7 +17682,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":881 + /* "pyFAI/ext/_distortion.pyx":893 * new_image[:shape_img0, :] = image[:, :shape_in1] * else: * if shape_img1 < shape_in1: # <<<<<<<<<<<<<< @@ -17710,19 +17692,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_shape_img1 < __pyx_v_shape_in1) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":882 + /* "pyFAI/ext/_distortion.pyx":894 * else: * if shape_img1 < shape_in1: * new_image[:, :shape_img1] = image[:shape_in0, :] # <<<<<<<<<<<<<< * else: * new_image[:, :] = image[:shape_in0, :shape_in1] */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_11 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); @@ -17730,15 +17712,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_slice__26); __Pyx_GIVEREF(__pyx_slice__26); __pyx_t_11 = 0; - __pyx_t_11 = PyObject_GetItem(__pyx_v_image, __pyx_t_5); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_11 = PyObject_GetItem(__pyx_v_image, __pyx_t_5); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_10 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_slice__27); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__27); @@ -17746,31 +17728,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_5, __pyx_t_11) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_5, __pyx_t_11) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L16; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":884 + /* "pyFAI/ext/_distortion.pyx":896 * new_image[:, :shape_img1] = image[:shape_in0, :] * else: * new_image[:, :] = image[:shape_in0, :shape_in1] # <<<<<<<<<<<<<< * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) */ - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_5 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_10 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); @@ -17778,47 +17760,47 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_10); __pyx_t_5 = 0; __pyx_t_10 = 0; - __pyx_t_10 = PyObject_GetItem(__pyx_v_image, __pyx_t_11); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_10 = PyObject_GetItem(__pyx_v_image, __pyx_t_11); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_tuple__30, __pyx_t_10) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_tuple__30, __pyx_t_10) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __pyx_L16:; } __pyx_L14:; - /* "pyFAI/ext/_distortion.pyx":885 + /* "pyFAI/ext/_distortion.pyx":897 * else: * new_image[:, :] = image[:shape_in0, :shape_in1] * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", # <<<<<<<<<<<<<< * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) * image = new_image */ - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_warning); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_warning); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":886 + /* "pyFAI/ext/_distortion.pyx":898 * new_image[:, :] = image[:shape_in0, :shape_in1] * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) # <<<<<<<<<<<<<< * image = new_image * */ - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = NULL; __pyx_t_16 = 0; @@ -17832,7 +17814,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_16 = 1; } } - __pyx_t_17 = PyTuple_New(7+__pyx_t_16); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PyTuple_New(7+__pyx_t_16); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); if (__pyx_t_15) { PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_15); __pyx_t_15 = NULL; @@ -17858,13 +17840,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - /* "pyFAI/ext/_distortion.pyx":887 + /* "pyFAI/ext/_distortion.pyx":899 * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) * image = new_image # <<<<<<<<<<<<<< @@ -17877,23 +17859,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } __pyx_L11:; - /* "pyFAI/ext/_distortion.pyx":889 + /* "pyFAI/ext/_distortion.pyx":901 * image = new_image * * out = numpy.zeros((shape_out0, shape_out1), dtype=numpy.float32) # <<<<<<<<<<<<<< * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); @@ -17901,21 +17883,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_17); __pyx_t_10 = 0; __pyx_t_17 = 0; - __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_dtype, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_dtype, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, __pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, __pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; @@ -17923,14 +17905,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_v_out = __pyx_t_13; __pyx_t_13 = 0; - /* "pyFAI/ext/_distortion.pyx":890 + /* "pyFAI/ext/_distortion.pyx":902 * * out = numpy.zeros((shape_out0, shape_out1), dtype=numpy.float32) * lout = out.ravel() # <<<<<<<<<<<<<< * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size */ - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __pyx_t_17 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) { @@ -17943,33 +17925,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } } if (__pyx_t_17) { - __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_17); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_17); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } else { - __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_18 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_13); - if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_v_lout = __pyx_t_18; __pyx_t_18.memview = NULL; __pyx_t_18.data = NULL; - /* "pyFAI/ext/_distortion.pyx":891 + /* "pyFAI/ext/_distortion.pyx":903 * out = numpy.zeros((shape_out0, shape_out1), dtype=numpy.float32) * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * size = lin.size * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" */ - __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_17))) { @@ -17982,56 +17964,56 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } } if (__pyx_t_5) { - __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_17); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_17); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_13); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_dtype, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_dtype, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_17, __pyx_t_13); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_17, __pyx_t_13); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_18 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_10); - if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_lin = __pyx_t_18; __pyx_t_18.memview = NULL; __pyx_t_18.data = NULL; - /* "pyFAI/ext/_distortion.pyx":892 + /* "pyFAI/ext/_distortion.pyx":904 * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size # <<<<<<<<<<<<<< * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" * for i in prange(lshape0, nogil=True, schedule="static"): */ - __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_lin, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_lin, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_size); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_size); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_13); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_13); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_v_size = __pyx_t_9; - /* "pyFAI/ext/_distortion.pyx":893 + /* "pyFAI/ext/_distortion.pyx":905 * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" # <<<<<<<<<<<<<< @@ -18042,12 +18024,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_size == (__pyx_v_shape_in0 * __pyx_v_shape_in1)) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_size_shape_in0_shape_in1); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_distortion.pyx":894 + /* "pyFAI/ext/_distortion.pyx":906 * size = lin.size * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" * for i in prange(lshape0, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -18065,12 +18047,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED { float __pyx_parallel_temp0 = __PYX_NAN(); float __pyx_parallel_temp1 = __PYX_NAN(); - int __pyx_parallel_temp2 = 0xbad0bad0; + float __pyx_parallel_temp2 = __PYX_NAN(); float __pyx_parallel_temp3 = __PYX_NAN(); - int __pyx_parallel_temp4 = 0xbad0bad0; - float __pyx_parallel_temp5 = __PYX_NAN(); + float __pyx_parallel_temp4 = __PYX_NAN(); + int __pyx_parallel_temp5 = 0xbad0bad0; float __pyx_parallel_temp6 = __PYX_NAN(); - float __pyx_parallel_temp7 = __PYX_NAN(); + int __pyx_parallel_temp7 = 0xbad0bad0; int __pyx_parallel_temp8 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; @@ -18086,7 +18068,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED if (__pyx_t_19 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_22, __pyx_t_23, __pyx_t_2, __pyx_t_20, __pyx_t_21, __pyx_t_24, __pyx_t_25, __pyx_t_1, __pyx_t_3, __pyx_t_26) firstprivate(__pyx_t_10, __pyx_t_17, __pyx_t_13, __pyx_t_5, __pyx_t_14) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_22, __pyx_t_23, __pyx_t_1, __pyx_t_2, __pyx_t_20, __pyx_t_21, __pyx_t_24, __pyx_t_25, __pyx_t_3, __pyx_t_26) firstprivate(__pyx_t_10, __pyx_t_14, __pyx_t_17, __pyx_t_5, __pyx_t_13) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -18096,23 +18078,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_y) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_t) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_error) lastprivate(__pyx_v_value) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for lastprivate(__pyx_v_sum) lastprivate(__pyx_v_value) lastprivate(__pyx_v_error) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_t) lastprivate(__pyx_v_j) lastprivate(__pyx_v_y) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_idx) schedule(static) #endif /* _OPENMP */ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_19; __pyx_t_8++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_8; /* Initialize private variables to invalid values */ - __pyx_v_y = ((float)__PYX_NAN()); + __pyx_v_sum = ((float)__PYX_NAN()); + __pyx_v_value = ((float)__PYX_NAN()); + __pyx_v_error = ((float)__PYX_NAN()); __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_j = ((int)0xbad0bad0); __pyx_v_t = ((float)__PYX_NAN()); + __pyx_v_j = ((int)0xbad0bad0); + __pyx_v_y = ((float)__PYX_NAN()); __pyx_v_idx = ((int)0xbad0bad0); - __pyx_v_sum = ((float)__PYX_NAN()); - __pyx_v_error = ((float)__PYX_NAN()); - __pyx_v_value = ((float)__PYX_NAN()); - /* "pyFAI/ext/_distortion.pyx":895 + /* "pyFAI/ext/_distortion.pyx":907 * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" * for i in prange(lshape0, nogil=True, schedule="static"): * sum = 0.0 # <<<<<<<<<<<<<< @@ -18121,7 +18103,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED */ __pyx_v_sum = 0.0; - /* "pyFAI/ext/_distortion.pyx":896 + /* "pyFAI/ext/_distortion.pyx":908 * for i in prange(lshape0, nogil=True, schedule="static"): * sum = 0.0 * error = 0.0 # Implement Kahan summation # <<<<<<<<<<<<<< @@ -18130,7 +18112,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED */ __pyx_v_error = 0.0; - /* "pyFAI/ext/_distortion.pyx":897 + /* "pyFAI/ext/_distortion.pyx":909 * sum = 0.0 * error = 0.0 # Implement Kahan summation * for j in range(lshape1): # <<<<<<<<<<<<<< @@ -18141,7 +18123,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) { __pyx_v_j = __pyx_t_21; - /* "pyFAI/ext/_distortion.pyx":898 + /* "pyFAI/ext/_distortion.pyx":910 * error = 0.0 # Implement Kahan summation * for j in range(lshape1): * idx = LUT[i, j].idx # <<<<<<<<<<<<<< @@ -18153,7 +18135,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_24 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ ((char *) (((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_22 * __pyx_v_LUT.strides[0]) )) + __pyx_t_23)) ))).idx; __pyx_v_idx = __pyx_t_24; - /* "pyFAI/ext/_distortion.pyx":899 + /* "pyFAI/ext/_distortion.pyx":911 * for j in range(lshape1): * idx = LUT[i, j].idx * coef = LUT[i, j].coef # <<<<<<<<<<<<<< @@ -18165,7 +18147,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_2 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ ((char *) (((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_24 * __pyx_v_LUT.strides[0]) )) + __pyx_t_25)) ))).coef; __pyx_v_coef = __pyx_t_2; - /* "pyFAI/ext/_distortion.pyx":900 + /* "pyFAI/ext/_distortion.pyx":912 * idx = LUT[i, j].idx * coef = LUT[i, j].coef * if coef <= 0: # <<<<<<<<<<<<<< @@ -18175,7 +18157,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_coef <= 0.0) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":901 + /* "pyFAI/ext/_distortion.pyx":913 * coef = LUT[i, j].coef * if coef <= 0: * continue # <<<<<<<<<<<<<< @@ -18185,7 +18167,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED goto __pyx_L24_continue; } - /* "pyFAI/ext/_distortion.pyx":902 + /* "pyFAI/ext/_distortion.pyx":914 * if coef <= 0: * continue * if idx >= size: # <<<<<<<<<<<<<< @@ -18195,7 +18177,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_idx >= __pyx_v_size) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":903 + /* "pyFAI/ext/_distortion.pyx":915 * continue * if idx >= size: * with gil: # <<<<<<<<<<<<<< @@ -18208,23 +18190,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":904 + /* "pyFAI/ext/_distortion.pyx":916 * if idx >= size: * with gil: * logger.warning("Accessing %i >= %i !!!" % (idx, size)) # <<<<<<<<<<<<<< * continue * value = lin[idx] */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_warning); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_warning); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); @@ -18232,7 +18214,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_14); __pyx_t_10 = 0; __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyString_Format(__pyx_kp_s_Accessing_i_i, __pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_14 = __Pyx_PyString_Format(__pyx_kp_s_Accessing_i_i, __pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; @@ -18246,24 +18228,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } } if (!__pyx_t_5) { - __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_13); } else { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_10, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L31_error;} + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_10, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L31_error;} __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - /* "pyFAI/ext/_distortion.pyx":905 + /* "pyFAI/ext/_distortion.pyx":917 * with gil: * logger.warning("Accessing %i >= %i !!!" % (idx, size)) * continue # <<<<<<<<<<<<<< @@ -18273,7 +18255,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED goto __pyx_L28_continue; } - /* "pyFAI/ext/_distortion.pyx":903 + /* "pyFAI/ext/_distortion.pyx":915 * continue * if idx >= size: * with gil: # <<<<<<<<<<<<<< @@ -18297,7 +18279,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } } - /* "pyFAI/ext/_distortion.pyx":906 + /* "pyFAI/ext/_distortion.pyx":918 * logger.warning("Accessing %i >= %i !!!" % (idx, size)) * continue * value = lin[idx] # <<<<<<<<<<<<<< @@ -18307,7 +18289,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_t_26 = __pyx_v_idx; __pyx_v_value = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_lin.data) + __pyx_t_26)) ))); - /* "pyFAI/ext/_distortion.pyx":907 + /* "pyFAI/ext/_distortion.pyx":919 * continue * value = lin[idx] * if do_dummy and fabs(value - cdummy) <= cdelta_dummy: # <<<<<<<<<<<<<< @@ -18325,7 +18307,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_L34_bool_binop_done:; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":908 + /* "pyFAI/ext/_distortion.pyx":920 * value = lin[idx] * if do_dummy and fabs(value - cdummy) <= cdelta_dummy: * continue # <<<<<<<<<<<<<< @@ -18335,7 +18317,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED goto __pyx_L24_continue; } - /* "pyFAI/ext/_distortion.pyx":909 + /* "pyFAI/ext/_distortion.pyx":921 * if do_dummy and fabs(value - cdummy) <= cdelta_dummy: * continue * y = value * coef - error # <<<<<<<<<<<<<< @@ -18344,7 +18326,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED */ __pyx_v_y = ((__pyx_v_value * __pyx_v_coef) - __pyx_v_error); - /* "pyFAI/ext/_distortion.pyx":910 + /* "pyFAI/ext/_distortion.pyx":922 * continue * y = value * coef - error * t = sum + y # <<<<<<<<<<<<<< @@ -18353,7 +18335,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED */ __pyx_v_t = (__pyx_v_sum + __pyx_v_y); - /* "pyFAI/ext/_distortion.pyx":911 + /* "pyFAI/ext/_distortion.pyx":923 * y = value * coef - error * t = sum + y * error = (t - sum) - y # <<<<<<<<<<<<<< @@ -18362,7 +18344,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED */ __pyx_v_error = ((__pyx_v_t - __pyx_v_sum) - __pyx_v_y); - /* "pyFAI/ext/_distortion.pyx":912 + /* "pyFAI/ext/_distortion.pyx":924 * t = sum + y * error = (t - sum) - y * sum = t # <<<<<<<<<<<<<< @@ -18373,7 +18355,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_L24_continue:; } - /* "pyFAI/ext/_distortion.pyx":913 + /* "pyFAI/ext/_distortion.pyx":925 * error = (t - sum) - y * sum = t * if do_dummy and (sum == 0.0): # <<<<<<<<<<<<<< @@ -18391,7 +18373,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_L37_bool_binop_done:; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":914 + /* "pyFAI/ext/_distortion.pyx":926 * sum = t * if do_dummy and (sum == 0.0): * sum = cdummy # <<<<<<<<<<<<<< @@ -18403,7 +18385,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } __pyx_L36:; - /* "pyFAI/ext/_distortion.pyx":915 + /* "pyFAI/ext/_distortion.pyx":927 * if do_dummy and (sum == 0.0): * sum = cdummy * lout[i] += sum # this += is for Cython's reduction # <<<<<<<<<<<<<< @@ -18434,18 +18416,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED goto __pyx_L39; __pyx_L39:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates0) + #pragma omp critical(__pyx_parallel_lastprivates22) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_y; - __pyx_parallel_temp1 = __pyx_v_coef; - __pyx_parallel_temp2 = __pyx_v_j; - __pyx_parallel_temp3 = __pyx_v_t; - __pyx_parallel_temp4 = __pyx_v_idx; - __pyx_parallel_temp5 = __pyx_v_sum; - __pyx_parallel_temp6 = __pyx_v_error; - __pyx_parallel_temp7 = __pyx_v_value; - __pyx_parallel_temp8 = __pyx_v_i; + __pyx_parallel_temp0 = __pyx_v_sum; + __pyx_parallel_temp1 = __pyx_v_value; + __pyx_parallel_temp2 = __pyx_v_error; + __pyx_parallel_temp3 = __pyx_v_coef; + __pyx_parallel_temp4 = __pyx_v_t; + __pyx_parallel_temp5 = __pyx_v_j; + __pyx_parallel_temp6 = __pyx_v_y; + __pyx_parallel_temp7 = __pyx_v_i; + __pyx_parallel_temp8 = __pyx_v_idx; } __pyx_L40:; #ifdef _OPENMP @@ -18464,14 +18446,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED /* Clean up any temporaries */ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = NULL; + __Pyx_XDECREF(__pyx_t_14); + __pyx_t_14 = NULL; __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = NULL; - __Pyx_XDECREF(__pyx_t_13); - __pyx_t_13 = NULL; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = NULL; - __Pyx_XDECREF(__pyx_t_14); - __pyx_t_14 = NULL; + __Pyx_XDECREF(__pyx_t_13); + __pyx_t_13 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -18485,15 +18467,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_y = __pyx_parallel_temp0; - __pyx_v_coef = __pyx_parallel_temp1; - __pyx_v_j = __pyx_parallel_temp2; - __pyx_v_t = __pyx_parallel_temp3; - __pyx_v_idx = __pyx_parallel_temp4; - __pyx_v_sum = __pyx_parallel_temp5; - __pyx_v_error = __pyx_parallel_temp6; - __pyx_v_value = __pyx_parallel_temp7; - __pyx_v_i = __pyx_parallel_temp8; + __pyx_v_sum = __pyx_parallel_temp0; + __pyx_v_value = __pyx_parallel_temp1; + __pyx_v_error = __pyx_parallel_temp2; + __pyx_v_coef = __pyx_parallel_temp3; + __pyx_v_t = __pyx_parallel_temp4; + __pyx_v_j = __pyx_parallel_temp5; + __pyx_v_y = __pyx_parallel_temp6; + __pyx_v_i = __pyx_parallel_temp7; + __pyx_v_idx = __pyx_parallel_temp8; switch (__pyx_parallel_why) { case 3: goto __pyx_L17_return; case 4: @@ -18520,7 +18502,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED #endif } - /* "pyFAI/ext/_distortion.pyx":894 + /* "pyFAI/ext/_distortion.pyx":906 * size = lin.size * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" * for i in prange(lshape0, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -18550,7 +18532,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED } } - /* "pyFAI/ext/_distortion.pyx":916 + /* "pyFAI/ext/_distortion.pyx":928 * sum = cdummy * lout[i] += sum # this += is for Cython's reduction * return out # <<<<<<<<<<<<<< @@ -18562,9 +18544,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_r = __pyx_v_out; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":846 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":858 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_LUT(image, shape_in, shape_out, lut_point[:, ::1] LUT not None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """Correct an image based on the look-up table calculated ... * @@ -18597,9 +18579,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":921 - * @cython.wraparound(False) - * @cython.boundscheck(False) +/* "pyFAI/ext/_distortion.pyx":936 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * Correct an image based on the look-up table calculated ... @@ -18607,7 +18589,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_17correct_CSR(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_16correct_CSR[] = "\n Correct an image based on the look-up table calculated ...\n\n @param image: 2D-array with the image\n @param shape_in: shape of input image\n @param shape_out: shape of output image\n @param LUT: Look up table, here a 3-tuple array of ndarray\n @param dummy: value for invalid pixels\n @param delta_dummy: precision for invalid pixels\n @return: corrected 2D image\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_16correct_CSR[] = "correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None)\n\n Correct an image based on the look-up table calculated ...\n\n :param image: 2D-array with the image\n :param shape_in: shape of input image\n :param shape_out: shape of output image\n :param LUT: Look up table, here a 3-tuple array of ndarray\n :param dummy: value for invalid pixels\n :param delta_dummy: precision for invalid pixels\n :return: corrected 2D image\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_17correct_CSR = {"correct_CSR", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_17correct_CSR, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_16correct_CSR}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_17correct_CSR(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_image = 0; @@ -18648,17 +18630,17 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_17correct_CSR(PyObject *__py case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape_in)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape_out)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_LUT)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (kw_args > 0) { @@ -18672,7 +18654,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_17correct_CSR(PyObject *__py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "correct_CSR") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "correct_CSR") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -18695,7 +18677,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_17correct_CSR(PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct_CSR", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.correct_CSR", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -18772,7 +18754,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_RefNannySetupContext("correct_CSR", 0); __Pyx_INCREF(__pyx_v_image); - /* "pyFAI/ext/_distortion.pyx":939 + /* "pyFAI/ext/_distortion.pyx":954 * float[::1] lout, lin, data * int[::1] indices, indptr * bint do_dummy = dummy is not None # <<<<<<<<<<<<<< @@ -18782,7 +18764,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_1 = (__pyx_v_dummy != Py_None); __pyx_v_do_dummy = __pyx_t_1; - /* "pyFAI/ext/_distortion.pyx":941 + /* "pyFAI/ext/_distortion.pyx":956 * bint do_dummy = dummy is not None * * if do_dummy: # <<<<<<<<<<<<<< @@ -18792,17 +18774,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_1 = (__pyx_v_do_dummy != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_distortion.pyx":942 + /* "pyFAI/ext/_distortion.pyx":957 * * if do_dummy: * cdummy = dummy # <<<<<<<<<<<<<< * if delta_dummy is None: * cdelta_dummy = 0.0 */ - __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_v_dummy); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_PyFloat_AsFloat(__pyx_v_dummy); if (unlikely((__pyx_t_2 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cdummy = __pyx_t_2; - /* "pyFAI/ext/_distortion.pyx":943 + /* "pyFAI/ext/_distortion.pyx":958 * if do_dummy: * cdummy = dummy * if delta_dummy is None: # <<<<<<<<<<<<<< @@ -18813,7 +18795,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_3 = (__pyx_t_1 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":944 + /* "pyFAI/ext/_distortion.pyx":959 * cdummy = dummy * if delta_dummy is None: * cdelta_dummy = 0.0 # <<<<<<<<<<<<<< @@ -18828,7 +18810,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } __pyx_L3:; - /* "pyFAI/ext/_distortion.pyx":946 + /* "pyFAI/ext/_distortion.pyx":961 * cdelta_dummy = 0.0 * * data, indices, indptr = LUT # <<<<<<<<<<<<<< @@ -18845,7 +18827,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -18861,16 +18843,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); #endif } else { Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_v_LUT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyObject_GetIter(__pyx_v_LUT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; @@ -18879,7 +18861,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_GOTREF(__pyx_t_5); index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L6_unpacking_done; @@ -18887,17 +18869,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L6_unpacking_done:; } __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_4); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_int(__pyx_t_5); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_int(__pyx_t_6); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_data = __pyx_t_9; __pyx_t_9.memview = NULL; @@ -18909,26 +18891,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "pyFAI/ext/_distortion.pyx":947 + /* "pyFAI/ext/_distortion.pyx":962 * * data, indices, indptr = LUT * bins = indptr.size - 1 # <<<<<<<<<<<<<< * shape_in0, shape_in1 = shape_in * shape_out0, shape_out1 = shape_out */ - __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Subtract(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyNumber_Subtract(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_bins = __pyx_t_12; - /* "pyFAI/ext/_distortion.pyx":948 + /* "pyFAI/ext/_distortion.pyx":963 * data, indices, indptr = LUT * bins = indptr.size - 1 * shape_in0, shape_in1 = shape_in # <<<<<<<<<<<<<< @@ -18945,7 +18927,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -18958,21 +18940,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); #endif } else { Py_ssize_t index = -1; - __pyx_t_4 = PyObject_GetIter(__pyx_v_shape_in); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_GetIter(__pyx_v_shape_in); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_5)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L8_unpacking_done; @@ -18980,17 +18962,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L8_unpacking_done:; } - __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_shape_in0 = __pyx_t_12; __pyx_v_shape_in1 = __pyx_t_13; - /* "pyFAI/ext/_distortion.pyx":949 + /* "pyFAI/ext/_distortion.pyx":964 * bins = indptr.size - 1 * shape_in0, shape_in1 = shape_in * shape_out0, shape_out1 = shape_out # <<<<<<<<<<<<<< @@ -19007,7 +18989,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -19020,21 +19002,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); #endif } else { Py_ssize_t index = -1; - __pyx_t_4 = PyObject_GetIter(__pyx_v_shape_out); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_GetIter(__pyx_v_shape_out); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L10_unpacking_done; @@ -19042,24 +19024,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L10_unpacking_done:; } - __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_shape_out0 = __pyx_t_13; __pyx_v_shape_out1 = __pyx_t_12; - /* "pyFAI/ext/_distortion.pyx":950 + /* "pyFAI/ext/_distortion.pyx":965 * shape_in0, shape_in1 = shape_in * shape_out0, shape_out1 = shape_out * shape_img0, shape_img1 = image.shape # <<<<<<<<<<<<<< * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) { PyObject* sequence = __pyx_t_6; @@ -19071,7 +19053,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -19084,15 +19066,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; @@ -19100,7 +19082,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L12_unpacking_done; @@ -19108,17 +19090,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L12_unpacking_done:; } - __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_shape_img0 = __pyx_t_12; __pyx_v_shape_img1 = __pyx_t_13; - /* "pyFAI/ext/_distortion.pyx":951 + /* "pyFAI/ext/_distortion.pyx":966 * shape_out0, shape_out1 = shape_out * shape_img0, shape_img1 = image.shape * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): # <<<<<<<<<<<<<< @@ -19136,23 +19118,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_L14_bool_binop_done:; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":952 + /* "pyFAI/ext/_distortion.pyx":967 * shape_img0, shape_img1 = image.shape * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) # <<<<<<<<<<<<<< * if shape_img0 < shape_in0: * if shape_img1 < shape_in1: */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); @@ -19160,21 +19142,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -19182,7 +19164,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_v_new_image = __pyx_t_14; __pyx_t_14 = 0; - /* "pyFAI/ext/_distortion.pyx":953 + /* "pyFAI/ext/_distortion.pyx":968 * if (shape_img0 != shape_in0) or (shape_img1 != shape_in1): * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) * if shape_img0 < shape_in0: # <<<<<<<<<<<<<< @@ -19192,7 +19174,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_shape_img0 < __pyx_v_shape_in0) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":954 + /* "pyFAI/ext/_distortion.pyx":969 * new_image = numpy.zeros((shape_in0, shape_in1), dtype=numpy.float32) * if shape_img0 < shape_in0: * if shape_img1 < shape_in1: # <<<<<<<<<<<<<< @@ -19202,24 +19184,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_shape_img1 < __pyx_v_shape_in1) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":955 + /* "pyFAI/ext/_distortion.pyx":970 * if shape_img0 < shape_in0: * if shape_img1 < shape_in1: * new_image[:shape_img0, :shape_img1] = image # <<<<<<<<<<<<<< * else: * new_image[:shape_img0, :] = image[:, :shape_in1] */ - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_7 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_5 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); @@ -19227,25 +19209,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_5); __pyx_t_7 = 0; __pyx_t_5 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_14, __pyx_v_image) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_14, __pyx_v_image) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L17; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":957 + /* "pyFAI/ext/_distortion.pyx":972 * new_image[:shape_img0, :shape_img1] = image * else: * new_image[:shape_img0, :] = image[:, :shape_in1] # <<<<<<<<<<<<<< * else: * if shape_img1 < shape_in1: */ - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_5 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_slice__31); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_slice__31); @@ -19253,15 +19235,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyObject_GetItem(__pyx_v_image, __pyx_t_14); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = PyObject_GetItem(__pyx_v_image, __pyx_t_14); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_7 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); @@ -19269,7 +19251,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_slice__32); __Pyx_GIVEREF(__pyx_slice__32); __pyx_t_7 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_14, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_14, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -19278,7 +19260,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":959 + /* "pyFAI/ext/_distortion.pyx":974 * new_image[:shape_img0, :] = image[:, :shape_in1] * else: * if shape_img1 < shape_in1: # <<<<<<<<<<<<<< @@ -19288,19 +19270,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_shape_img1 < __pyx_v_shape_in1) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":960 + /* "pyFAI/ext/_distortion.pyx":975 * else: * if shape_img1 < shape_in1: * new_image[:, :shape_img1] = image[:shape_in0, :] # <<<<<<<<<<<<<< * else: * new_image[:, :] = image[:shape_in0, :shape_in1] */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_14 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); @@ -19308,15 +19290,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_slice__33); __Pyx_GIVEREF(__pyx_slice__33); __pyx_t_14 = 0; - __pyx_t_14 = PyObject_GetItem(__pyx_v_image, __pyx_t_5); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_14 = PyObject_GetItem(__pyx_v_image, __pyx_t_5); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PySlice_New(Py_None, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_slice__34); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__34); @@ -19324,31 +19306,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_5, __pyx_t_14) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_5, __pyx_t_14) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L18; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":962 + /* "pyFAI/ext/_distortion.pyx":977 * new_image[:, :shape_img1] = image[:shape_in0, :] * else: * new_image[:, :] = image[:shape_in0, :shape_in1] # <<<<<<<<<<<<<< * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) */ - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_5 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_7 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PySlice_New(Py_None, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); @@ -19356,47 +19338,47 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_7); __pyx_t_5 = 0; __pyx_t_7 = 0; - __pyx_t_7 = PyObject_GetItem(__pyx_v_image, __pyx_t_14); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_7 = PyObject_GetItem(__pyx_v_image, __pyx_t_14); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_tuple__37, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_tuple__37, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __pyx_L18:; } __pyx_L16:; - /* "pyFAI/ext/_distortion.pyx":963 + /* "pyFAI/ext/_distortion.pyx":978 * else: * new_image[:, :] = image[:shape_in0, :shape_in1] * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", # <<<<<<<<<<<<<< * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) * image = new_image */ - __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_warning); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_warning); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - /* "pyFAI/ext/_distortion.pyx":964 + /* "pyFAI/ext/_distortion.pyx":979 * new_image[:, :] = image[:shape_in0, :shape_in1] * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) # <<<<<<<<<<<<<< * image = new_image * */ - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_shape_img1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_14); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_shape_img0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_shape_in1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_shape_in0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - __pyx_t_16 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); - __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = NULL; __pyx_t_19 = 0; @@ -19410,7 +19392,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_19 = 1; } } - __pyx_t_20 = PyTuple_New(7+__pyx_t_19); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = PyTuple_New(7+__pyx_t_19); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); if (__pyx_t_18) { PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_18); __Pyx_GIVEREF(__pyx_t_18); __pyx_t_18 = NULL; @@ -19436,13 +19418,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_20, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_20, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":965 + /* "pyFAI/ext/_distortion.pyx":980 * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) * image = new_image # <<<<<<<<<<<<<< @@ -19455,23 +19437,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } __pyx_L13:; - /* "pyFAI/ext/_distortion.pyx":967 + /* "pyFAI/ext/_distortion.pyx":982 * image = new_image * * out = numpy.zeros((shape_out0, shape_out1), dtype=numpy.float32) # <<<<<<<<<<<<<< * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_shape_out0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_20 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_PyInt_From_int(__pyx_v_shape_out1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); @@ -19479,21 +19461,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_20); __pyx_t_7 = 0; __pyx_t_20 = 0; - __pyx_t_20 = PyTuple_New(1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = PyTuple_New(1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyDict_New(); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PyDict_New(); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_dtype, __pyx_t_16) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_dtype, __pyx_t_16) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_20, __pyx_t_17); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_20, __pyx_t_17); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; @@ -19501,14 +19483,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_v_out = __pyx_t_16; __pyx_t_16 = 0; - /* "pyFAI/ext/_distortion.pyx":968 + /* "pyFAI/ext/_distortion.pyx":983 * * out = numpy.zeros((shape_out0, shape_out1), dtype=numpy.float32) * lout = out.ravel() # <<<<<<<<<<<<<< * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size */ - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); __pyx_t_20 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_17))) { @@ -19521,33 +19503,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } } if (__pyx_t_20) { - __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_20); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_20); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; } else { - __pyx_t_16 = __Pyx_PyObject_CallNoArg(__pyx_t_17); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyObject_CallNoArg(__pyx_t_17); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_16); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_v_lout = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_distortion.pyx":969 + /* "pyFAI/ext/_distortion.pyx":984 * out = numpy.zeros((shape_out0, shape_out1), dtype=numpy.float32) * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * size = lin.size * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" */ - __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_20))) { @@ -19560,56 +19542,56 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } } if (__pyx_t_5) { - __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_5); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_5); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_16 = __Pyx_PyObject_CallNoArg(__pyx_t_20); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyObject_CallNoArg(__pyx_t_20); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - __pyx_t_20 = PyTuple_New(1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = PyTuple_New(1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_16); __Pyx_GIVEREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_16 = PyDict_New(); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = PyDict_New(); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_20, __pyx_t_16); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_20, __pyx_t_16); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_7); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_lin = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_distortion.pyx":970 + /* "pyFAI/ext/_distortion.pyx":985 * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size # <<<<<<<<<<<<<< * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" * */ - __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_lin, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_lin, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_16); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_16); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_v_size = __pyx_t_13; - /* "pyFAI/ext/_distortion.pyx":971 + /* "pyFAI/ext/_distortion.pyx":986 * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" # <<<<<<<<<<<<<< @@ -19620,12 +19602,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_size == (__pyx_v_shape_in0 * __pyx_v_shape_in1)) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_size_shape_in0_shape_in1); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_distortion.pyx":973 + /* "pyFAI/ext/_distortion.pyx":988 * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" * * for i in prange(bins, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -19641,13 +19623,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_13 = __pyx_v_bins; if (1 == 0) abort(); { - int __pyx_parallel_temp0 = 0xbad0bad0; - float __pyx_parallel_temp1 = __PYX_NAN(); + float __pyx_parallel_temp0 = __PYX_NAN(); + int __pyx_parallel_temp1 = 0xbad0bad0; float __pyx_parallel_temp2 = __PYX_NAN(); float __pyx_parallel_temp3 = __PYX_NAN(); - int __pyx_parallel_temp4 = 0xbad0bad0; + float __pyx_parallel_temp4 = __PYX_NAN(); float __pyx_parallel_temp5 = __PYX_NAN(); - float __pyx_parallel_temp6 = __PYX_NAN(); + int __pyx_parallel_temp6 = 0xbad0bad0; float __pyx_parallel_temp7 = __PYX_NAN(); int __pyx_parallel_temp8 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; @@ -19664,7 +19646,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (__pyx_t_21 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_26, __pyx_t_28, __pyx_t_27, __pyx_t_22, __pyx_t_24, __pyx_t_25, __pyx_t_1, __pyx_t_3) firstprivate(__pyx_t_17, __pyx_t_16, __pyx_t_7, __pyx_t_5, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_26, __pyx_t_1, __pyx_t_28, __pyx_t_27, __pyx_t_22, __pyx_t_24, __pyx_t_25, __pyx_t_3) firstprivate(__pyx_t_17, __pyx_t_16, __pyx_t_7, __pyx_t_5, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19674,23 +19656,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_idx) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_error) lastprivate(__pyx_v_t) lastprivate(__pyx_v_j) lastprivate(__pyx_v_y) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_value) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for lastprivate(__pyx_v_value) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_t) lastprivate(__pyx_v_error) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_y) lastprivate(__pyx_v_j) schedule(static) #endif /* _OPENMP */ for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_21; __pyx_t_12++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_12; /* Initialize private variables to invalid values */ + __pyx_v_value = ((float)__PYX_NAN()); __pyx_v_idx = ((int)0xbad0bad0); - __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_error = ((float)__PYX_NAN()); __pyx_v_t = ((float)__PYX_NAN()); - __pyx_v_j = ((int)0xbad0bad0); - __pyx_v_y = ((float)__PYX_NAN()); + __pyx_v_error = ((float)__PYX_NAN()); __pyx_v_sum = ((float)__PYX_NAN()); - __pyx_v_value = ((float)__PYX_NAN()); + __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_y = ((float)__PYX_NAN()); + __pyx_v_j = ((int)0xbad0bad0); - /* "pyFAI/ext/_distortion.pyx":974 + /* "pyFAI/ext/_distortion.pyx":989 * * for i in prange(bins, nogil=True, schedule="static"): * sum = 0.0 # Implement Kahan summation # <<<<<<<<<<<<<< @@ -19699,7 +19681,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED */ __pyx_v_sum = 0.0; - /* "pyFAI/ext/_distortion.pyx":975 + /* "pyFAI/ext/_distortion.pyx":990 * for i in prange(bins, nogil=True, schedule="static"): * sum = 0.0 # Implement Kahan summation * error = 0.0 # <<<<<<<<<<<<<< @@ -19708,7 +19690,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED */ __pyx_v_error = 0.0; - /* "pyFAI/ext/_distortion.pyx":976 + /* "pyFAI/ext/_distortion.pyx":991 * sum = 0.0 # Implement Kahan summation * error = 0.0 * for j in range(indptr[i], indptr[i + 1]): # <<<<<<<<<<<<<< @@ -19721,7 +19703,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED for (__pyx_t_25 = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_indptr.data) + __pyx_t_24)) ))); __pyx_t_25 < __pyx_t_23; __pyx_t_25+=1) { __pyx_v_j = __pyx_t_25; - /* "pyFAI/ext/_distortion.pyx":977 + /* "pyFAI/ext/_distortion.pyx":992 * error = 0.0 * for j in range(indptr[i], indptr[i + 1]): * idx = indices[j] # <<<<<<<<<<<<<< @@ -19731,7 +19713,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_26 = __pyx_v_j; __pyx_v_idx = (*((int *) ( /* dim=0 */ ((char *) (((int *) __pyx_v_indices.data) + __pyx_t_26)) ))); - /* "pyFAI/ext/_distortion.pyx":978 + /* "pyFAI/ext/_distortion.pyx":993 * for j in range(indptr[i], indptr[i + 1]): * idx = indices[j] * coef = data[j] # <<<<<<<<<<<<<< @@ -19741,7 +19723,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_27 = __pyx_v_j; __pyx_v_coef = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_data.data) + __pyx_t_27)) ))); - /* "pyFAI/ext/_distortion.pyx":979 + /* "pyFAI/ext/_distortion.pyx":994 * idx = indices[j] * coef = data[j] * if coef <= 0: # <<<<<<<<<<<<<< @@ -19751,7 +19733,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_coef <= 0.0) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":980 + /* "pyFAI/ext/_distortion.pyx":995 * coef = data[j] * if coef <= 0: * continue # <<<<<<<<<<<<<< @@ -19761,7 +19743,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED goto __pyx_L26_continue; } - /* "pyFAI/ext/_distortion.pyx":981 + /* "pyFAI/ext/_distortion.pyx":996 * if coef <= 0: * continue * if idx >= size: # <<<<<<<<<<<<<< @@ -19771,7 +19753,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_3 = ((__pyx_v_idx >= __pyx_v_size) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":982 + /* "pyFAI/ext/_distortion.pyx":997 * continue * if idx >= size: * with gil: # <<<<<<<<<<<<<< @@ -19784,23 +19766,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":983 + /* "pyFAI/ext/_distortion.pyx":998 * if idx >= size: * with gil: * logger.warning("Accessing %i >= %i !!!" % (idx, size)) # <<<<<<<<<<<<<< * continue * value = lin[idx] */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_warning); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_warning); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); @@ -19808,7 +19790,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_17); __pyx_t_7 = 0; __pyx_t_17 = 0; - __pyx_t_17 = __Pyx_PyString_Format(__pyx_kp_s_Accessing_i_i, __pyx_t_5); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_17 = __Pyx_PyString_Format(__pyx_kp_s_Accessing_i_i, __pyx_t_5); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; @@ -19822,24 +19804,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } } if (!__pyx_t_5) { - __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_17); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_17); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_16); } else { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_7, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L33_error;} + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_7, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L33_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - /* "pyFAI/ext/_distortion.pyx":984 + /* "pyFAI/ext/_distortion.pyx":999 * with gil: * logger.warning("Accessing %i >= %i !!!" % (idx, size)) * continue # <<<<<<<<<<<<<< @@ -19849,7 +19831,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED goto __pyx_L30_continue; } - /* "pyFAI/ext/_distortion.pyx":982 + /* "pyFAI/ext/_distortion.pyx":997 * continue * if idx >= size: * with gil: # <<<<<<<<<<<<<< @@ -19873,7 +19855,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } } - /* "pyFAI/ext/_distortion.pyx":985 + /* "pyFAI/ext/_distortion.pyx":1000 * logger.warning("Accessing %i >= %i !!!" % (idx, size)) * continue * value = lin[idx] # <<<<<<<<<<<<<< @@ -19883,7 +19865,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_t_28 = __pyx_v_idx; __pyx_v_value = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_lin.data) + __pyx_t_28)) ))); - /* "pyFAI/ext/_distortion.pyx":986 + /* "pyFAI/ext/_distortion.pyx":1001 * continue * value = lin[idx] * if do_dummy and fabs(value - cdummy) <= cdelta_dummy: # <<<<<<<<<<<<<< @@ -19901,7 +19883,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_L36_bool_binop_done:; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":987 + /* "pyFAI/ext/_distortion.pyx":1002 * value = lin[idx] * if do_dummy and fabs(value - cdummy) <= cdelta_dummy: * continue # <<<<<<<<<<<<<< @@ -19911,7 +19893,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED goto __pyx_L26_continue; } - /* "pyFAI/ext/_distortion.pyx":988 + /* "pyFAI/ext/_distortion.pyx":1003 * if do_dummy and fabs(value - cdummy) <= cdelta_dummy: * continue * y = value * coef - error # <<<<<<<<<<<<<< @@ -19920,7 +19902,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED */ __pyx_v_y = ((__pyx_v_value * __pyx_v_coef) - __pyx_v_error); - /* "pyFAI/ext/_distortion.pyx":989 + /* "pyFAI/ext/_distortion.pyx":1004 * continue * y = value * coef - error * t = sum + y # <<<<<<<<<<<<<< @@ -19929,7 +19911,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED */ __pyx_v_t = (__pyx_v_sum + __pyx_v_y); - /* "pyFAI/ext/_distortion.pyx":990 + /* "pyFAI/ext/_distortion.pyx":1005 * y = value * coef - error * t = sum + y * error = (t - sum) - y # <<<<<<<<<<<<<< @@ -19938,7 +19920,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED */ __pyx_v_error = ((__pyx_v_t - __pyx_v_sum) - __pyx_v_y); - /* "pyFAI/ext/_distortion.pyx":991 + /* "pyFAI/ext/_distortion.pyx":1006 * t = sum + y * error = (t - sum) - y * sum = t # <<<<<<<<<<<<<< @@ -19949,7 +19931,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_L26_continue:; } - /* "pyFAI/ext/_distortion.pyx":992 + /* "pyFAI/ext/_distortion.pyx":1007 * error = (t - sum) - y * sum = t * if do_dummy and (sum == 0.0): # <<<<<<<<<<<<<< @@ -19967,7 +19949,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_L39_bool_binop_done:; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":993 + /* "pyFAI/ext/_distortion.pyx":1008 * sum = t * if do_dummy and (sum == 0.0): * sum = cdummy # <<<<<<<<<<<<<< @@ -19979,7 +19961,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } __pyx_L38:; - /* "pyFAI/ext/_distortion.pyx":994 + /* "pyFAI/ext/_distortion.pyx":1009 * if do_dummy and (sum == 0.0): * sum = cdummy * lout[i] += sum # this += is for Cython's reduction # <<<<<<<<<<<<<< @@ -20010,18 +19992,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED goto __pyx_L41; __pyx_L41:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates1) + #pragma omp critical(__pyx_parallel_lastprivates23) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_idx; - __pyx_parallel_temp1 = __pyx_v_coef; - __pyx_parallel_temp2 = __pyx_v_error; - __pyx_parallel_temp3 = __pyx_v_t; - __pyx_parallel_temp4 = __pyx_v_j; - __pyx_parallel_temp5 = __pyx_v_y; - __pyx_parallel_temp6 = __pyx_v_sum; - __pyx_parallel_temp7 = __pyx_v_value; - __pyx_parallel_temp8 = __pyx_v_i; + __pyx_parallel_temp0 = __pyx_v_value; + __pyx_parallel_temp1 = __pyx_v_idx; + __pyx_parallel_temp2 = __pyx_v_t; + __pyx_parallel_temp3 = __pyx_v_error; + __pyx_parallel_temp4 = __pyx_v_sum; + __pyx_parallel_temp5 = __pyx_v_coef; + __pyx_parallel_temp6 = __pyx_v_i; + __pyx_parallel_temp7 = __pyx_v_y; + __pyx_parallel_temp8 = __pyx_v_j; } __pyx_L42:; #ifdef _OPENMP @@ -20061,15 +20043,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_idx = __pyx_parallel_temp0; - __pyx_v_coef = __pyx_parallel_temp1; - __pyx_v_error = __pyx_parallel_temp2; - __pyx_v_t = __pyx_parallel_temp3; - __pyx_v_j = __pyx_parallel_temp4; - __pyx_v_y = __pyx_parallel_temp5; - __pyx_v_sum = __pyx_parallel_temp6; - __pyx_v_value = __pyx_parallel_temp7; - __pyx_v_i = __pyx_parallel_temp8; + __pyx_v_value = __pyx_parallel_temp0; + __pyx_v_idx = __pyx_parallel_temp1; + __pyx_v_t = __pyx_parallel_temp2; + __pyx_v_error = __pyx_parallel_temp3; + __pyx_v_sum = __pyx_parallel_temp4; + __pyx_v_coef = __pyx_parallel_temp5; + __pyx_v_i = __pyx_parallel_temp6; + __pyx_v_y = __pyx_parallel_temp7; + __pyx_v_j = __pyx_parallel_temp8; switch (__pyx_parallel_why) { case 3: goto __pyx_L19_return; case 4: @@ -20096,7 +20078,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED #endif } - /* "pyFAI/ext/_distortion.pyx":973 + /* "pyFAI/ext/_distortion.pyx":988 * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" * * for i in prange(bins, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -20126,21 +20108,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED } } - /* "pyFAI/ext/_distortion.pyx":995 + /* "pyFAI/ext/_distortion.pyx":1010 * sum = cdummy * lout[i] += sum # this += is for Cython's reduction * return out # <<<<<<<<<<<<<< * - * + * @cython.cdivision(True) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":921 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":936 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * Correct an image based on the look-up table calculated ... @@ -20177,9 +20159,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":998 - * - * +/* "pyFAI/ext/_distortion.pyx":1017 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_LUT(image, shape, lut_point[:, :]LUT): # <<<<<<<<<<<<<< * """ * Take an image which has been corrected and transform it into it's raw (with loss of information) @@ -20187,7 +20169,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_19uncorrect_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_18uncorrect_LUT[] = "\n Take an image which has been corrected and transform it into it's raw (with loss of information)\n @param image: 2D-array with the image\n @param shape: shape of output image\n @param LUT: Look up table, here a 2D-array of struct\n @return: uncorrected 2D image and a mask (pixels in raw image not existing)\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_18uncorrect_LUT[] = "uncorrect_LUT(image, shape, __Pyx_memviewslice LUT)\n\n Take an image which has been corrected and transform it into it's raw (with loss of information)\n \n :param image: 2D-array with the image\n :param shape: shape of output image\n :param LUT: Look up table, here a 2D-array of struct\n :return: uncorrected 2D image and a mask (pixels in raw image not existing)\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_19uncorrect_LUT = {"uncorrect_LUT", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_19uncorrect_LUT, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_18uncorrect_LUT}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_19uncorrect_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_image = 0; @@ -20220,16 +20202,16 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_19uncorrect_LUT(PyObject *__ case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("uncorrect_LUT", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect_LUT", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_LUT)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("uncorrect_LUT", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect_LUT", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uncorrect_LUT") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uncorrect_LUT") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -20240,11 +20222,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_19uncorrect_LUT(PyObject *__ } __pyx_v_image = values[0]; __pyx_v_shape = values[1]; - __pyx_v_LUT = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point(values[2]); if (unlikely(!__pyx_v_LUT.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_LUT = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point(values[2]); if (unlikely(!__pyx_v_LUT.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("uncorrect_LUT", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect_LUT", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.uncorrect_LUT", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -20285,8 +20267,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE int __pyx_t_13; int __pyx_t_14; int __pyx_t_15; - int __pyx_t_16; - float __pyx_t_17; + float __pyx_t_16; + int __pyx_t_17; int __pyx_t_18; int __pyx_t_19; int __pyx_t_20; @@ -20294,39 +20276,38 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE int __pyx_t_22; int __pyx_t_23; int __pyx_t_24; - int __pyx_t_25; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("uncorrect_LUT", 0); - /* "pyFAI/ext/_distortion.pyx":1008 + /* "pyFAI/ext/_distortion.pyx":1028 * cdef int idx, j * cdef float total, coef * out = numpy.zeros(shape, dtype=numpy.float32) # <<<<<<<<<<<<<< * mask = numpy.zeros(shape, dtype=numpy.int8) * cdef numpy.int8_t[:] lmask = mask.ravel() */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -20334,33 +20315,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE __pyx_v_out = __pyx_t_5; __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":1009 + /* "pyFAI/ext/_distortion.pyx":1029 * cdef float total, coef * out = numpy.zeros(shape, dtype=numpy.float32) * mask = numpy.zeros(shape, dtype=numpy.int8) # <<<<<<<<<<<<<< * cdef numpy.int8_t[:] lmask = mask.ravel() * cdef float[:] lout = out.ravel() */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -20368,14 +20349,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE __pyx_v_mask = __pyx_t_4; __pyx_t_4 = 0; - /* "pyFAI/ext/_distortion.pyx":1010 + /* "pyFAI/ext/_distortion.pyx":1030 * out = numpy.zeros(shape, dtype=numpy.float32) * mask = numpy.zeros(shape, dtype=numpy.int8) * cdef numpy.int8_t[:] lmask = mask.ravel() # <<<<<<<<<<<<<< * cdef float[:] lout = out.ravel() * cdef float[:] lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -20388,28 +20369,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE } } if (__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_4); - if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_lmask = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1011 + /* "pyFAI/ext/_distortion.pyx":1031 * mask = numpy.zeros(shape, dtype=numpy.int8) * cdef numpy.int8_t[:] lmask = mask.ravel() * cdef float[:] lout = out.ravel() # <<<<<<<<<<<<<< * cdef float[:] lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -20422,52 +20403,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE } } if (__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_4); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_lout = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1012 + /* "pyFAI/ext/_distortion.pyx":1032 * cdef numpy.int8_t[:] lmask = mask.ravel() * cdef float[:] lout = out.ravel() * cdef float[:] lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() # <<<<<<<<<<<<<< * * for idx in range(LUT.shape[0]): */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_image); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_image); __Pyx_GIVEREF(__pyx_v_image); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; @@ -20481,21 +20462,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE } } if (__pyx_t_8) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_4); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_lin = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1014 + /* "pyFAI/ext/_distortion.pyx":1034 * cdef float[:] lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() * * for idx in range(LUT.shape[0]): # <<<<<<<<<<<<<< @@ -20506,7 +20487,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_v_idx = __pyx_t_11; - /* "pyFAI/ext/_distortion.pyx":1015 + /* "pyFAI/ext/_distortion.pyx":1035 * * for idx in range(LUT.shape[0]): * total = 0.0 # <<<<<<<<<<<<<< @@ -20515,7 +20496,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE */ __pyx_v_total = 0.0; - /* "pyFAI/ext/_distortion.pyx":1016 + /* "pyFAI/ext/_distortion.pyx":1036 * for idx in range(LUT.shape[0]): * total = 0.0 * for j in range(LUT.shape[1]): # <<<<<<<<<<<<<< @@ -20526,7 +20507,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { __pyx_v_j = __pyx_t_13; - /* "pyFAI/ext/_distortion.pyx":1017 + /* "pyFAI/ext/_distortion.pyx":1037 * total = 0.0 * for j in range(LUT.shape[1]): * coef = LUT[idx, j].coef # <<<<<<<<<<<<<< @@ -20535,33 +20516,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE */ __pyx_t_14 = __pyx_v_idx; __pyx_t_15 = __pyx_v_j; - __pyx_t_16 = -1; - if (__pyx_t_14 < 0) { - __pyx_t_14 += __pyx_v_LUT.shape[0]; - if (unlikely(__pyx_t_14 < 0)) __pyx_t_16 = 0; - } else if (unlikely(__pyx_t_14 >= __pyx_v_LUT.shape[0])) __pyx_t_16 = 0; - if (__pyx_t_15 < 0) { - __pyx_t_15 += __pyx_v_LUT.shape[1]; - if (unlikely(__pyx_t_15 < 0)) __pyx_t_16 = 1; - } else if (unlikely(__pyx_t_15 >= __pyx_v_LUT.shape[1])) __pyx_t_16 = 1; - if (unlikely(__pyx_t_16 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_16); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_17 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_14 * __pyx_v_LUT.strides[0]) ) + __pyx_t_15 * __pyx_v_LUT.strides[1]) ))).coef; - __pyx_v_coef = __pyx_t_17; + __pyx_t_16 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_14 * __pyx_v_LUT.strides[0]) ) + __pyx_t_15 * __pyx_v_LUT.strides[1]) ))).coef; + __pyx_v_coef = __pyx_t_16; - /* "pyFAI/ext/_distortion.pyx":1018 + /* "pyFAI/ext/_distortion.pyx":1038 * for j in range(LUT.shape[1]): * coef = LUT[idx, j].coef * if coef > 0: # <<<<<<<<<<<<<< * total += coef * if total <= 0: */ - __pyx_t_18 = ((__pyx_v_coef > 0.0) != 0); - if (__pyx_t_18) { + __pyx_t_17 = ((__pyx_v_coef > 0.0) != 0); + if (__pyx_t_17) { - /* "pyFAI/ext/_distortion.pyx":1019 + /* "pyFAI/ext/_distortion.pyx":1039 * coef = LUT[idx, j].coef * if coef > 0: * total += coef # <<<<<<<<<<<<<< @@ -20574,17 +20542,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE __pyx_L7:; } - /* "pyFAI/ext/_distortion.pyx":1020 + /* "pyFAI/ext/_distortion.pyx":1040 * if coef > 0: * total += coef * if total <= 0: # <<<<<<<<<<<<<< * lmask[idx] = 1 * continue */ - __pyx_t_18 = ((__pyx_v_total <= 0.0) != 0); - if (__pyx_t_18) { + __pyx_t_17 = ((__pyx_v_total <= 0.0) != 0); + if (__pyx_t_17) { - /* "pyFAI/ext/_distortion.pyx":1021 + /* "pyFAI/ext/_distortion.pyx":1041 * total += coef * if total <= 0: * lmask[idx] = 1 # <<<<<<<<<<<<<< @@ -20592,18 +20560,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE * val = lin[idx] / total */ __pyx_t_13 = __pyx_v_idx; - __pyx_t_16 = -1; - if (__pyx_t_13 < 0) { - __pyx_t_13 += __pyx_v_lmask.shape[0]; - if (unlikely(__pyx_t_13 < 0)) __pyx_t_16 = 0; - } else if (unlikely(__pyx_t_13 >= __pyx_v_lmask.shape[0])) __pyx_t_16 = 0; - if (unlikely(__pyx_t_16 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_16); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } *((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_lmask.data + __pyx_t_13 * __pyx_v_lmask.strides[0]) )) = 1; - /* "pyFAI/ext/_distortion.pyx":1022 + /* "pyFAI/ext/_distortion.pyx":1042 * if total <= 0: * lmask[idx] = 1 * continue # <<<<<<<<<<<<<< @@ -20613,40 +20572,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE goto __pyx_L3_continue; } - /* "pyFAI/ext/_distortion.pyx":1023 + /* "pyFAI/ext/_distortion.pyx":1043 * lmask[idx] = 1 * continue * val = lin[idx] / total # <<<<<<<<<<<<<< * for j in range(LUT.shape[1]): * coef = LUT[idx, j].coef */ - __pyx_t_16 = __pyx_v_idx; - __pyx_t_19 = -1; - if (__pyx_t_16 < 0) { - __pyx_t_16 += __pyx_v_lin.shape[0]; - if (unlikely(__pyx_t_16 < 0)) __pyx_t_19 = 0; - } else if (unlikely(__pyx_t_16 >= __pyx_v_lin.shape[0])) __pyx_t_19 = 0; - if (unlikely(__pyx_t_19 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_19); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_17 = (*((float *) ( /* dim=0 */ (__pyx_v_lin.data + __pyx_t_16 * __pyx_v_lin.strides[0]) ))); - if (unlikely(__pyx_v_total == 0)) { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_4 = PyFloat_FromDouble((__pyx_t_17 / __pyx_v_total)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __pyx_v_idx; + __pyx_t_4 = PyFloat_FromDouble(((*((float *) ( /* dim=0 */ (__pyx_v_lin.data + __pyx_t_18 * __pyx_v_lin.strides[0]) ))) / __pyx_v_total)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/_distortion.pyx":1024 + /* "pyFAI/ext/_distortion.pyx":1044 * continue * val = lin[idx] / total * for j in range(LUT.shape[1]): # <<<<<<<<<<<<<< @@ -20657,7 +20596,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_12; __pyx_t_19+=1) { __pyx_v_j = __pyx_t_19; - /* "pyFAI/ext/_distortion.pyx":1025 + /* "pyFAI/ext/_distortion.pyx":1045 * val = lin[idx] / total * for j in range(LUT.shape[1]): * coef = LUT[idx, j].coef # <<<<<<<<<<<<<< @@ -20666,72 +20605,37 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE */ __pyx_t_20 = __pyx_v_idx; __pyx_t_21 = __pyx_v_j; - __pyx_t_22 = -1; - if (__pyx_t_20 < 0) { - __pyx_t_20 += __pyx_v_LUT.shape[0]; - if (unlikely(__pyx_t_20 < 0)) __pyx_t_22 = 0; - } else if (unlikely(__pyx_t_20 >= __pyx_v_LUT.shape[0])) __pyx_t_22 = 0; - if (__pyx_t_21 < 0) { - __pyx_t_21 += __pyx_v_LUT.shape[1]; - if (unlikely(__pyx_t_21 < 0)) __pyx_t_22 = 1; - } else if (unlikely(__pyx_t_21 >= __pyx_v_LUT.shape[1])) __pyx_t_22 = 1; - if (unlikely(__pyx_t_22 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_22); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_17 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_20 * __pyx_v_LUT.strides[0]) ) + __pyx_t_21 * __pyx_v_LUT.strides[1]) ))).coef; - __pyx_v_coef = __pyx_t_17; + __pyx_t_16 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_20 * __pyx_v_LUT.strides[0]) ) + __pyx_t_21 * __pyx_v_LUT.strides[1]) ))).coef; + __pyx_v_coef = __pyx_t_16; - /* "pyFAI/ext/_distortion.pyx":1026 + /* "pyFAI/ext/_distortion.pyx":1046 * for j in range(LUT.shape[1]): * coef = LUT[idx, j].coef * if coef > 0: # <<<<<<<<<<<<<< * lout[LUT[idx, j].idx] += val * coef * return out, mask */ - __pyx_t_18 = ((__pyx_v_coef > 0.0) != 0); - if (__pyx_t_18) { + __pyx_t_17 = ((__pyx_v_coef > 0.0) != 0); + if (__pyx_t_17) { - /* "pyFAI/ext/_distortion.pyx":1027 + /* "pyFAI/ext/_distortion.pyx":1047 * coef = LUT[idx, j].coef * if coef > 0: * lout[LUT[idx, j].idx] += val * coef # <<<<<<<<<<<<<< * return out, mask * */ - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_coef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_coef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_v_val, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Multiply(__pyx_v_val, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_17 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_17 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_22 = __pyx_v_idx; __pyx_t_23 = __pyx_v_j; - __pyx_t_24 = -1; - if (__pyx_t_22 < 0) { - __pyx_t_22 += __pyx_v_LUT.shape[0]; - if (unlikely(__pyx_t_22 < 0)) __pyx_t_24 = 0; - } else if (unlikely(__pyx_t_22 >= __pyx_v_LUT.shape[0])) __pyx_t_24 = 0; - if (__pyx_t_23 < 0) { - __pyx_t_23 += __pyx_v_LUT.shape[1]; - if (unlikely(__pyx_t_23 < 0)) __pyx_t_24 = 1; - } else if (unlikely(__pyx_t_23 >= __pyx_v_LUT.shape[1])) __pyx_t_24 = 1; - if (unlikely(__pyx_t_24 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_24); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } __pyx_t_24 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_22 * __pyx_v_LUT.strides[0]) ) + __pyx_t_23 * __pyx_v_LUT.strides[1]) ))).idx; - __pyx_t_25 = -1; - if (__pyx_t_24 < 0) { - __pyx_t_24 += __pyx_v_lout.shape[0]; - if (unlikely(__pyx_t_24 < 0)) __pyx_t_25 = 0; - } else if (unlikely(__pyx_t_24 >= __pyx_v_lout.shape[0])) __pyx_t_25 = 0; - if (unlikely(__pyx_t_25 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_25); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - *((float *) ( /* dim=0 */ (__pyx_v_lout.data + __pyx_t_24 * __pyx_v_lout.strides[0]) )) += __pyx_t_17; + *((float *) ( /* dim=0 */ (__pyx_v_lout.data + __pyx_t_24 * __pyx_v_lout.strides[0]) )) += __pyx_t_16; goto __pyx_L11; } __pyx_L11:; @@ -20739,15 +20643,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE __pyx_L3_continue:; } - /* "pyFAI/ext/_distortion.pyx":1028 + /* "pyFAI/ext/_distortion.pyx":1048 * if coef > 0: * lout[LUT[idx, j].idx] += val * coef * return out, mask # <<<<<<<<<<<<<< * - * + * @cython.cdivision(True) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_out); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_out); @@ -20759,9 +20663,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE __pyx_t_3 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":998 - * - * + /* "pyFAI/ext/_distortion.pyx":1017 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_LUT(image, shape, lut_point[:, :]LUT): # <<<<<<<<<<<<<< * """ * Take an image which has been corrected and transform it into it's raw (with loss of information) @@ -20793,17 +20697,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_18uncorrect_LUT(CYTHON_UNUSE return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1031 - * - * +/* "pyFAI/ext/_distortion.pyx":1055 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_CSR(image, shape, LUT): # <<<<<<<<<<<<<< - * """ - * Take an image which has been corrected and transform it into it's raw (with loss of information) + * """Take an image which has been corrected and transform it into it's raw (with loss of information) + * */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_21uncorrect_CSR(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_20uncorrect_CSR[] = "\n Take an image which has been corrected and transform it into it's raw (with loss of information)\n @param image: 2D-array with the image\n @param shape: shape of output image\n @param LUT: Look up table, here a 3-tuple of ndarray\n @return: uncorrected 2D image and a mask (pixels in raw image not existing)\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_20uncorrect_CSR[] = "uncorrect_CSR(image, shape, LUT)\nTake an image which has been corrected and transform it into it's raw (with loss of information)\n \n :param image: 2D-array with the image\n :param shape: shape of output image\n :param LUT: Look up table, here a 3-tuple of ndarray\n :return: uncorrected 2D image and a mask (pixels in raw image not existing)\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_21uncorrect_CSR = {"uncorrect_CSR", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_21uncorrect_CSR, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_20uncorrect_CSR}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_21uncorrect_CSR(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_image = 0; @@ -20836,16 +20740,16 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_21uncorrect_CSR(PyObject *__ case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("uncorrect_CSR", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect_CSR", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_LUT)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("uncorrect_CSR", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect_CSR", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uncorrect_CSR") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uncorrect_CSR") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -20860,7 +20764,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_21uncorrect_CSR(PyObject *__ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("uncorrect_CSR", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect_CSR", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.uncorrect_CSR", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -20903,84 +20807,83 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE int __pyx_t_11; int __pyx_t_12; long __pyx_t_13; - int __pyx_t_14; - __pyx_t_5numpy_int32_t __pyx_t_15; + __pyx_t_5numpy_int32_t __pyx_t_14; + int __pyx_t_15; int __pyx_t_16; int __pyx_t_17; int __pyx_t_18; int __pyx_t_19; - int __pyx_t_20; - float __pyx_t_21; - long __pyx_t_22; + long __pyx_t_20; + int __pyx_t_21; + int __pyx_t_22; int __pyx_t_23; - int __pyx_t_24; + float __pyx_t_24; int __pyx_t_25; - int __pyx_t_26; - __pyx_t_5numpy_int32_t __pyx_t_27; + __pyx_t_5numpy_int32_t __pyx_t_26; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("uncorrect_CSR", 0); - /* "pyFAI/ext/_distortion.pyx":1044 + /* "pyFAI/ext/_distortion.pyx":1068 * numpy.int8_t[:] lmask * float[:] lout, lin, data * numpy.int32_t[:] indices = LUT[1] # <<<<<<<<<<<<<< * numpy.int32_t[:] indptr = LUT[2] * out = numpy.zeros(shape, dtype=numpy.float32) */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_LUT, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_LUT, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(__pyx_t_1); - if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_indices = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1045 + /* "pyFAI/ext/_distortion.pyx":1069 * float[:] lout, lin, data * numpy.int32_t[:] indices = LUT[1] * numpy.int32_t[:] indptr = LUT[2] # <<<<<<<<<<<<<< * out = numpy.zeros(shape, dtype=numpy.float32) * lout = out.ravel() */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_LUT, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_LUT, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(__pyx_t_1); - if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_indptr = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1046 + /* "pyFAI/ext/_distortion.pyx":1070 * numpy.int32_t[:] indices = LUT[1] * numpy.int32_t[:] indptr = LUT[2] * out = numpy.zeros(shape, dtype=numpy.float32) # <<<<<<<<<<<<<< * lout = out.ravel() * lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -20988,14 +20891,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE __pyx_v_out = __pyx_t_7; __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1047 + /* "pyFAI/ext/_distortion.pyx":1071 * numpy.int32_t[:] indptr = LUT[2] * out = numpy.zeros(shape, dtype=numpy.float32) * lout = out.ravel() # <<<<<<<<<<<<<< * lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() * mask = numpy.zeros(shape, dtype=numpy.int8) */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { @@ -21008,52 +20911,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE } } if (__pyx_t_1) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_lout = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1048 + /* "pyFAI/ext/_distortion.pyx":1072 * out = numpy.zeros(shape, dtype=numpy.float32) * lout = out.ravel() * lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() # <<<<<<<<<<<<<< * mask = numpy.zeros(shape, dtype=numpy.int8) * lmask = mask.ravel() */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_image); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_image); __Pyx_GIVEREF(__pyx_v_image); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; @@ -21067,47 +20970,47 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE } } if (__pyx_t_9) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_lin = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1049 + /* "pyFAI/ext/_distortion.pyx":1073 * lout = out.ravel() * lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() * mask = numpy.zeros(shape, dtype=numpy.int8) # <<<<<<<<<<<<<< * lmask = mask.ravel() * data = LUT[0] */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); - __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; @@ -21115,14 +21018,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE __pyx_v_mask = __pyx_t_1; __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":1050 + /* "pyFAI/ext/_distortion.pyx":1074 * lin = numpy.ascontiguousarray(image, dtype=numpy.float32).ravel() * mask = numpy.zeros(shape, dtype=numpy.int8) * lmask = mask.ravel() # <<<<<<<<<<<<<< * data = LUT[0] * nbins = indptr.size - 1 */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) { @@ -21135,56 +21038,56 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE } } if (__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(__pyx_t_1); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_lmask = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1051 + /* "pyFAI/ext/_distortion.pyx":1075 * mask = numpy.zeros(shape, dtype=numpy.int8) * lmask = mask.ravel() * data = LUT[0] # <<<<<<<<<<<<<< * nbins = indptr.size - 1 * for idx in range(nbins): */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_LUT, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_LUT, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_data = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1052 + /* "pyFAI/ext/_distortion.pyx":1076 * lmask = mask.ravel() * data = LUT[0] * nbins = indptr.size - 1 # <<<<<<<<<<<<<< * for idx in range(nbins): * total = 0.0 */ - __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int32_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int32_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_indptr, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int32_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int32_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Subtract(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyNumber_Subtract(__pyx_t_9, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_nbins = __pyx_t_11; - /* "pyFAI/ext/_distortion.pyx":1053 + /* "pyFAI/ext/_distortion.pyx":1077 * data = LUT[0] * nbins = indptr.size - 1 * for idx in range(nbins): # <<<<<<<<<<<<<< @@ -21195,7 +21098,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_idx = __pyx_t_12; - /* "pyFAI/ext/_distortion.pyx":1054 + /* "pyFAI/ext/_distortion.pyx":1078 * nbins = indptr.size - 1 * for idx in range(nbins): * total = 0.0 # <<<<<<<<<<<<<< @@ -21204,7 +21107,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE */ __pyx_v_total = 0.0; - /* "pyFAI/ext/_distortion.pyx":1055 + /* "pyFAI/ext/_distortion.pyx":1079 * for idx in range(nbins): * total = 0.0 * for j in range(indptr[idx], indptr[idx + 1]): # <<<<<<<<<<<<<< @@ -21212,30 +21115,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE * if coef > 0: */ __pyx_t_13 = (__pyx_v_idx + 1); - __pyx_t_14 = -1; - if (__pyx_t_13 < 0) { - __pyx_t_13 += __pyx_v_indptr.shape[0]; - if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0; - } else if (unlikely(__pyx_t_13 >= __pyx_v_indptr.shape[0])) __pyx_t_14 = 0; - if (unlikely(__pyx_t_14 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_14); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_15 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_13 * __pyx_v_indptr.strides[0]) ))); - __pyx_t_14 = __pyx_v_idx; - __pyx_t_16 = -1; - if (__pyx_t_14 < 0) { - __pyx_t_14 += __pyx_v_indptr.shape[0]; - if (unlikely(__pyx_t_14 < 0)) __pyx_t_16 = 0; - } else if (unlikely(__pyx_t_14 >= __pyx_v_indptr.shape[0])) __pyx_t_16 = 0; - if (unlikely(__pyx_t_16 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_16); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - for (__pyx_t_16 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_14 * __pyx_v_indptr.strides[0]) ))); __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) { + __pyx_t_14 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_13 * __pyx_v_indptr.strides[0]) ))); + __pyx_t_15 = __pyx_v_idx; + for (__pyx_t_16 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_15 * __pyx_v_indptr.strides[0]) ))); __pyx_t_16 < __pyx_t_14; __pyx_t_16+=1) { __pyx_v_j = __pyx_t_16; - /* "pyFAI/ext/_distortion.pyx":1056 + /* "pyFAI/ext/_distortion.pyx":1080 * total = 0.0 * for j in range(indptr[idx], indptr[idx + 1]): * coef = data[j] # <<<<<<<<<<<<<< @@ -21243,28 +21128,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE * total += coef */ __pyx_t_17 = __pyx_v_j; - __pyx_t_18 = -1; - if (__pyx_t_17 < 0) { - __pyx_t_17 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_17 < 0)) __pyx_t_18 = 0; - } else if (unlikely(__pyx_t_17 >= __pyx_v_data.shape[0])) __pyx_t_18 = 0; - if (unlikely(__pyx_t_18 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_18); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } __pyx_v_coef = (*((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_17 * __pyx_v_data.strides[0]) ))); - /* "pyFAI/ext/_distortion.pyx":1057 + /* "pyFAI/ext/_distortion.pyx":1081 * for j in range(indptr[idx], indptr[idx + 1]): * coef = data[j] * if coef > 0: # <<<<<<<<<<<<<< * total += coef * if total <= 0: */ - __pyx_t_19 = ((__pyx_v_coef > 0.0) != 0); - if (__pyx_t_19) { + __pyx_t_18 = ((__pyx_v_coef > 0.0) != 0); + if (__pyx_t_18) { - /* "pyFAI/ext/_distortion.pyx":1058 + /* "pyFAI/ext/_distortion.pyx":1082 * coef = data[j] * if coef > 0: * total += coef # <<<<<<<<<<<<<< @@ -21277,17 +21153,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE __pyx_L7:; } - /* "pyFAI/ext/_distortion.pyx":1059 + /* "pyFAI/ext/_distortion.pyx":1083 * if coef > 0: * total += coef * if total <= 0: # <<<<<<<<<<<<<< * lmask[idx] = 1 * continue */ - __pyx_t_19 = ((__pyx_v_total <= 0.0) != 0); - if (__pyx_t_19) { + __pyx_t_18 = ((__pyx_v_total <= 0.0) != 0); + if (__pyx_t_18) { - /* "pyFAI/ext/_distortion.pyx":1060 + /* "pyFAI/ext/_distortion.pyx":1084 * total += coef * if total <= 0: * lmask[idx] = 1 # <<<<<<<<<<<<<< @@ -21295,18 +21171,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE * val = lin[idx] / total */ __pyx_t_16 = __pyx_v_idx; - __pyx_t_18 = -1; - if (__pyx_t_16 < 0) { - __pyx_t_16 += __pyx_v_lmask.shape[0]; - if (unlikely(__pyx_t_16 < 0)) __pyx_t_18 = 0; - } else if (unlikely(__pyx_t_16 >= __pyx_v_lmask.shape[0])) __pyx_t_18 = 0; - if (unlikely(__pyx_t_18 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_18); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } *((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_lmask.data + __pyx_t_16 * __pyx_v_lmask.strides[0]) )) = 1; - /* "pyFAI/ext/_distortion.pyx":1061 + /* "pyFAI/ext/_distortion.pyx":1085 * if total <= 0: * lmask[idx] = 1 * continue # <<<<<<<<<<<<<< @@ -21316,134 +21183,69 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE goto __pyx_L3_continue; } - /* "pyFAI/ext/_distortion.pyx":1062 + /* "pyFAI/ext/_distortion.pyx":1086 * lmask[idx] = 1 * continue * val = lin[idx] / total # <<<<<<<<<<<<<< * for j in range(indptr[idx], indptr[idx + 1]): * coef = data[j] */ - __pyx_t_18 = __pyx_v_idx; - __pyx_t_20 = -1; - if (__pyx_t_18 < 0) { - __pyx_t_18 += __pyx_v_lin.shape[0]; - if (unlikely(__pyx_t_18 < 0)) __pyx_t_20 = 0; - } else if (unlikely(__pyx_t_18 >= __pyx_v_lin.shape[0])) __pyx_t_20 = 0; - if (unlikely(__pyx_t_20 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_20); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_21 = (*((float *) ( /* dim=0 */ (__pyx_v_lin.data + __pyx_t_18 * __pyx_v_lin.strides[0]) ))); - if (unlikely(__pyx_v_total == 0)) { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_1 = PyFloat_FromDouble((__pyx_t_21 / __pyx_v_total)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __pyx_v_idx; + __pyx_t_1 = PyFloat_FromDouble(((*((float *) ( /* dim=0 */ (__pyx_v_lin.data + __pyx_t_19 * __pyx_v_lin.strides[0]) ))) / __pyx_v_total)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":1063 + /* "pyFAI/ext/_distortion.pyx":1087 * continue * val = lin[idx] / total * for j in range(indptr[idx], indptr[idx + 1]): # <<<<<<<<<<<<<< * coef = data[j] * if coef > 0: */ - __pyx_t_22 = (__pyx_v_idx + 1); - __pyx_t_20 = -1; - if (__pyx_t_22 < 0) { - __pyx_t_22 += __pyx_v_indptr.shape[0]; - if (unlikely(__pyx_t_22 < 0)) __pyx_t_20 = 0; - } else if (unlikely(__pyx_t_22 >= __pyx_v_indptr.shape[0])) __pyx_t_20 = 0; - if (unlikely(__pyx_t_20 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_20); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_15 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_22 * __pyx_v_indptr.strides[0]) ))); - __pyx_t_20 = __pyx_v_idx; - __pyx_t_23 = -1; - if (__pyx_t_20 < 0) { - __pyx_t_20 += __pyx_v_indptr.shape[0]; - if (unlikely(__pyx_t_20 < 0)) __pyx_t_23 = 0; - } else if (unlikely(__pyx_t_20 >= __pyx_v_indptr.shape[0])) __pyx_t_23 = 0; - if (unlikely(__pyx_t_23 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_23); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - for (__pyx_t_23 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_20 * __pyx_v_indptr.strides[0]) ))); __pyx_t_23 < __pyx_t_15; __pyx_t_23+=1) { - __pyx_v_j = __pyx_t_23; - - /* "pyFAI/ext/_distortion.pyx":1064 + __pyx_t_20 = (__pyx_v_idx + 1); + __pyx_t_14 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_20 * __pyx_v_indptr.strides[0]) ))); + __pyx_t_21 = __pyx_v_idx; + for (__pyx_t_22 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indptr.data + __pyx_t_21 * __pyx_v_indptr.strides[0]) ))); __pyx_t_22 < __pyx_t_14; __pyx_t_22+=1) { + __pyx_v_j = __pyx_t_22; + + /* "pyFAI/ext/_distortion.pyx":1088 * val = lin[idx] / total * for j in range(indptr[idx], indptr[idx + 1]): * coef = data[j] # <<<<<<<<<<<<<< * if coef > 0: * lout[indices[j]] += val * coef */ - __pyx_t_24 = __pyx_v_j; - __pyx_t_25 = -1; - if (__pyx_t_24 < 0) { - __pyx_t_24 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_24 < 0)) __pyx_t_25 = 0; - } else if (unlikely(__pyx_t_24 >= __pyx_v_data.shape[0])) __pyx_t_25 = 0; - if (unlikely(__pyx_t_25 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_25); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_v_coef = (*((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_24 * __pyx_v_data.strides[0]) ))); + __pyx_t_23 = __pyx_v_j; + __pyx_v_coef = (*((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_23 * __pyx_v_data.strides[0]) ))); - /* "pyFAI/ext/_distortion.pyx":1065 + /* "pyFAI/ext/_distortion.pyx":1089 * for j in range(indptr[idx], indptr[idx + 1]): * coef = data[j] * if coef > 0: # <<<<<<<<<<<<<< * lout[indices[j]] += val * coef * return out, mask */ - __pyx_t_19 = ((__pyx_v_coef > 0.0) != 0); - if (__pyx_t_19) { + __pyx_t_18 = ((__pyx_v_coef > 0.0) != 0); + if (__pyx_t_18) { - /* "pyFAI/ext/_distortion.pyx":1066 + /* "pyFAI/ext/_distortion.pyx":1090 * coef = data[j] * if coef > 0: * lout[indices[j]] += val * coef # <<<<<<<<<<<<<< * return out, mask * */ - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_coef); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_coef); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = PyNumber_Multiply(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyNumber_Multiply(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_21 = __pyx_PyFloat_AsFloat(__pyx_t_9); if (unlikely((__pyx_t_21 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_24 = __pyx_PyFloat_AsFloat(__pyx_t_9); if (unlikely((__pyx_t_24 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_25 = __pyx_v_j; - __pyx_t_26 = -1; - if (__pyx_t_25 < 0) { - __pyx_t_25 += __pyx_v_indices.shape[0]; - if (unlikely(__pyx_t_25 < 0)) __pyx_t_26 = 0; - } else if (unlikely(__pyx_t_25 >= __pyx_v_indices.shape[0])) __pyx_t_26 = 0; - if (unlikely(__pyx_t_26 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_26); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_27 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indices.data + __pyx_t_25 * __pyx_v_indices.strides[0]) ))); - __pyx_t_26 = -1; - if (__pyx_t_27 < 0) { - __pyx_t_27 += __pyx_v_lout.shape[0]; - if (unlikely(__pyx_t_27 < 0)) __pyx_t_26 = 0; - } else if (unlikely(__pyx_t_27 >= __pyx_v_lout.shape[0])) __pyx_t_26 = 0; - if (unlikely(__pyx_t_26 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_26); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - *((float *) ( /* dim=0 */ (__pyx_v_lout.data + __pyx_t_27 * __pyx_v_lout.strides[0]) )) += __pyx_t_21; + __pyx_t_26 = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_indices.data + __pyx_t_25 * __pyx_v_indices.strides[0]) ))); + *((float *) ( /* dim=0 */ (__pyx_v_lout.data + __pyx_t_26 * __pyx_v_lout.strides[0]) )) += __pyx_t_24; goto __pyx_L11; } __pyx_L11:; @@ -21451,7 +21253,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE __pyx_L3_continue:; } - /* "pyFAI/ext/_distortion.pyx":1067 + /* "pyFAI/ext/_distortion.pyx":1091 * if coef > 0: * lout[indices[j]] += val * coef * return out, mask # <<<<<<<<<<<<<< @@ -21459,7 +21261,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE * ########################################################################### */ __Pyx_XDECREF(__pyx_r); - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_out); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_out); @@ -21471,12 +21273,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE __pyx_t_9 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":1031 - * - * + /* "pyFAI/ext/_distortion.pyx":1055 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_CSR(image, shape, LUT): # <<<<<<<<<<<<<< - * """ - * Take an image which has been corrected and transform it into it's raw (with loss of information) + * """Take an image which has been corrected and transform it into it's raw (with loss of information) + * */ /* function exit code */ @@ -21508,17 +21310,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_20uncorrect_CSR(CYTHON_UNUSE return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1082 +/* "pyFAI/ext/_distortion.pyx":1106 * * """ * def __init__(self, detector="detector", shape=None): # <<<<<<<<<<<<<< * """ - * @param detector: detector instance or detector name + * :param detector: detector instance or detector name */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion___init__[] = "\n @param detector: detector instance or detector name\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion___init__[] = "Distortion.__init__(self, detector='detector', shape=None)\n\n :param detector: detector instance or detector name\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -21562,7 +21364,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_1__init__(PyObj } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -21579,7 +21381,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_1__init__(PyObj } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.Distortion.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -21609,31 +21411,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "pyFAI/ext/_distortion.pyx":1086 - * @param detector: detector instance or detector name + /* "pyFAI/ext/_distortion.pyx":1110 + * :param detector: detector instance or detector name * """ * if isinstance(detector, six.string_types): # <<<<<<<<<<<<<< * self.detector = detector_factory(detector) * else: # we assume it is a Detector instance */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_six); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_six); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string_types); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string_types); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = PyObject_IsInstance(__pyx_v_detector, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_IsInstance(__pyx_v_detector, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { - /* "pyFAI/ext/_distortion.pyx":1087 + /* "pyFAI/ext/_distortion.pyx":1111 * """ * if isinstance(detector, six.string_types): * self.detector = detector_factory(detector) # <<<<<<<<<<<<<< * else: # we assume it is a Detector instance * self.detector = detector */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_detector_factory); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_detector_factory); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) { @@ -21646,111 +21448,111 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_detector); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_detector); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_detector); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_detector); __Pyx_GIVEREF(__pyx_v_detector); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_detector, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_detector, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L3; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":1089 + /* "pyFAI/ext/_distortion.pyx":1113 * self.detector = detector_factory(detector) * else: # we assume it is a Detector instance * self.detector = detector # <<<<<<<<<<<<<< * if shape: * self.shape = shape */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_detector, __pyx_v_detector) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_detector, __pyx_v_detector) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L3:; - /* "pyFAI/ext/_distortion.pyx":1090 + /* "pyFAI/ext/_distortion.pyx":1114 * else: # we assume it is a Detector instance * self.detector = detector * if shape: # <<<<<<<<<<<<<< * self.shape = shape * elif "max_shape" in dir(self.detector): */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_shape); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_shape); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_4) { - /* "pyFAI/ext/_distortion.pyx":1091 + /* "pyFAI/ext/_distortion.pyx":1115 * self.detector = detector * if shape: * self.shape = shape # <<<<<<<<<<<<<< * elif "max_shape" in dir(self.detector): * self.shape = self.detector.max_shape */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shape, __pyx_v_shape) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shape, __pyx_v_shape) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L4; } - /* "pyFAI/ext/_distortion.pyx":1092 + /* "pyFAI/ext/_distortion.pyx":1116 * if shape: * self.shape = shape * elif "max_shape" in dir(self.detector): # <<<<<<<<<<<<<< * self.shape = self.detector.max_shape * self.shape = tuple([int(i) for i in self.shape]) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_Dir(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_Dir(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (__Pyx_PySequence_Contains(__pyx_n_s_max_shape, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = (__Pyx_PySequence_Contains(__pyx_n_s_max_shape, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_4 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1093 + /* "pyFAI/ext/_distortion.pyx":1117 * self.shape = shape * elif "max_shape" in dir(self.detector): * self.shape = self.detector.max_shape # <<<<<<<<<<<<<< * self.shape = tuple([int(i) for i in self.shape]) * self._sem = threading.Semaphore() */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shape, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shape, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L4; } __pyx_L4:; - /* "pyFAI/ext/_distortion.pyx":1094 + /* "pyFAI/ext/_distortion.pyx":1118 * elif "max_shape" in dir(self.detector): * self.shape = self.detector.max_shape * self.shape = tuple([int(i) for i in self.shape]) # <<<<<<<<<<<<<< * self._sem = threading.Semaphore() * self.lut_size = None */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -21758,16 +21560,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -21776,7 +21578,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } @@ -21784,28 +21586,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyNumber_Int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shape, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_shape, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1095 + /* "pyFAI/ext/_distortion.pyx":1119 * self.shape = self.detector.max_shape * self.shape = tuple([int(i) for i in self.shape]) * self._sem = threading.Semaphore() # <<<<<<<<<<<<<< * self.lut_size = None * self.pos = None */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_threading); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_threading); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -21819,59 +21621,59 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON } } if (__pyx_t_2) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_sem, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_sem, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1096 + /* "pyFAI/ext/_distortion.pyx":1120 * self.shape = tuple([int(i) for i in self.shape]) * self._sem = threading.Semaphore() * self.lut_size = None # <<<<<<<<<<<<<< * self.pos = None * self.LUT = None */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lut_size, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lut_size, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1097 + /* "pyFAI/ext/_distortion.pyx":1121 * self._sem = threading.Semaphore() * self.lut_size = None * self.pos = None # <<<<<<<<<<<<<< * self.LUT = None * self.delta0 = self.delta1 = None # max size of an pixel on a regular grid ... */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pos, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pos, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1098 + /* "pyFAI/ext/_distortion.pyx":1122 * self.lut_size = None * self.pos = None * self.LUT = None # <<<<<<<<<<<<<< * self.delta0 = self.delta1 = None # max size of an pixel on a regular grid ... * */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_LUT, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_LUT, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1099 + /* "pyFAI/ext/_distortion.pyx":1123 * self.pos = None * self.LUT = None * self.delta0 = self.delta1 = None # max size of an pixel on a regular grid ... # <<<<<<<<<<<<<< * * def __repr__(self): */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta0, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta1, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta0, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta1, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1082 + /* "pyFAI/ext/_distortion.pyx":1106 * * """ * def __init__(self, detector="detector", shape=None): # <<<<<<<<<<<<<< * """ - * @param detector: detector instance or detector name + * :param detector: detector instance or detector name */ /* function exit code */ @@ -21891,7 +21693,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1101 +/* "pyFAI/ext/_distortion.pyx":1125 * self.delta0 = self.delta1 = None # max size of an pixel on a regular grid ... * * def __repr__(self): # <<<<<<<<<<<<<< @@ -21901,7 +21703,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion___init__(CYTHON /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_3__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_3__repr__ = {"__repr__", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_3__repr__, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_2__repr__[] = "Distortion.__repr__(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_3__repr__ = {"__repr__", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_3__repr__, METH_O, __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_2__repr__}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_3__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -21926,7 +21729,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_2__repr__(CYTHO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); - /* "pyFAI/ext/_distortion.pyx":1102 + /* "pyFAI/ext/_distortion.pyx":1126 * * def __repr__(self): * return os.linesep.join(["Distortion correction for detector:", # <<<<<<<<<<<<<< @@ -21934,25 +21737,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_2__repr__(CYTHO * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linesep); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linesep); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/_distortion.pyx":1103 + /* "pyFAI/ext/_distortion.pyx":1127 * def __repr__(self): * return os.linesep.join(["Distortion correction for detector:", * self.detector.__repr__()]) # <<<<<<<<<<<<<< * * def calc_pos(self): */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_repr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_repr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -21966,22 +21769,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_2__repr__(CYTHO } } if (__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":1102 + /* "pyFAI/ext/_distortion.pyx":1126 * * def __repr__(self): * return os.linesep.join(["Distortion correction for detector:", # <<<<<<<<<<<<<< * self.detector.__repr__()]) * */ - __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_kp_s_Distortion_correction_for_detect); PyList_SET_ITEM(__pyx_t_5, 0, __pyx_kp_s_Distortion_correction_for_detect); @@ -22000,17 +21803,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_2__repr__(CYTHO } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } @@ -22019,7 +21822,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_2__repr__(CYTHO __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":1101 + /* "pyFAI/ext/_distortion.pyx":1125 * self.delta0 = self.delta1 = None # max size of an pixel on a regular grid ... * * def __repr__(self): # <<<<<<<<<<<<<< @@ -22042,7 +21845,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_2__repr__(CYTHO return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1105 +/* "pyFAI/ext/_distortion.pyx":1129 * self.detector.__repr__()]) * * def calc_pos(self): # <<<<<<<<<<<<<< @@ -22052,7 +21855,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_2__repr__(CYTHO /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos = {"calc_pos", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos[] = "Distortion.calc_pos(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos = {"calc_pos", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos, METH_O, __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -22094,21 +21898,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_pos", 0); - /* "pyFAI/ext/_distortion.pyx":1106 + /* "pyFAI/ext/_distortion.pyx":1130 * * def calc_pos(self): * if self.pos is None: # <<<<<<<<<<<<<< * with self._sem: * if self.pos is None: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1107 + /* "pyFAI/ext/_distortion.pyx":1131 * def calc_pos(self): * if self.pos is None: * with self._sem: # <<<<<<<<<<<<<< @@ -22116,11 +21920,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO * pos_corners = numpy.empty((self.shape[0] + 1, self.shape[1] + 1, 2), dtype=numpy.float64) */ /*with:*/ { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_sem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_sem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { @@ -22133,10 +21937,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (__pyx_t_7) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L4_error;} } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -22150,49 +21954,49 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_XGOTREF(__pyx_t_10); /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":1108 + /* "pyFAI/ext/_distortion.pyx":1132 * if self.pos is None: * with self._sem: * if self.pos is None: # <<<<<<<<<<<<<< * pos_corners = numpy.empty((self.shape[0] + 1, self.shape[1] + 1, 2), dtype=numpy.float64) * d1 = expand2d(numpy.arange(self.shape[0] + 1.0), self.shape[1] + 1, False) - 0.5 */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { - /* "pyFAI/ext/_distortion.pyx":1109 + /* "pyFAI/ext/_distortion.pyx":1133 * with self._sem: * if self.pos is None: * pos_corners = numpy.empty((self.shape[0] + 1, self.shape[1] + 1, 2), dtype=numpy.float64) # <<<<<<<<<<<<<< * d1 = expand2d(numpy.arange(self.shape[0] + 1.0), self.shape[1] + 1, False) - 0.5 * d2 = expand2d(numpy.arange(self.shape[1] + 1.0), self.shape[0] + 1, True) - 0.5 */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Add(__pyx_t_7, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PyNumber_Add(__pyx_t_7, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -22203,21 +22007,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_GIVEREF(__pyx_int_2); __pyx_t_1 = 0; __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -22225,26 +22029,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __pyx_v_pos_corners = __pyx_t_11; __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":1110 + /* "pyFAI/ext/_distortion.pyx":1134 * if self.pos is None: * pos_corners = numpy.empty((self.shape[0] + 1, self.shape[1] + 1, 2), dtype=numpy.float64) * d1 = expand2d(numpy.arange(self.shape[0] + 1.0), self.shape[1] + 1, False) - 0.5 # <<<<<<<<<<<<<< * d2 = expand2d(numpy.arange(self.shape[1] + 1.0), self.shape[0] + 1, True) - 0.5 * p = self.detector.calc_cartesian_positions(d1, d2) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_expand2d); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_expand2d); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Add(__pyx_t_12, __pyx_float_1_0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = PyNumber_Add(__pyx_t_12, __pyx_float_1_0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; @@ -22258,27 +22062,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (!__pyx_t_12) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL; PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyNumber_Add(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; @@ -22293,7 +22097,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __pyx_t_14 = 1; } } - __pyx_t_5 = PyTuple_New(3+__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = PyTuple_New(3+__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_13) { PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL; @@ -22307,36 +22111,36 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_GIVEREF(Py_False); __pyx_t_6 = 0; __pyx_t_1 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyNumber_Subtract(__pyx_t_11, __pyx_float_0_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = PyNumber_Subtract(__pyx_t_11, __pyx_float_0_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_d1 = __pyx_t_7; __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1111 + /* "pyFAI/ext/_distortion.pyx":1135 * pos_corners = numpy.empty((self.shape[0] + 1, self.shape[1] + 1, 2), dtype=numpy.float64) * d1 = expand2d(numpy.arange(self.shape[0] + 1.0), self.shape[1] + 1, False) - 0.5 * d2 = expand2d(numpy.arange(self.shape[1] + 1.0), self.shape[0] + 1, True) - 0.5 # <<<<<<<<<<<<<< * p = self.detector.calc_cartesian_positions(d1, d2) * if p[-1] is not None: */ - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_expand2d); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_expand2d); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_t_13, __pyx_float_1_0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyNumber_Add(__pyx_t_13, __pyx_float_1_0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; @@ -22350,27 +22154,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (!__pyx_t_13) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL; PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Add(__pyx_t_12, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PyNumber_Add(__pyx_t_12, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; @@ -22385,7 +22189,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __pyx_t_14 = 1; } } - __pyx_t_1 = PyTuple_New(3+__pyx_t_14); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyTuple_New(3+__pyx_t_14); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_12) { PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL; @@ -22399,26 +22203,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_GIVEREF(Py_True); __pyx_t_5 = 0; __pyx_t_6 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyNumber_Subtract(__pyx_t_7, __pyx_float_0_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = PyNumber_Subtract(__pyx_t_7, __pyx_float_0_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_d2 = __pyx_t_11; __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":1112 + /* "pyFAI/ext/_distortion.pyx":1136 * d1 = expand2d(numpy.arange(self.shape[0] + 1.0), self.shape[1] + 1, False) - 0.5 * d2 = expand2d(numpy.arange(self.shape[1] + 1.0), self.shape[0] + 1, True) - 0.5 * p = self.detector.calc_cartesian_positions(d1, d2) # <<<<<<<<<<<<<< * if p[-1] is not None: * logger.warning("makes little sense to correct for distortion non-flat detectors: %s", */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_calc_cartesian_positions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_calc_cartesian_positions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; @@ -22433,7 +22237,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __pyx_t_14 = 1; } } - __pyx_t_6 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_7) { PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; @@ -22444,48 +22248,48 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_INCREF(__pyx_v_d2); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_14, __pyx_v_d2); __Pyx_GIVEREF(__pyx_v_d2); - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_p = __pyx_t_11; __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":1113 + /* "pyFAI/ext/_distortion.pyx":1137 * d2 = expand2d(numpy.arange(self.shape[1] + 1.0), self.shape[0] + 1, True) - 0.5 * p = self.detector.calc_cartesian_positions(d1, d2) * if p[-1] is not None: # <<<<<<<<<<<<<< * logger.warning("makes little sense to correct for distortion non-flat detectors: %s", * self.detector) */ - __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_p, -1, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_p, -1, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_11); __pyx_t_2 = (__pyx_t_11 != Py_None); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1114 + /* "pyFAI/ext/_distortion.pyx":1138 * p = self.detector.calc_cartesian_positions(d1, d2) * if p[-1] is not None: * logger.warning("makes little sense to correct for distortion non-flat detectors: %s", # <<<<<<<<<<<<<< * self.detector) * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":1115 + /* "pyFAI/ext/_distortion.pyx":1139 * if p[-1] is not None: * logger.warning("makes little sense to correct for distortion non-flat detectors: %s", * self.detector) # <<<<<<<<<<<<<< * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] * pos_corners[:, :, 0] /= self.detector.pixel1 */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; __pyx_t_14 = 0; @@ -22499,7 +22303,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __pyx_t_14 = 1; } } - __pyx_t_5 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_7) { PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; @@ -22510,7 +22314,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_14, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -22519,14 +22323,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } __pyx_L17:; - /* "pyFAI/ext/_distortion.pyx":1116 + /* "pyFAI/ext/_distortion.pyx":1140 * logger.warning("makes little sense to correct for distortion non-flat detectors: %s", * self.detector) * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] # <<<<<<<<<<<<<< * pos_corners[:, :, 0] /= self.detector.pixel1 * pos_corners[:, :, 1] /= self.detector.pixel2 */ - __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_v_p, 0, 2, NULL, NULL, &__pyx_slice__38, 0, 1, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_v_p, 0, 2, NULL, NULL, &__pyx_slice__38, 0, 1, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); if ((likely(PyTuple_CheckExact(__pyx_t_11))) || (PyList_CheckExact(__pyx_t_11))) { PyObject* sequence = __pyx_t_11; @@ -22538,7 +22342,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -22551,15 +22355,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else { Py_ssize_t index = -1; - __pyx_t_1 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_15 = Py_TYPE(__pyx_t_1)->tp_iternext; @@ -22567,7 +22371,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_5 = __pyx_t_15(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L18_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __pyx_t_15 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L19_unpacking_done; @@ -22575,15 +22379,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __pyx_L19_unpacking_done:; } - if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_tuple__41, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_tuple__41, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_tuple__44, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_tuple__44, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":1117 + /* "pyFAI/ext/_distortion.pyx":1141 * self.detector) * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] * pos_corners[:, :, 0] /= self.detector.pixel1 # <<<<<<<<<<<<<< @@ -22592,22 +22396,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO */ __Pyx_INCREF(__pyx_tuple__47); __pyx_t_16 = __pyx_tuple__47; - __pyx_t_11 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_t_16); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_11 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_t_16); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_11); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pixel1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_pixel1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyNumber_InPlaceDivide(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_PyNumber_InPlaceDivide(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_t_16, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_t_16, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - /* "pyFAI/ext/_distortion.pyx":1118 + /* "pyFAI/ext/_distortion.pyx":1142 * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] * pos_corners[:, :, 0] /= self.detector.pixel1 * pos_corners[:, :, 1] /= self.detector.pixel2 # <<<<<<<<<<<<<< @@ -22616,44 +22420,44 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO */ __Pyx_INCREF(__pyx_tuple__50); __pyx_t_16 = __pyx_tuple__50; - __pyx_t_5 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_t_16); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_5 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_t_16); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_detector); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_pixel2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_pixel2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyNumber_InPlaceDivide(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyNumber_InPlaceDivide(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_t_16, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos_corners, __pyx_t_16, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - /* "pyFAI/ext/_distortion.pyx":1119 + /* "pyFAI/ext/_distortion.pyx":1143 * pos_corners[:, :, 0] /= self.detector.pixel1 * pos_corners[:, :, 1] /= self.detector.pixel2 * pos = numpy.empty((self.shape[0], self.shape[1], 4, 2), dtype=numpy.float32) # <<<<<<<<<<<<<< * pos[:, :, 0, :] = pos_corners[:-1, :-1] * pos[:, :, 1, :] = pos_corners[:-1, 1:] */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); @@ -22667,21 +22471,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_GIVEREF(__pyx_int_2); __pyx_t_5 = 0; __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -22689,76 +22493,76 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __pyx_v_pos = __pyx_t_7; __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1120 + /* "pyFAI/ext/_distortion.pyx":1144 * pos_corners[:, :, 1] /= self.detector.pixel2 * pos = numpy.empty((self.shape[0], self.shape[1], 4, 2), dtype=numpy.float32) * pos[:, :, 0, :] = pos_corners[:-1, :-1] # <<<<<<<<<<<<<< * pos[:, :, 1, :] = pos_corners[:-1, 1:] * pos[:, :, 2, :] = pos_corners[1:, 1:] */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__53); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__53); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_7); - if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__57, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__57, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1121 + /* "pyFAI/ext/_distortion.pyx":1145 * pos = numpy.empty((self.shape[0], self.shape[1], 4, 2), dtype=numpy.float32) * pos[:, :, 0, :] = pos_corners[:-1, :-1] * pos[:, :, 1, :] = pos_corners[:-1, 1:] # <<<<<<<<<<<<<< * pos[:, :, 2, :] = pos_corners[1:, 1:] * pos[:, :, 3, :] = pos_corners[1:, :-1] */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__60); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__60); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_7); - if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__64, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__64, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1122 + /* "pyFAI/ext/_distortion.pyx":1146 * pos[:, :, 0, :] = pos_corners[:-1, :-1] * pos[:, :, 1, :] = pos_corners[:-1, 1:] * pos[:, :, 2, :] = pos_corners[1:, 1:] # <<<<<<<<<<<<<< * pos[:, :, 3, :] = pos_corners[1:, :-1] * self.pos = pos */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__67); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__67); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_7); - if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__71, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__71, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1123 + /* "pyFAI/ext/_distortion.pyx":1147 * pos[:, :, 1, :] = pos_corners[:-1, 1:] * pos[:, :, 2, :] = pos_corners[1:, 1:] * pos[:, :, 3, :] = pos_corners[1:, :-1] # <<<<<<<<<<<<<< * self.pos = pos * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) */ - __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__74); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_7 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__74); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_7); - if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__78, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (unlikely(PyObject_SetItem(__pyx_v_pos, __pyx_tuple__78, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1124 + /* "pyFAI/ext/_distortion.pyx":1148 * pos[:, :, 2, :] = pos_corners[1:, 1:] * pos[:, :, 3, :] = pos_corners[1:, :-1] * self.pos = pos # <<<<<<<<<<<<<< * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) * self.delta1 = int((numpy.ceil(pos_corners[:, 1:, 1]) - numpy.floor(pos_corners[:, :-1, 1])).max()) */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pos, __pyx_v_pos) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_pos, __pyx_v_pos) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L8_error;} - /* "pyFAI/ext/_distortion.pyx":1125 + /* "pyFAI/ext/_distortion.pyx":1149 * pos[:, :, 3, :] = pos_corners[1:, :-1] * self.pos = pos * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) # <<<<<<<<<<<<<< * self.delta1 = int((numpy.ceil(pos_corners[:, 1:, 1]) - numpy.floor(pos_corners[:, :-1, 1])).max()) * return self.pos */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__81); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_1 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__81); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) { @@ -22771,27 +22575,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (!__pyx_t_5) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_floor); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_floor); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__84); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_12 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__84); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_12); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) { @@ -22804,26 +22608,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (!__pyx_t_5) { - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_11); } else { - __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Subtract(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyNumber_Subtract(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; @@ -22837,32 +22641,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (__pyx_t_1) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta0, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta0, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - /* "pyFAI/ext/_distortion.pyx":1126 + /* "pyFAI/ext/_distortion.pyx":1150 * self.pos = pos * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) * self.delta1 = int((numpy.ceil(pos_corners[:, 1:, 1]) - numpy.floor(pos_corners[:, :-1, 1])).max()) # <<<<<<<<<<<<<< * return self.pos * */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__87); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_1 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__87); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -22875,27 +22679,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (!__pyx_t_13) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_7); } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL; PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_floor); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_floor); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__90); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; + __pyx_t_12 = PyObject_GetItem(__pyx_v_pos_corners, __pyx_tuple__90); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;}; __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) { @@ -22908,26 +22712,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (!__pyx_t_13) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = NULL; PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Subtract(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_1 = PyNumber_Subtract(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; @@ -22941,17 +22745,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } } if (__pyx_t_1) { - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} } __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + __pyx_t_6 = PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta1, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L8_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_delta1, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L8_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L16; } @@ -22962,6 +22766,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L15_try_end; __pyx_L8_error:; + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -22969,9 +22774,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; - /* "pyFAI/ext/_distortion.pyx":1107 + /* "pyFAI/ext/_distortion.pyx":1131 * def calc_pos(self): * if self.pos is None: * with self._sem: # <<<<<<<<<<<<<< @@ -22980,20 +22784,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO */ /*except:*/ { __Pyx_AddTraceback("pyFAI.ext._distortion.Distortion.calc_pos", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_11, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_11, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_11); __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = PyTuple_Pack(3, __pyx_t_6, __pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} + __pyx_t_7 = PyTuple_Pack(3, __pyx_t_6, __pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} + if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} __Pyx_GOTREF(__pyx_t_17); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - if (__pyx_t_3 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} + if (__pyx_t_3 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_6); @@ -23001,7 +22805,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO __Pyx_XGIVEREF(__pyx_t_1); __Pyx_ErrRestore(__pyx_t_6, __pyx_t_11, __pyx_t_1); __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;} } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -23027,7 +22831,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO if (__pyx_t_4) { __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__91, NULL); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } @@ -23045,7 +22849,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO } __pyx_L3:; - /* "pyFAI/ext/_distortion.pyx":1127 + /* "pyFAI/ext/_distortion.pyx":1151 * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) * self.delta1 = int((numpy.ceil(pos_corners[:, 1:, 1]) - numpy.floor(pos_corners[:, :-1, 1])).max()) * return self.pos # <<<<<<<<<<<<<< @@ -23053,13 +22857,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":1105 + /* "pyFAI/ext/_distortion.pyx":1129 * self.detector.__repr__()]) * * def calc_pos(self): # <<<<<<<<<<<<<< @@ -23090,7 +22894,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1131 +/* "pyFAI/ext/_distortion.pyx":1155 * @cython.wraparound(False) * @cython.boundscheck(False) * def calc_LUT_size(self): # <<<<<<<<<<<<<< @@ -23100,7 +22904,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_4calc_pos(CYTHO /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_7calc_LUT_size(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size[] = "\n Considering the \"half-CCD\" spline from ID11 which describes a (1025,2048) detector,\n the physical location of pixels should go from:\n [-17.48634 : 1027.0543, -22.768829 : 2028.3689]\n We chose to discard pixels falling outside the [0:1025,0:2048] range with a lose of intensity\n\n We keep self.pos: pos_corners will not be compatible with systems showing non adjacent pixels (like some xpads)\n\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size[] = "Distortion.calc_LUT_size(self)\n\n Considering the \"half-CCD\" spline from ID11 which describes a (1025,2048) detector,\n the physical location of pixels should go from:\n [-17.48634 : 1027.0543, -22.768829 : 2028.3689]\n We chose to discard pixels falling outside the [0:1025,0:2048] range with a lose of intensity\n\n We keep self.pos: pos_corners will not be compatible with systems showing non adjacent pixels (like some xpads)\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_7calc_LUT_size = {"calc_LUT_size", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_7calc_LUT_size, METH_O, __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_7calc_LUT_size(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -23184,28 +22988,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __pyx_pybuffernd_lut_size.data = NULL; __pyx_pybuffernd_lut_size.rcbuffer = &__pyx_pybuffer_lut_size; - /* "pyFAI/ext/_distortion.pyx":1145 + /* "pyFAI/ext/_distortion.pyx":1169 * cdef int[:, :] pos0min, pos1min, pos0max, pos1max * cdef numpy.ndarray[numpy.int32_t, ndim = 2] lut_size * if self.pos is None: # <<<<<<<<<<<<<< * pos = self.calc_pos() * else: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1146 + /* "pyFAI/ext/_distortion.pyx":1170 * cdef numpy.ndarray[numpy.int32_t, ndim = 2] lut_size * if self.pos is None: * pos = self.calc_pos() # <<<<<<<<<<<<<< * else: * pos = self.pos */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_pos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_pos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -23218,14 +23022,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; @@ -23241,7 +23045,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_pos.diminfo[1].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_pos.diminfo[1].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_pos.diminfo[2].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_pos.diminfo[2].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_pos.diminfo[3].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_pos.diminfo[3].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[3]; - if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_pos = ((PyArrayObject *)__pyx_t_1); @@ -23250,16 +23054,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":1148 + /* "pyFAI/ext/_distortion.pyx":1172 * pos = self.calc_pos() * else: * pos = self.pos # <<<<<<<<<<<<<< * if self.lut_size is None: * with self._sem: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; @@ -23275,7 +23079,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_pos.diminfo[1].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_pos.diminfo[1].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_pos.diminfo[2].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_pos.diminfo[2].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_pos.diminfo[3].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_pos.diminfo[3].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[3]; - if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_pos = ((PyArrayObject *)__pyx_t_1); @@ -23283,21 +23087,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } __pyx_L3:; - /* "pyFAI/ext/_distortion.pyx":1149 + /* "pyFAI/ext/_distortion.pyx":1173 * else: * pos = self.pos * if self.lut_size is None: # <<<<<<<<<<<<<< * with self._sem: * if self.lut_size is None: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = (__pyx_t_3 != 0); if (__pyx_t_2) { - /* "pyFAI/ext/_distortion.pyx":1150 + /* "pyFAI/ext/_distortion.pyx":1174 * pos = self.pos * if self.lut_size is None: * with self._sem: # <<<<<<<<<<<<<< @@ -23305,11 +23109,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( * shape0, shape1 = self.shape */ /*with:*/ { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_sem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_sem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L5_error;} + __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L5_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { @@ -23322,10 +23126,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (__pyx_t_11) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L5_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L5_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L5_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L5_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -23339,28 +23143,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __Pyx_XGOTREF(__pyx_t_12); /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":1151 + /* "pyFAI/ext/_distortion.pyx":1175 * if self.lut_size is None: * with self._sem: * if self.lut_size is None: # <<<<<<<<<<<<<< * shape0, shape1 = self.shape * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1152 + /* "pyFAI/ext/_distortion.pyx":1176 * with self._sem: * if self.lut_size is None: * shape0, shape1 = self.shape # <<<<<<<<<<<<<< * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; @@ -23372,7 +23176,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -23385,15 +23189,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; - __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; @@ -23401,7 +23205,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_13(__pyx_t_11); if (unlikely(!__pyx_t_5)) goto __pyx_L18_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L19_unpacking_done; @@ -23409,37 +23213,37 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __pyx_L19_unpacking_done:; } - __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_shape0 = __pyx_t_7; __pyx_v_shape1 = __pyx_t_14; - /* "pyFAI/ext/_distortion.pyx":1153 + /* "pyFAI/ext/_distortion.pyx":1177 * if self.lut_size is None: * shape0, shape1 = self.shape * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) # <<<<<<<<<<<<<< * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) */ - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_floor); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_floor); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__95); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_11 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__95); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_11); - __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_min); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_min); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); - if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} - __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -23454,27 +23258,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_11) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_17); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_17); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL; PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -23488,27 +23292,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_t_16); __Pyx_GIVEREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_17, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_17, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_clip); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_clip); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_17 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_17 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; @@ -23523,7 +23327,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __pyx_t_18 = 1; } } - __pyx_t_16 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_5) { PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; @@ -23534,38 +23338,38 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_18, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_16, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_16, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_19 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_t_1); - if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_pos0min = __pyx_t_19; __pyx_t_19.memview = NULL; __pyx_t_19.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1154 + /* "pyFAI/ext/_distortion.pyx":1178 * shape0, shape1 = self.shape * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) # <<<<<<<<<<<<<< * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) */ - __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_floor); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_floor); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__99); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_17 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__99); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_17); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_min); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_min); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyDict_New(); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = PyDict_New(); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); - if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_17); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_17); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; @@ -23580,27 +23384,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_17) { - __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_16); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = NULL; PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_astype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_astype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = NULL; @@ -23614,27 +23418,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_16) { - __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_15); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_16); __Pyx_GIVEREF(__pyx_t_16); __pyx_t_16 = NULL; PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_clip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_clip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); - __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_15, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_15, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; @@ -23649,7 +23453,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __pyx_t_18 = 1; } } - __pyx_t_4 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_15) { PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_15); __pyx_t_15 = NULL; @@ -23660,38 +23464,38 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_18, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_19 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_t_1); - if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_pos1min = __pyx_t_19; __pyx_t_19.memview = NULL; __pyx_t_19.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1155 + /* "pyFAI/ext/_distortion.pyx":1179 * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) # <<<<<<<<<<<<<< * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) */ - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ceil); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ceil); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__103); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_11 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__103); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_11); - __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_max); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_max); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); - if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} - __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_empty_tuple, __pyx_t_11); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -23706,27 +23510,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_11) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_17); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_17); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL; PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -23740,30 +23544,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_t_16); __Pyx_GIVEREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_17, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_17, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_clip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_clip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); - __pyx_t_17 = __Pyx_GetItemInt(__pyx_t_15, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_17 = __Pyx_GetItemInt(__pyx_t_15, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; @@ -23778,7 +23582,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __pyx_t_18 = 1; } } - __pyx_t_16 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_15) { PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_15); __pyx_t_15 = NULL; @@ -23789,38 +23593,38 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_18, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_16, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_16, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_19 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_t_1); - if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_pos0max = __pyx_t_19; __pyx_t_19.memview = NULL; __pyx_t_19.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1156 + /* "pyFAI/ext/_distortion.pyx":1180 * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) # <<<<<<<<<<<<<< * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) * with nogil: */ - __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_ceil); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_ceil); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__107); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_17 = PyObject_GetItem(((PyObject *)__pyx_v_pos), __pyx_tuple__107); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_17); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyDict_New(); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_17 = PyDict_New(); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_17); - if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_17); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (PyDict_SetItem(__pyx_t_17, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_17); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; @@ -23835,27 +23639,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_17) { - __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_11); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_11); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_16); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = NULL; PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_4, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_4, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_astype); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_astype); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_16); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = NULL; @@ -23869,30 +23673,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (!__pyx_t_16) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_16); __Pyx_GIVEREF(__pyx_t_16); __pyx_t_16 = NULL; PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_clip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_clip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); - __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_15, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; + __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_15, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;}; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; @@ -23907,7 +23711,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __pyx_t_18 = 1; } } - __pyx_t_4 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = PyTuple_New(2+__pyx_t_18); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_15) { PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_15); __pyx_t_15 = NULL; @@ -23918,51 +23722,51 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_18, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_19 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_t_1); - if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_pos1max = __pyx_t_19; __pyx_t_19.memview = NULL; __pyx_t_19.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1157 + /* "pyFAI/ext/_distortion.pyx":1181 * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) # <<<<<<<<<<<<<< * with nogil: * for i in range(shape0): */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_int32); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_int32); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_15) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_15, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (!(likely(((__pyx_t_15) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_15, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __pyx_t_20 = ((PyArrayObject *)__pyx_t_15); { __Pyx_BufFmt_StackElem __pyx_stack[1]; @@ -23978,13 +23782,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } __pyx_pybuffernd_lut_size.diminfo[0].strides = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lut_size.diminfo[0].shape = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_lut_size.diminfo[1].strides = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_lut_size.diminfo[1].shape = __pyx_pybuffernd_lut_size.rcbuffer->pybuffer.shape[1]; - if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L9_error;} } __pyx_t_20 = 0; __pyx_v_lut_size = ((PyArrayObject *)__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":1158 + /* "pyFAI/ext/_distortion.pyx":1182 * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) * with nogil: # <<<<<<<<<<<<<< @@ -23998,7 +23802,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":1159 + /* "pyFAI/ext/_distortion.pyx":1183 * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) * with nogil: * for i in range(shape0): # <<<<<<<<<<<<<< @@ -24009,7 +23813,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_14; __pyx_t_7+=1) { __pyx_v_i = __pyx_t_7; - /* "pyFAI/ext/_distortion.pyx":1160 + /* "pyFAI/ext/_distortion.pyx":1184 * with nogil: * for i in range(shape0): * for j in range(shape1): # <<<<<<<<<<<<<< @@ -24020,7 +23824,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( for (__pyx_t_25 = 0; __pyx_t_25 < __pyx_t_24; __pyx_t_25+=1) { __pyx_v_j = __pyx_t_25; - /* "pyFAI/ext/_distortion.pyx":1161 + /* "pyFAI/ext/_distortion.pyx":1185 * for i in range(shape0): * for j in range(shape1): * for k in range(pos0min[i, j], pos0max[i, j]): # <<<<<<<<<<<<<< @@ -24035,7 +23839,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( for (__pyx_t_31 = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos0min.data + __pyx_t_29 * __pyx_v_pos0min.strides[0]) ) + __pyx_t_30 * __pyx_v_pos0min.strides[1]) ))); __pyx_t_31 < __pyx_t_28; __pyx_t_31+=1) { __pyx_v_k = __pyx_t_31; - /* "pyFAI/ext/_distortion.pyx":1162 + /* "pyFAI/ext/_distortion.pyx":1186 * for j in range(shape1): * for k in range(pos0min[i, j], pos0max[i, j]): * for l in range(pos1min[i, j], pos1max[i, j]): # <<<<<<<<<<<<<< @@ -24050,7 +23854,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( for (__pyx_t_37 = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos1min.data + __pyx_t_35 * __pyx_v_pos1min.strides[0]) ) + __pyx_t_36 * __pyx_v_pos1min.strides[1]) ))); __pyx_t_37 < __pyx_t_34; __pyx_t_37+=1) { __pyx_v_l = __pyx_t_37; - /* "pyFAI/ext/_distortion.pyx":1163 + /* "pyFAI/ext/_distortion.pyx":1187 * for k in range(pos0min[i, j], pos0max[i, j]): * for l in range(pos1min[i, j], pos1max[i, j]): * lut_size[k, l] += 1 # <<<<<<<<<<<<<< @@ -24066,7 +23870,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } - /* "pyFAI/ext/_distortion.pyx":1158 + /* "pyFAI/ext/_distortion.pyx":1182 * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) * with nogil: # <<<<<<<<<<<<<< @@ -24084,14 +23888,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } - /* "pyFAI/ext/_distortion.pyx":1164 + /* "pyFAI/ext/_distortion.pyx":1188 * for l in range(pos1min[i, j], pos1max[i, j]): * lut_size[k, l] += 1 * self.lut_size = lut_size.max() # <<<<<<<<<<<<<< * return lut_size * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_lut_size), __pyx_n_s_max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_lut_size), __pyx_n_s_max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -24104,17 +23908,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } } if (__pyx_t_4) { - __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_15 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + __pyx_t_15 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L9_error;} } __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lut_size, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L9_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lut_size, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L9_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":1165 + /* "pyFAI/ext/_distortion.pyx":1189 * lut_size[k, l] += 1 * self.lut_size = lut_size.max() * return lut_size # <<<<<<<<<<<<<< @@ -24141,7 +23945,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_19, 1); - /* "pyFAI/ext/_distortion.pyx":1150 + /* "pyFAI/ext/_distortion.pyx":1174 * pos = self.pos * if self.lut_size is None: * with self._sem: # <<<<<<<<<<<<<< @@ -24150,20 +23954,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( */ /*except:*/ { __Pyx_AddTraceback("pyFAI.ext._distortion.Distortion.calc_LUT_size", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_1, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} + if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_1, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_Pack(3, __pyx_t_15, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} + __pyx_t_5 = PyTuple_Pack(3, __pyx_t_15, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} + if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} __Pyx_GOTREF(__pyx_t_23); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_23); __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; - if (__pyx_t_3 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} + if (__pyx_t_3 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_15); @@ -24171,7 +23975,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestore(__pyx_t_15, __pyx_t_1, __pyx_t_4); __pyx_t_15 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;} } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -24203,7 +24007,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( if (__pyx_t_8) { __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__108, NULL); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } @@ -24215,7 +24019,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( if (__pyx_t_8) { __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__109, NULL); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } @@ -24235,7 +24039,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( } __pyx_L4:; - /* "pyFAI/ext/_distortion.pyx":1131 + /* "pyFAI/ext/_distortion.pyx":1155 * @cython.wraparound(False) * @cython.boundscheck(False) * def calc_LUT_size(self): # <<<<<<<<<<<<<< @@ -24278,7 +24082,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1170 +/* "pyFAI/ext/_distortion.pyx":1194 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_LUT(self): # <<<<<<<<<<<<<< @@ -24288,7 +24092,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_6calc_LUT_size( /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT = {"calc_LUT", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT[] = "Distortion.calc_LUT(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT = {"calc_LUT", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT, METH_O, __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -24441,7 +24246,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __pyx_pybuffernd_outMax.data = NULL; __pyx_pybuffernd_outMax.rcbuffer = &__pyx_pybuffer_outMax; - /* "pyFAI/ext/_distortion.pyx":1174 + /* "pyFAI/ext/_distortion.pyx":1198 * int i, j, ms, ml, ns, nl, shape0, shape1, delta0, delta1, buffer_size, i0, i1, size * int offset0, offset1, box_size0, box_size1 * numpy.int32_t k, idx = 0 # <<<<<<<<<<<<<< @@ -24450,46 +24255,46 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO */ __pyx_v_idx = 0; - /* "pyFAI/ext/_distortion.pyx":1178 + /* "pyFAI/ext/_distortion.pyx":1202 * float[:, :, :, :] pos * numpy.ndarray[lut_point, ndim = 3] lut * numpy.ndarray[numpy.int32_t, ndim = 2] outMax = numpy.zeros(self.shape, dtype=numpy.int32) # <<<<<<<<<<<<<< * float[:, ::1] buffer * shape0, shape1 = self.shape */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_outMax.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_outMax = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_outMax.diminfo[0].strides = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_outMax.diminfo[0].shape = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_outMax.diminfo[1].strides = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_outMax.diminfo[1].shape = __pyx_pybuffernd_outMax.rcbuffer->pybuffer.shape[1]; } } @@ -24497,14 +24302,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __pyx_v_outMax = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":1180 + /* "pyFAI/ext/_distortion.pyx":1204 * numpy.ndarray[numpy.int32_t, ndim = 2] outMax = numpy.zeros(self.shape, dtype=numpy.int32) * float[:, ::1] buffer * shape0, shape1 = self.shape # <<<<<<<<<<<<<< * * if self.lut_size is None: */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; @@ -24516,7 +24321,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -24529,15 +24334,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); #else - __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; - __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; @@ -24545,7 +24350,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_2), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_2), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L4_unpacking_done; @@ -24553,38 +24358,38 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } - __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_shape0 = __pyx_t_8; __pyx_v_shape1 = __pyx_t_9; - /* "pyFAI/ext/_distortion.pyx":1182 + /* "pyFAI/ext/_distortion.pyx":1206 * shape0, shape1 = self.shape * * if self.lut_size is None: # <<<<<<<<<<<<<< * self.calc_LUT_size() * if self.LUT is None: */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = (__pyx_t_5 == Py_None); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1183 + /* "pyFAI/ext/_distortion.pyx":1207 * * if self.lut_size is None: * self.calc_LUT_size() # <<<<<<<<<<<<<< * if self.LUT is None: * with self._sem: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_LUT_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_LUT_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -24597,10 +24402,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO } } if (__pyx_t_1) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -24609,21 +24414,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO } __pyx_L5:; - /* "pyFAI/ext/_distortion.pyx":1184 + /* "pyFAI/ext/_distortion.pyx":1208 * if self.lut_size is None: * self.calc_LUT_size() * if self.LUT is None: # <<<<<<<<<<<<<< * with self._sem: * if self.LUT is None: */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = (__pyx_t_5 == Py_None); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_10 = (__pyx_t_11 != 0); if (__pyx_t_10) { - /* "pyFAI/ext/_distortion.pyx":1185 + /* "pyFAI/ext/_distortion.pyx":1209 * self.calc_LUT_size() * if self.LUT is None: * with self._sem: # <<<<<<<<<<<<<< @@ -24631,11 +24436,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO * pos = self.pos */ /*with:*/ { - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_sem); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_sem); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_t_5, __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -24648,10 +24453,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO } } if (__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -24665,63 +24470,63 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __Pyx_XGOTREF(__pyx_t_15); /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":1186 + /* "pyFAI/ext/_distortion.pyx":1210 * if self.LUT is None: * with self._sem: * if self.LUT is None: # <<<<<<<<<<<<<< * pos = self.pos * lut = numpy.recarray(shape=(self.shape[0], self.shape[1], self.lut_size), dtype=[("idx", numpy.int32), ("coef", numpy.float32)]) */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = (__pyx_t_5 == Py_None); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1187 + /* "pyFAI/ext/_distortion.pyx":1211 * with self._sem: * if self.LUT is None: * pos = self.pos # <<<<<<<<<<<<<< * lut = numpy.recarray(shape=(self.shape[0], self.shape[1], self.lut_size), dtype=[("idx", numpy.int32), ("coef", numpy.float32)]) * size = self.shape[0] * self.shape[1] * self.lut_size * sizeof(lut_point) */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_pos); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_float(__pyx_t_5); - if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_pos = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1188 + /* "pyFAI/ext/_distortion.pyx":1212 * if self.LUT is None: * pos = self.pos * lut = numpy.recarray(shape=(self.shape[0], self.shape[1], self.lut_size), dtype=[("idx", numpy.int32), ("coef", numpy.float32)]) # <<<<<<<<<<<<<< * size = self.shape[0] * self.shape[1] * self.lut_size * sizeof(lut_point) * memset(&lut[0, 0, 0], 0, size) */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_recarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_recarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; + __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_17 = PyTuple_New(3); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = PyTuple_New(3); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -24732,14 +24537,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_shape, __pyx_t_17) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_shape, __pyx_t_17) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_int32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_int32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_INCREF(__pyx_n_s_idx); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_n_s_idx); @@ -24747,12 +24552,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_coef); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_coef); @@ -24760,7 +24565,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); @@ -24768,13 +24573,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __Pyx_GIVEREF(__pyx_t_1); __pyx_t_17 = 0; __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __pyx_t_18 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[2]; @@ -24790,50 +24595,50 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO } } __pyx_pybuffernd_lut.diminfo[0].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lut.diminfo[0].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_lut.diminfo[1].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_lut.diminfo[1].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_lut.diminfo[2].strides = __pyx_pybuffernd_lut.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_lut.diminfo[2].shape = __pyx_pybuffernd_lut.rcbuffer->pybuffer.shape[2]; - if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L11_error;} } __pyx_t_18 = 0; __pyx_v_lut = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/_distortion.pyx":1189 + /* "pyFAI/ext/_distortion.pyx":1213 * pos = self.pos * lut = numpy.recarray(shape=(self.shape[0], self.shape[1], self.lut_size), dtype=[("idx", numpy.int32), ("coef", numpy.float32)]) * size = self.shape[0] * self.shape[1] * self.lut_size * sizeof(lut_point) # <<<<<<<<<<<<<< * memset(&lut[0, 0, 0], 0, size) * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], size / 1.0e6)) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_size = __pyx_t_9; - /* "pyFAI/ext/_distortion.pyx":1190 + /* "pyFAI/ext/_distortion.pyx":1214 * lut = numpy.recarray(shape=(self.shape[0], self.shape[1], self.lut_size), dtype=[("idx", numpy.int32), ("coef", numpy.float32)]) * size = self.shape[0] * self.shape[1] * self.lut_size * sizeof(lut_point) * memset(&lut[0, 0, 0], 0, size) # <<<<<<<<<<<<<< @@ -24845,27 +24650,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __pyx_t_24 = 0; memset((&(*__Pyx_BufPtrStrided3d(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_23, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_24, __pyx_pybuffernd_lut.diminfo[2].strides))), 0, __pyx_v_size); - /* "pyFAI/ext/_distortion.pyx":1191 + /* "pyFAI/ext/_distortion.pyx":1215 * size = self.shape[0] * self.shape[1] * self.lut_size * sizeof(lut_point) * memset(&lut[0, 0, 0], 0, size) * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], size / 1.0e6)) # <<<<<<<<<<<<<< * buffer = numpy.empty((self.delta0, self.delta1), dtype=numpy.float32) * buffer_size = self.delta0 * self.delta1 * sizeof(float) */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_lut->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_lut->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_lut->dimensions[1])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_lut->dimensions[1])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_17 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_lut->dimensions[2])); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_lut->dimensions[2])); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_2 = PyFloat_FromDouble((__pyx_v_size / 1.0e6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = PyFloat_FromDouble((__pyx_v_size / 1.0e6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_25 = PyTuple_New(4); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = PyTuple_New(4); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -24879,7 +24684,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __pyx_t_1 = 0; __pyx_t_17 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_LUT_shape_i_i_i_3f_MByte, __pyx_t_25); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_LUT_shape_i_i_i_3f_MByte, __pyx_t_25); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_25 = NULL; @@ -24893,40 +24698,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO } } if (!__pyx_t_25) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_25); __Pyx_GIVEREF(__pyx_t_25); __pyx_t_25 = NULL; PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/_distortion.pyx":1192 + /* "pyFAI/ext/_distortion.pyx":1216 * memset(&lut[0, 0, 0], 0, size) * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], size / 1.0e6)) * buffer = numpy.empty((self.delta0, self.delta1), dtype=numpy.float32) # <<<<<<<<<<<<<< * buffer_size = self.delta0 * self.delta1 * sizeof(float) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], self.lut_size)) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); @@ -24934,76 +24739,76 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __Pyx_GIVEREF(__pyx_t_17); __pyx_t_4 = 0; __pyx_t_17 = 0; - __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_25) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_25) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; - __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, __pyx_t_2); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, __pyx_t_2); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_26 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_25); - if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_v_buffer = __pyx_t_26; __pyx_t_26.memview = NULL; __pyx_t_26.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1193 + /* "pyFAI/ext/_distortion.pyx":1217 * logger.info("LUT shape: (%i,%i,%i) %.3f MByte" % (lut.shape[0], lut.shape[1], lut.shape[2], size / 1.0e6)) * buffer = numpy.empty((self.delta0, self.delta1), dtype=numpy.float32) * buffer_size = self.delta0 * self.delta1 * sizeof(float) # <<<<<<<<<<<<<< * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], self.lut_size)) * with nogil: */ - __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta0); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta0); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_25); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_delta1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_17 = PyNumber_Multiply(__pyx_t_25, __pyx_t_2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = PyNumber_Multiply(__pyx_t_25, __pyx_t_2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t((sizeof(float))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = __Pyx_PyInt_FromSize_t((sizeof(float))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_25 = PyNumber_Multiply(__pyx_t_17, __pyx_t_2); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = PyNumber_Multiply(__pyx_t_17, __pyx_t_2); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_25); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_25); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_v_buffer_size = __pyx_t_9; - /* "pyFAI/ext/_distortion.pyx":1194 + /* "pyFAI/ext/_distortion.pyx":1218 * buffer = numpy.empty((self.delta0, self.delta1), dtype=numpy.float32) * buffer_size = self.delta0 * self.delta1 * sizeof(float) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], self.lut_size)) # <<<<<<<<<<<<<< * with nogil: * # i,j, idx are indexes of the raw image uncorrected */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_buffer.shape[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_buffer.shape[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyInt_FromSsize_t((__pyx_v_buffer.shape[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = PyInt_FromSsize_t((__pyx_v_buffer.shape[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); @@ -25014,7 +24819,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Max_pixel_size_ix_i_Max_source_p, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Max_pixel_size_ix_i_Max_source_p, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; @@ -25028,24 +24833,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO } } if (!__pyx_t_1) { - __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_4); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_4); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_25); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_5, NULL); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_5, NULL); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; - /* "pyFAI/ext/_distortion.pyx":1195 + /* "pyFAI/ext/_distortion.pyx":1219 * buffer_size = self.delta0 * self.delta1 * sizeof(float) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], self.lut_size)) * with nogil: # <<<<<<<<<<<<<< @@ -25059,7 +24864,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":1197 + /* "pyFAI/ext/_distortion.pyx":1221 * with nogil: * # i,j, idx are indexes of the raw image uncorrected * for i in range(shape0): # <<<<<<<<<<<<<< @@ -25070,7 +24875,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "pyFAI/ext/_distortion.pyx":1198 + /* "pyFAI/ext/_distortion.pyx":1222 * # i,j, idx are indexes of the raw image uncorrected * for i in range(shape0): * for j in range(shape1): # <<<<<<<<<<<<<< @@ -25081,7 +24886,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_8calc_LUT(CYTHO for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_27; __pyx_t_28+=1) { __pyx_v_j = __pyx_t_28; - /* "pyFAI/ext/_distortion.pyx":1200 + /* "pyFAI/ext/_distortion.pyx":1224 * for j in range(shape1): * # reinit of buffer * buffer[:, :] = 0 # <<<<<<<<<<<<<< @@ -25114,7 +24919,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __PYX_XDEC_MEMVIEW(&__pyx_t_29, 0); - /* "pyFAI/ext/_distortion.pyx":1201 + /* "pyFAI/ext/_distortion.pyx":1225 * # reinit of buffer * buffer[:, :] = 0 * A0 = pos[i, j, 0, 0] # <<<<<<<<<<<<<< @@ -25127,7 +24932,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_33 = 0; __pyx_v_A0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_30 * __pyx_v_pos.strides[0]) ) + __pyx_t_31 * __pyx_v_pos.strides[1]) ) + __pyx_t_32 * __pyx_v_pos.strides[2]) ) + __pyx_t_33 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1202 + /* "pyFAI/ext/_distortion.pyx":1226 * buffer[:, :] = 0 * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] # <<<<<<<<<<<<<< @@ -25140,7 +24945,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_37 = 1; __pyx_v_A1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_34 * __pyx_v_pos.strides[0]) ) + __pyx_t_35 * __pyx_v_pos.strides[1]) ) + __pyx_t_36 * __pyx_v_pos.strides[2]) ) + __pyx_t_37 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1203 + /* "pyFAI/ext/_distortion.pyx":1227 * A0 = pos[i, j, 0, 0] * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] # <<<<<<<<<<<<<< @@ -25153,7 +24958,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_41 = 0; __pyx_v_B0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_38 * __pyx_v_pos.strides[0]) ) + __pyx_t_39 * __pyx_v_pos.strides[1]) ) + __pyx_t_40 * __pyx_v_pos.strides[2]) ) + __pyx_t_41 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1204 + /* "pyFAI/ext/_distortion.pyx":1228 * A1 = pos[i, j, 0, 1] * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] # <<<<<<<<<<<<<< @@ -25166,7 +24971,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_45 = 1; __pyx_v_B1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_42 * __pyx_v_pos.strides[0]) ) + __pyx_t_43 * __pyx_v_pos.strides[1]) ) + __pyx_t_44 * __pyx_v_pos.strides[2]) ) + __pyx_t_45 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1205 + /* "pyFAI/ext/_distortion.pyx":1229 * B0 = pos[i, j, 1, 0] * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] # <<<<<<<<<<<<<< @@ -25179,7 +24984,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_49 = 0; __pyx_v_C0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_46 * __pyx_v_pos.strides[0]) ) + __pyx_t_47 * __pyx_v_pos.strides[1]) ) + __pyx_t_48 * __pyx_v_pos.strides[2]) ) + __pyx_t_49 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1206 + /* "pyFAI/ext/_distortion.pyx":1230 * B1 = pos[i, j, 1, 1] * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] # <<<<<<<<<<<<<< @@ -25192,7 +24997,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_53 = 1; __pyx_v_C1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_50 * __pyx_v_pos.strides[0]) ) + __pyx_t_51 * __pyx_v_pos.strides[1]) ) + __pyx_t_52 * __pyx_v_pos.strides[2]) ) + __pyx_t_53 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1207 + /* "pyFAI/ext/_distortion.pyx":1231 * C0 = pos[i, j, 2, 0] * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] # <<<<<<<<<<<<<< @@ -25205,7 +25010,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_57 = 0; __pyx_v_D0 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_54 * __pyx_v_pos.strides[0]) ) + __pyx_t_55 * __pyx_v_pos.strides[1]) ) + __pyx_t_56 * __pyx_v_pos.strides[2]) ) + __pyx_t_57 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1208 + /* "pyFAI/ext/_distortion.pyx":1232 * C1 = pos[i, j, 2, 1] * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] # <<<<<<<<<<<<<< @@ -25218,7 +25023,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_61 = 1; __pyx_v_D1 = (*((float *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_pos.data + __pyx_t_58 * __pyx_v_pos.strides[0]) ) + __pyx_t_59 * __pyx_v_pos.strides[1]) ) + __pyx_t_60 * __pyx_v_pos.strides[2]) ) + __pyx_t_61 * __pyx_v_pos.strides[3]) ))); - /* "pyFAI/ext/_distortion.pyx":1209 + /* "pyFAI/ext/_distortion.pyx":1233 * D0 = pos[i, j, 3, 0] * D1 = pos[i, j, 3, 1] * offset0 = ( floor(min(A0, B0, C0, D0))) # <<<<<<<<<<<<<< @@ -25248,7 +25053,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_offset0 = ((int)floor(__pyx_t_66)); - /* "pyFAI/ext/_distortion.pyx":1210 + /* "pyFAI/ext/_distortion.pyx":1234 * D1 = pos[i, j, 3, 1] * offset0 = ( floor(min(A0, B0, C0, D0))) * offset1 = ( floor(min(A1, B1, C1, D1))) # <<<<<<<<<<<<<< @@ -25278,7 +25083,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_offset1 = ((int)floor(__pyx_t_65)); - /* "pyFAI/ext/_distortion.pyx":1211 + /* "pyFAI/ext/_distortion.pyx":1235 * offset0 = ( floor(min(A0, B0, C0, D0))) * offset1 = ( floor(min(A1, B1, C1, D1))) * box_size0 = ( ceil(max(A0, B0, C0, D0))) - offset0 # <<<<<<<<<<<<<< @@ -25308,7 +25113,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_box_size0 = (((int)ceil(__pyx_t_64)) - __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":1212 + /* "pyFAI/ext/_distortion.pyx":1236 * offset1 = ( floor(min(A1, B1, C1, D1))) * box_size0 = ( ceil(max(A0, B0, C0, D0))) - offset0 * box_size1 = ( ceil(max(A1, B1, C1, D1))) - offset1 # <<<<<<<<<<<<<< @@ -25338,7 +25143,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_v_box_size1 = (((int)ceil(__pyx_t_63)) - __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":1213 + /* "pyFAI/ext/_distortion.pyx":1237 * box_size0 = ( ceil(max(A0, B0, C0, D0))) - offset0 * box_size1 = ( ceil(max(A1, B1, C1, D1))) - offset1 * A0 -= offset0 # <<<<<<<<<<<<<< @@ -25347,7 +25152,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A0 = (__pyx_v_A0 - ((float)__pyx_v_offset0)); - /* "pyFAI/ext/_distortion.pyx":1214 + /* "pyFAI/ext/_distortion.pyx":1238 * box_size1 = ( ceil(max(A1, B1, C1, D1))) - offset1 * A0 -= offset0 * A1 -= offset1 # <<<<<<<<<<<<<< @@ -25356,7 +25161,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_A1 = (__pyx_v_A1 - ((float)__pyx_v_offset1)); - /* "pyFAI/ext/_distortion.pyx":1215 + /* "pyFAI/ext/_distortion.pyx":1239 * A0 -= offset0 * A1 -= offset1 * B0 -= offset0 # <<<<<<<<<<<<<< @@ -25365,7 +25170,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B0 = (__pyx_v_B0 - ((float)__pyx_v_offset0)); - /* "pyFAI/ext/_distortion.pyx":1216 + /* "pyFAI/ext/_distortion.pyx":1240 * A1 -= offset1 * B0 -= offset0 * B1 -= offset1 # <<<<<<<<<<<<<< @@ -25374,7 +25179,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_B1 = (__pyx_v_B1 - ((float)__pyx_v_offset1)); - /* "pyFAI/ext/_distortion.pyx":1217 + /* "pyFAI/ext/_distortion.pyx":1241 * B0 -= offset0 * B1 -= offset1 * C0 -= offset0 # <<<<<<<<<<<<<< @@ -25383,7 +25188,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C0 = (__pyx_v_C0 - ((float)__pyx_v_offset0)); - /* "pyFAI/ext/_distortion.pyx":1218 + /* "pyFAI/ext/_distortion.pyx":1242 * B1 -= offset1 * C0 -= offset0 * C1 -= offset1 # <<<<<<<<<<<<<< @@ -25392,7 +25197,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_C1 = (__pyx_v_C1 - ((float)__pyx_v_offset1)); - /* "pyFAI/ext/_distortion.pyx":1219 + /* "pyFAI/ext/_distortion.pyx":1243 * C0 -= offset0 * C1 -= offset1 * D0 -= offset0 # <<<<<<<<<<<<<< @@ -25401,7 +25206,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D0 = (__pyx_v_D0 - ((float)__pyx_v_offset0)); - /* "pyFAI/ext/_distortion.pyx":1220 + /* "pyFAI/ext/_distortion.pyx":1244 * C1 -= offset1 * D0 -= offset0 * D1 -= offset1 # <<<<<<<<<<<<<< @@ -25410,7 +25215,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_D1 = (__pyx_v_D1 - ((float)__pyx_v_offset1)); - /* "pyFAI/ext/_distortion.pyx":1221 + /* "pyFAI/ext/_distortion.pyx":1245 * D0 -= offset0 * D1 -= offset1 * if B0 != A0: # <<<<<<<<<<<<<< @@ -25420,7 +25225,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_11 = ((__pyx_v_B0 != __pyx_v_A0) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1222 + /* "pyFAI/ext/_distortion.pyx":1246 * D1 -= offset1 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) # <<<<<<<<<<<<<< @@ -25429,7 +25234,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pAB = ((__pyx_v_B1 - __pyx_v_A1) / (__pyx_v_B0 - __pyx_v_A0)); - /* "pyFAI/ext/_distortion.pyx":1223 + /* "pyFAI/ext/_distortion.pyx":1247 * if B0 != A0: * pAB = (B1 - A1) / (B0 - A0) * cAB = A1 - pAB * A0 # <<<<<<<<<<<<<< @@ -25441,7 +25246,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":1225 + /* "pyFAI/ext/_distortion.pyx":1249 * cAB = A1 - pAB * A0 * else: * pAB = cAB = 0.0 # <<<<<<<<<<<<<< @@ -25453,7 +25258,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L29:; - /* "pyFAI/ext/_distortion.pyx":1226 + /* "pyFAI/ext/_distortion.pyx":1250 * else: * pAB = cAB = 0.0 * if C0 != B0: # <<<<<<<<<<<<<< @@ -25463,7 +25268,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_11 = ((__pyx_v_C0 != __pyx_v_B0) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1227 + /* "pyFAI/ext/_distortion.pyx":1251 * pAB = cAB = 0.0 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) # <<<<<<<<<<<<<< @@ -25472,7 +25277,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pBC = ((__pyx_v_C1 - __pyx_v_B1) / (__pyx_v_C0 - __pyx_v_B0)); - /* "pyFAI/ext/_distortion.pyx":1228 + /* "pyFAI/ext/_distortion.pyx":1252 * if C0 != B0: * pBC = (C1 - B1) / (C0 - B0) * cBC = B1 - pBC * B0 # <<<<<<<<<<<<<< @@ -25484,7 +25289,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":1230 + /* "pyFAI/ext/_distortion.pyx":1254 * cBC = B1 - pBC * B0 * else: * pBC = cBC = 0.0 # <<<<<<<<<<<<<< @@ -25496,7 +25301,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L30:; - /* "pyFAI/ext/_distortion.pyx":1231 + /* "pyFAI/ext/_distortion.pyx":1255 * else: * pBC = cBC = 0.0 * if D0 != C0: # <<<<<<<<<<<<<< @@ -25506,7 +25311,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_11 = ((__pyx_v_D0 != __pyx_v_C0) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1232 + /* "pyFAI/ext/_distortion.pyx":1256 * pBC = cBC = 0.0 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) # <<<<<<<<<<<<<< @@ -25515,7 +25320,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pCD = ((__pyx_v_D1 - __pyx_v_C1) / (__pyx_v_D0 - __pyx_v_C0)); - /* "pyFAI/ext/_distortion.pyx":1233 + /* "pyFAI/ext/_distortion.pyx":1257 * if D0 != C0: * pCD = (D1 - C1) / (D0 - C0) * cCD = C1 - pCD * C0 # <<<<<<<<<<<<<< @@ -25527,7 +25332,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":1235 + /* "pyFAI/ext/_distortion.pyx":1259 * cCD = C1 - pCD * C0 * else: * pCD = cCD = 0.0 # <<<<<<<<<<<<<< @@ -25539,7 +25344,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L31:; - /* "pyFAI/ext/_distortion.pyx":1236 + /* "pyFAI/ext/_distortion.pyx":1260 * else: * pCD = cCD = 0.0 * if A0 != D0: # <<<<<<<<<<<<<< @@ -25549,7 +25354,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_11 = ((__pyx_v_A0 != __pyx_v_D0) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1237 + /* "pyFAI/ext/_distortion.pyx":1261 * pCD = cCD = 0.0 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) # <<<<<<<<<<<<<< @@ -25558,7 +25363,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_pDA = ((__pyx_v_A1 - __pyx_v_D1) / (__pyx_v_A0 - __pyx_v_D0)); - /* "pyFAI/ext/_distortion.pyx":1238 + /* "pyFAI/ext/_distortion.pyx":1262 * if A0 != D0: * pDA = (A1 - D1) / (A0 - D0) * cDA = D1 - pDA * D0 # <<<<<<<<<<<<<< @@ -25570,7 +25375,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } /*else*/ { - /* "pyFAI/ext/_distortion.pyx":1240 + /* "pyFAI/ext/_distortion.pyx":1264 * cDA = D1 - pDA * D0 * else: * pDA = cDA = 0.0 # <<<<<<<<<<<<<< @@ -25582,7 +25387,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L32:; - /* "pyFAI/ext/_distortion.pyx":1242 + /* "pyFAI/ext/_distortion.pyx":1266 * pDA = cDA = 0.0 * # ABCD is ANTI-trigonometric order: order input position accordingly * integrate(buffer, B0, A0, pAB, cAB) # <<<<<<<<<<<<<< @@ -25591,7 +25396,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_B0, __pyx_v_A0, __pyx_v_pAB, __pyx_v_cAB); - /* "pyFAI/ext/_distortion.pyx":1243 + /* "pyFAI/ext/_distortion.pyx":1267 * # ABCD is ANTI-trigonometric order: order input position accordingly * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, A0, D0, pDA, cDA) # <<<<<<<<<<<<<< @@ -25600,7 +25405,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_A0, __pyx_v_D0, __pyx_v_pDA, __pyx_v_cDA); - /* "pyFAI/ext/_distortion.pyx":1244 + /* "pyFAI/ext/_distortion.pyx":1268 * integrate(buffer, B0, A0, pAB, cAB) * integrate(buffer, A0, D0, pDA, cDA) * integrate(buffer, D0, C0, pCD, cCD) # <<<<<<<<<<<<<< @@ -25609,7 +25414,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_D0, __pyx_v_C0, __pyx_v_pCD, __pyx_v_cCD); - /* "pyFAI/ext/_distortion.pyx":1245 + /* "pyFAI/ext/_distortion.pyx":1269 * integrate(buffer, A0, D0, pDA, cDA) * integrate(buffer, D0, C0, pCD, cCD) * integrate(buffer, C0, B0, pBC, cBC) # <<<<<<<<<<<<<< @@ -25618,7 +25423,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_f_5pyFAI_3ext_11_distortion_integrate(__pyx_v_buffer, __pyx_v_C0, __pyx_v_B0, __pyx_v_pBC, __pyx_v_cBC); - /* "pyFAI/ext/_distortion.pyx":1246 + /* "pyFAI/ext/_distortion.pyx":1270 * integrate(buffer, D0, C0, pCD, cCD) * integrate(buffer, C0, B0, pBC, cBC) * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) # <<<<<<<<<<<<<< @@ -25627,7 +25432,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_area = (0.5 * (((__pyx_v_C0 - __pyx_v_A0) * (__pyx_v_D1 - __pyx_v_B1)) - ((__pyx_v_C1 - __pyx_v_A1) * (__pyx_v_D0 - __pyx_v_B0)))); - /* "pyFAI/ext/_distortion.pyx":1247 + /* "pyFAI/ext/_distortion.pyx":1271 * integrate(buffer, C0, B0, pBC, cBC) * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) * for ms in range(box_size0): # <<<<<<<<<<<<<< @@ -25638,7 +25443,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_68 = 0; __pyx_t_68 < __pyx_t_67; __pyx_t_68+=1) { __pyx_v_ms = __pyx_t_68; - /* "pyFAI/ext/_distortion.pyx":1248 + /* "pyFAI/ext/_distortion.pyx":1272 * area = 0.5 * ((C0 - A0) * (D1 - B1) - (C1 - A1) * (D0 - B0)) * for ms in range(box_size0): * ml = ms + offset0 # <<<<<<<<<<<<<< @@ -25647,7 +25452,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_ml = (__pyx_v_ms + __pyx_v_offset0); - /* "pyFAI/ext/_distortion.pyx":1249 + /* "pyFAI/ext/_distortion.pyx":1273 * for ms in range(box_size0): * ml = ms + offset0 * if ml < 0 or ml >= shape0: # <<<<<<<<<<<<<< @@ -25665,7 +25470,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L36_bool_binop_done:; if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1250 + /* "pyFAI/ext/_distortion.pyx":1274 * ml = ms + offset0 * if ml < 0 or ml >= shape0: * continue # <<<<<<<<<<<<<< @@ -25675,7 +25480,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L33_continue; } - /* "pyFAI/ext/_distortion.pyx":1251 + /* "pyFAI/ext/_distortion.pyx":1275 * if ml < 0 or ml >= shape0: * continue * for ns in range(box_size1): # <<<<<<<<<<<<<< @@ -25686,7 +25491,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; for (__pyx_t_70 = 0; __pyx_t_70 < __pyx_t_69; __pyx_t_70+=1) { __pyx_v_ns = __pyx_t_70; - /* "pyFAI/ext/_distortion.pyx":1253 + /* "pyFAI/ext/_distortion.pyx":1277 * for ns in range(box_size1): * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 # <<<<<<<<<<<<<< @@ -25695,7 +25500,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ __pyx_v_nl = (__pyx_v_ns + __pyx_v_offset1); - /* "pyFAI/ext/_distortion.pyx":1254 + /* "pyFAI/ext/_distortion.pyx":1278 * # ms,ns are indexes of the corrected image in short form, ml & nl are the same * nl = ns + offset1 * if nl < 0 or nl >= shape1: # <<<<<<<<<<<<<< @@ -25713,7 +25518,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L41_bool_binop_done:; if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1255 + /* "pyFAI/ext/_distortion.pyx":1279 * nl = ns + offset1 * if nl < 0 or nl >= shape1: * continue # <<<<<<<<<<<<<< @@ -25723,7 +25528,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L38_continue; } - /* "pyFAI/ext/_distortion.pyx":1256 + /* "pyFAI/ext/_distortion.pyx":1280 * if nl < 0 or nl >= shape1: * continue * value = buffer[ms, ns] / area # <<<<<<<<<<<<<< @@ -25734,7 +25539,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_72 = __pyx_v_ns; __pyx_v_value = ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_buffer.data + __pyx_t_71 * __pyx_v_buffer.strides[0]) )) + __pyx_t_72)) ))) / __pyx_v_area); - /* "pyFAI/ext/_distortion.pyx":1257 + /* "pyFAI/ext/_distortion.pyx":1281 * continue * value = buffer[ms, ns] / area * if value <= 0: # <<<<<<<<<<<<<< @@ -25744,7 +25549,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_11 = ((__pyx_v_value <= 0.0) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_distortion.pyx":1258 + /* "pyFAI/ext/_distortion.pyx":1282 * value = buffer[ms, ns] / area * if value <= 0: * continue # <<<<<<<<<<<<<< @@ -25754,7 +25559,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; goto __pyx_L38_continue; } - /* "pyFAI/ext/_distortion.pyx":1259 + /* "pyFAI/ext/_distortion.pyx":1283 * if value <= 0: * continue * k = outMax[ml, nl] # <<<<<<<<<<<<<< @@ -25765,7 +25570,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_74 = __pyx_v_nl; __pyx_v_k = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_outMax.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_outMax.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_outMax.diminfo[1].strides)); - /* "pyFAI/ext/_distortion.pyx":1260 + /* "pyFAI/ext/_distortion.pyx":1284 * continue * k = outMax[ml, nl] * lut[ml, nl, k].idx = idx # <<<<<<<<<<<<<< @@ -25777,7 +25582,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_77 = __pyx_v_k; (*__Pyx_BufPtrStrided3d(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_77, __pyx_pybuffernd_lut.diminfo[2].strides)).idx = __pyx_v_idx; - /* "pyFAI/ext/_distortion.pyx":1261 + /* "pyFAI/ext/_distortion.pyx":1285 * k = outMax[ml, nl] * lut[ml, nl, k].idx = idx * lut[ml, nl, k].coef = value # <<<<<<<<<<<<<< @@ -25789,7 +25594,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_80 = __pyx_v_k; (*__Pyx_BufPtrStrided3d(struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *, __pyx_pybuffernd_lut.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_lut.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_lut.diminfo[1].strides, __pyx_t_80, __pyx_pybuffernd_lut.diminfo[2].strides)).coef = __pyx_v_value; - /* "pyFAI/ext/_distortion.pyx":1262 + /* "pyFAI/ext/_distortion.pyx":1286 * lut[ml, nl, k].idx = idx * lut[ml, nl, k].coef = value * outMax[ml, nl] = k + 1 # <<<<<<<<<<<<<< @@ -25804,7 +25609,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_L33_continue:; } - /* "pyFAI/ext/_distortion.pyx":1263 + /* "pyFAI/ext/_distortion.pyx":1287 * lut[ml, nl, k].coef = value * outMax[ml, nl] = k + 1 * idx += 1 # <<<<<<<<<<<<<< @@ -25816,7 +25621,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":1195 + /* "pyFAI/ext/_distortion.pyx":1219 * buffer_size = self.delta0 * self.delta1 * sizeof(float) * logger.info("Max pixel size: %ix%i; Max source pixel in target: %i" % (buffer.shape[1], buffer.shape[0], self.lut_size)) * with nogil: # <<<<<<<<<<<<<< @@ -25840,30 +25645,30 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } } - /* "pyFAI/ext/_distortion.pyx":1264 + /* "pyFAI/ext/_distortion.pyx":1288 * outMax[ml, nl] = k + 1 * idx += 1 * self.LUT = lut.reshape(self.shape[0] * self.shape[1], self.lut_size) # <<<<<<<<<<<<<< * return self.LUT * */ - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_lut), __pyx_n_s_reshape); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_lut), __pyx_n_s_reshape); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_17); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;}; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_5 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lut_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; __pyx_t_83 = 0; @@ -25877,7 +25682,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __pyx_t_83 = 1; } } - __pyx_t_2 = PyTuple_New(2+__pyx_t_83); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_2 = PyTuple_New(2+__pyx_t_83); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_4) { PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; @@ -25888,11 +25693,11 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_GIVEREF(__pyx_t_1); __pyx_t_5 = 0; __pyx_t_1 = 0; - __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_2, NULL); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_2, NULL); if (unlikely(!__pyx_t_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_LUT, __pyx_t_25) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L11_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_LUT, __pyx_t_25) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L11_error;} __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; goto __pyx_L19; } @@ -25910,10 +25715,10 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_26, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1); - /* "pyFAI/ext/_distortion.pyx":1185 + /* "pyFAI/ext/_distortion.pyx":1209 * self.calc_LUT_size() * if self.LUT is None: * with self._sem: # <<<<<<<<<<<<<< @@ -25922,20 +25727,20 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; */ /*except:*/ { __Pyx_AddTraceback("pyFAI.ext._distortion.Distortion.calc_LUT", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_25, &__pyx_t_17, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} + if (__Pyx_GetException(&__pyx_t_25, &__pyx_t_17, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} __Pyx_GOTREF(__pyx_t_25); __Pyx_GOTREF(__pyx_t_17); __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_Pack(3, __pyx_t_25, __pyx_t_17, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} + __pyx_t_1 = PyTuple_Pack(3, __pyx_t_25, __pyx_t_17, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_21 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_1, NULL); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} + if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} __Pyx_GOTREF(__pyx_t_21); __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_21); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; - if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} + if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} __pyx_t_10 = ((!(__pyx_t_11 != 0)) != 0); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_25); @@ -25943,7 +25748,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_XGIVEREF(__pyx_t_2); __Pyx_ErrRestore(__pyx_t_25, __pyx_t_17, __pyx_t_2); __pyx_t_25 = 0; __pyx_t_17 = 0; __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L13_except_error;} } __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; @@ -25969,7 +25774,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; if (__pyx_t_12) { __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__110, NULL); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } @@ -25987,7 +25792,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; } __pyx_L6:; - /* "pyFAI/ext/_distortion.pyx":1265 + /* "pyFAI/ext/_distortion.pyx":1289 * idx += 1 * self.LUT = lut.reshape(self.shape[0] * self.shape[1], self.lut_size) * return self.LUT # <<<<<<<<<<<<<< @@ -25995,13 +25800,13 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":1170 + /* "pyFAI/ext/_distortion.pyx":1194 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_LUT(self): # <<<<<<<<<<<<<< @@ -26042,7 +25847,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1269 +/* "pyFAI/ext/_distortion.pyx":1293 * @cython.wraparound(False) * @cython.boundscheck(False) * def correct(self, image): # <<<<<<<<<<<<<< @@ -26052,7 +25857,7 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_11correct(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_10correct[] = "\n Correct an image based on the look-up table calculated ...\n\n @param image: 2D-array with the image\n @return: corrected 2D image\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_10correct[] = "Distortion.correct(self, image)\n\n Correct an image based on the look-up table calculated ...\n\n :param image: 2D-array with the image\n :return: corrected 2D image\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_11correct = {"correct", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_11correct, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_10correct}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_11correct(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -26083,11 +25888,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_11correct(PyObj case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_image)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("correct", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "correct") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "correct") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -26100,7 +25905,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_11correct(PyObj } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("correct", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("correct", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.Distortion.correct", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -26158,28 +25963,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __Pyx_RefNannySetupContext("correct", 0); __Pyx_INCREF(__pyx_v_image); - /* "pyFAI/ext/_distortion.pyx":1281 + /* "pyFAI/ext/_distortion.pyx":1305 * lut_point[:, :] LUT * float[:] lout, lin * if self.LUT is None: # <<<<<<<<<<<<<< * self.calc_LUT() * LUT = self.LUT */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1282 + /* "pyFAI/ext/_distortion.pyx":1306 * float[:] lout, lin * if self.LUT is None: * self.calc_LUT() # <<<<<<<<<<<<<< * LUT = self.LUT * lshape0 = LUT.shape[0] */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_LUT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_LUT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -26192,10 +25997,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } } if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -26204,23 +26009,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } __pyx_L3:; - /* "pyFAI/ext/_distortion.pyx":1283 + /* "pyFAI/ext/_distortion.pyx":1307 * if self.LUT is None: * self.calc_LUT() * LUT = self.LUT # <<<<<<<<<<<<<< * lshape0 = LUT.shape[0] * lshape1 = LUT.shape[1] */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn_struct___pyx_t_5pyFAI_3ext_11_distortion_lut_point(__pyx_t_1); - if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_LUT = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1284 + /* "pyFAI/ext/_distortion.pyx":1308 * self.calc_LUT() * LUT = self.LUT * lshape0 = LUT.shape[0] # <<<<<<<<<<<<<< @@ -26229,7 +26034,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO */ __pyx_v_lshape0 = (__pyx_v_LUT.shape[0]); - /* "pyFAI/ext/_distortion.pyx":1285 + /* "pyFAI/ext/_distortion.pyx":1309 * LUT = self.LUT * lshape0 = LUT.shape[0] * lshape1 = LUT.shape[1] # <<<<<<<<<<<<<< @@ -26238,87 +26043,87 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO */ __pyx_v_lshape1 = (__pyx_v_LUT.shape[1]); - /* "pyFAI/ext/_distortion.pyx":1286 + /* "pyFAI/ext/_distortion.pyx":1310 * lshape0 = LUT.shape[0] * lshape1 = LUT.shape[1] * img_shape = image.shape # <<<<<<<<<<<<<< * if (img_shape[0] < self.shape[0]) or (img_shape[1] < self.shape[1]): * new_image = numpy.zeros(self.shape, dtype=numpy.float32) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_img_shape = __pyx_t_1; __pyx_t_1 = 0; - /* "pyFAI/ext/_distortion.pyx":1287 + /* "pyFAI/ext/_distortion.pyx":1311 * lshape1 = LUT.shape[1] * img_shape = image.shape * if (img_shape[0] < self.shape[0]) or (img_shape[1] < self.shape[1]): # <<<<<<<<<<<<<< * new_image = numpy.zeros(self.shape, dtype=numpy.float32) * new_image[:img_shape[0], :img_shape[1]] = image */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } - __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = __pyx_t_2; __pyx_L5_bool_binop_done:; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1288 + /* "pyFAI/ext/_distortion.pyx":1312 * img_shape = image.shape * if (img_shape[0] < self.shape[0]) or (img_shape[1] < self.shape[1]): * new_image = numpy.zeros(self.shape, dtype=numpy.float32) # <<<<<<<<<<<<<< * new_image[:img_shape[0], :img_shape[1]] = image * image = new_image */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -26326,24 +26131,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_v_new_image = __pyx_t_8; __pyx_t_8 = 0; - /* "pyFAI/ext/_distortion.pyx":1289 + /* "pyFAI/ext/_distortion.pyx":1313 * if (img_shape[0] < self.shape[0]) or (img_shape[1] < self.shape[1]): * new_image = numpy.zeros(self.shape, dtype=numpy.float32) * new_image[:img_shape[0], :img_shape[1]] = image # <<<<<<<<<<<<<< * image = new_image * logger.warning("Patching image as image is %ix%i and spline is %ix%i" % (img_shape[1], img_shape[0], self.shape[1], self.shape[0])) */ - __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = PySlice_New(Py_None, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySlice_New(Py_None, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PySlice_New(Py_None, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySlice_New(Py_None, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); @@ -26351,10 +26156,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __Pyx_GIVEREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_8, __pyx_v_image) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_new_image, __pyx_t_8, __pyx_v_image) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/_distortion.pyx":1290 + /* "pyFAI/ext/_distortion.pyx":1314 * new_image = numpy.zeros(self.shape, dtype=numpy.float32) * new_image[:img_shape[0], :img_shape[1]] = image * image = new_image # <<<<<<<<<<<<<< @@ -26364,33 +26169,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __Pyx_INCREF(__pyx_v_new_image); __Pyx_DECREF_SET(__pyx_v_image, __pyx_v_new_image); - /* "pyFAI/ext/_distortion.pyx":1291 + /* "pyFAI/ext/_distortion.pyx":1315 * new_image[:img_shape[0], :img_shape[1]] = image * image = new_image * logger.warning("Patching image as image is %ix%i and spline is %ix%i" % (img_shape[1], img_shape[0], self.shape[1], self.shape[0])) # <<<<<<<<<<<<<< * * out = numpy.zeros(self.shape, dtype=numpy.float32) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_warning); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_warning); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); @@ -26404,7 +26209,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_Patching_image_as_image_is_ix_i_2, __pyx_t_7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_Patching_image_as_image_is_ix_i_2, __pyx_t_7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; @@ -26418,17 +26223,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } } if (!__pyx_t_7) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_8); } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -26438,35 +26243,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } __pyx_L4:; - /* "pyFAI/ext/_distortion.pyx":1293 + /* "pyFAI/ext/_distortion.pyx":1317 * logger.warning("Patching image as image is %ix%i and spline is %ix%i" % (img_shape[1], img_shape[0], self.shape[1], self.shape[0])) * * out = numpy.zeros(self.shape, dtype=numpy.float32) # <<<<<<<<<<<<<< * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -26474,14 +26279,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_v_out = __pyx_t_7; __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1294 + /* "pyFAI/ext/_distortion.pyx":1318 * * out = numpy.zeros(self.shape, dtype=numpy.float32) * lout = out.ravel() # <<<<<<<<<<<<<< * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) { @@ -26494,33 +26299,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } } if (__pyx_t_9) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_7); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_lout = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1295 + /* "pyFAI/ext/_distortion.pyx":1319 * out = numpy.zeros(self.shape, dtype=numpy.float32) * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * size = lin.size * for i in prange(lshape0, nogil=True, schedule="static"): */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) { @@ -26533,56 +26338,56 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } } if (__pyx_t_5) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_10); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_lin = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "pyFAI/ext/_distortion.pyx":1296 + /* "pyFAI/ext/_distortion.pyx":1320 * lout = out.ravel() * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size # <<<<<<<<<<<<<< * for i in prange(lshape0, nogil=True, schedule="static"): * for j in range(lshape1): */ - __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_lin, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_lin, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_size = __pyx_t_12; - /* "pyFAI/ext/_distortion.pyx":1297 + /* "pyFAI/ext/_distortion.pyx":1321 * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size * for i in prange(lshape0, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -26616,7 +26421,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO if (__pyx_t_14 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_22, __pyx_t_18, __pyx_t_3, __pyx_t_23, __pyx_t_17, __pyx_t_20, __pyx_t_16, __pyx_t_21, __pyx_t_15, __pyx_t_19) firstprivate(__pyx_t_8, __pyx_t_7, __pyx_t_5, __pyx_t_10, __pyx_t_9) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_22, __pyx_t_18, __pyx_t_3, __pyx_t_23, __pyx_t_17, __pyx_t_20, __pyx_t_16, __pyx_t_21, __pyx_t_15, __pyx_t_19) firstprivate(__pyx_t_8, __pyx_t_5, __pyx_t_10, __pyx_t_7, __pyx_t_9) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -26626,7 +26431,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_14; __pyx_t_13++){ if (__pyx_parallel_why < 2) @@ -26634,10 +26439,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_v_i = 0 + 1 * __pyx_t_13; /* Initialize private variables to invalid values */ __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_j = ((int)0xbad0bad0); __pyx_v_idx = ((int)0xbad0bad0); + __pyx_v_j = ((int)0xbad0bad0); - /* "pyFAI/ext/_distortion.pyx":1298 + /* "pyFAI/ext/_distortion.pyx":1322 * size = lin.size * for i in prange(lshape0, nogil=True, schedule="static"): * for j in range(lshape1): # <<<<<<<<<<<<<< @@ -26648,7 +26453,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) { __pyx_v_j = __pyx_t_16; - /* "pyFAI/ext/_distortion.pyx":1299 + /* "pyFAI/ext/_distortion.pyx":1323 * for i in prange(lshape0, nogil=True, schedule="static"): * for j in range(lshape1): * idx = LUT[i, j].idx # <<<<<<<<<<<<<< @@ -26660,7 +26465,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_t_19 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_17 * __pyx_v_LUT.strides[0]) ) + __pyx_t_18 * __pyx_v_LUT.strides[1]) ))).idx; __pyx_v_idx = __pyx_t_19; - /* "pyFAI/ext/_distortion.pyx":1300 + /* "pyFAI/ext/_distortion.pyx":1324 * for j in range(lshape1): * idx = LUT[i, j].idx * coef = LUT[i, j].coef # <<<<<<<<<<<<<< @@ -26672,7 +26477,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_t_21 = (*((struct __pyx_t_5pyFAI_3ext_11_distortion_lut_point *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_LUT.data + __pyx_t_19 * __pyx_v_LUT.strides[0]) ) + __pyx_t_20 * __pyx_v_LUT.strides[1]) ))).coef; __pyx_v_coef = __pyx_t_21; - /* "pyFAI/ext/_distortion.pyx":1301 + /* "pyFAI/ext/_distortion.pyx":1325 * idx = LUT[i, j].idx * coef = LUT[i, j].coef * if coef <= 0: # <<<<<<<<<<<<<< @@ -26682,7 +26487,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_t_3 = ((__pyx_v_coef <= 0.0) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1302 + /* "pyFAI/ext/_distortion.pyx":1326 * coef = LUT[i, j].coef * if coef <= 0: * continue # <<<<<<<<<<<<<< @@ -26692,7 +26497,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO goto __pyx_L14_continue; } - /* "pyFAI/ext/_distortion.pyx":1303 + /* "pyFAI/ext/_distortion.pyx":1327 * if coef <= 0: * continue * if idx >= size: # <<<<<<<<<<<<<< @@ -26702,7 +26507,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_t_3 = ((__pyx_v_idx >= __pyx_v_size) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1304 + /* "pyFAI/ext/_distortion.pyx":1328 * continue * if idx >= size: * with gil: # <<<<<<<<<<<<<< @@ -26715,23 +26520,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO #endif /*try:*/ { - /* "pyFAI/ext/_distortion.pyx":1305 + /* "pyFAI/ext/_distortion.pyx":1329 * if idx >= size: * with gil: * logger.warning("Accessing %i >= %i !!!" % (idx, size)) # <<<<<<<<<<<<<< * continue * lout[i] += lin[idx] * coef */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_warning); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_warning); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); @@ -26739,7 +26544,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __Pyx_GIVEREF(__pyx_t_8); __pyx_t_10 = 0; __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_Accessing_i_i, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_Accessing_i_i, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; @@ -26753,24 +26558,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } } if (!__pyx_t_5) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); } else { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L21_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L21_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1306 + /* "pyFAI/ext/_distortion.pyx":1330 * with gil: * logger.warning("Accessing %i >= %i !!!" % (idx, size)) * continue # <<<<<<<<<<<<<< @@ -26780,7 +26585,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO goto __pyx_L18_continue; } - /* "pyFAI/ext/_distortion.pyx":1304 + /* "pyFAI/ext/_distortion.pyx":1328 * continue * if idx >= size: * with gil: # <<<<<<<<<<<<<< @@ -26804,7 +26609,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } } - /* "pyFAI/ext/_distortion.pyx":1307 + /* "pyFAI/ext/_distortion.pyx":1331 * logger.warning("Accessing %i >= %i !!!" % (idx, size)) * continue * lout[i] += lin[idx] * coef # <<<<<<<<<<<<<< @@ -26838,12 +26643,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO goto __pyx_L23; __pyx_L23:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates2) + #pragma omp critical(__pyx_parallel_lastprivates24) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_coef; - __pyx_parallel_temp1 = __pyx_v_j; - __pyx_parallel_temp2 = __pyx_v_idx; + __pyx_parallel_temp1 = __pyx_v_idx; + __pyx_parallel_temp2 = __pyx_v_j; __pyx_parallel_temp3 = __pyx_v_i; } __pyx_L24:; @@ -26863,12 +26668,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO /* Clean up any temporaries */ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = NULL; - __Pyx_XDECREF(__pyx_t_7); - __pyx_t_7 = NULL; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = NULL; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = NULL; + __Pyx_XDECREF(__pyx_t_7); + __pyx_t_7 = NULL; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = NULL; #ifdef WITH_THREAD @@ -26885,8 +26690,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } if (__pyx_parallel_why) { __pyx_v_coef = __pyx_parallel_temp0; - __pyx_v_j = __pyx_parallel_temp1; - __pyx_v_idx = __pyx_parallel_temp2; + __pyx_v_idx = __pyx_parallel_temp1; + __pyx_v_j = __pyx_parallel_temp2; __pyx_v_i = __pyx_parallel_temp3; switch (__pyx_parallel_why) { case 3: goto __pyx_L7_return; @@ -26914,7 +26719,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO #endif } - /* "pyFAI/ext/_distortion.pyx":1297 + /* "pyFAI/ext/_distortion.pyx":1321 * lin = numpy.ascontiguousarray(image.ravel(), dtype=numpy.float32) * size = lin.size * for i in prange(lshape0, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -26944,7 +26749,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO } } - /* "pyFAI/ext/_distortion.pyx":1308 + /* "pyFAI/ext/_distortion.pyx":1332 * continue * lout[i] += lin[idx] * coef * return out[:img_shape[0], :img_shape[1]] # <<<<<<<<<<<<<< @@ -26952,17 +26757,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO * def uncorrect(self, image): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_img_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_7); - __pyx_t_9 = PySlice_New(Py_None, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PySlice_New(Py_None, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_img_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_7); - __pyx_t_10 = PySlice_New(Py_None, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PySlice_New(Py_None, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); @@ -26970,14 +26775,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __Pyx_GIVEREF(__pyx_t_10); __pyx_t_9 = 0; __pyx_t_10 = 0; - __pyx_t_10 = PyObject_GetItem(__pyx_v_out, __pyx_t_7); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_10 = PyObject_GetItem(__pyx_v_out, __pyx_t_7); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":1269 + /* "pyFAI/ext/_distortion.pyx":1293 * @cython.wraparound(False) * @cython.boundscheck(False) * def correct(self, image): # <<<<<<<<<<<<<< @@ -27011,7 +26816,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO return __pyx_r; } -/* "pyFAI/ext/_distortion.pyx":1310 +/* "pyFAI/ext/_distortion.pyx":1334 * return out[:img_shape[0], :img_shape[1]] * * def uncorrect(self, image): # <<<<<<<<<<<<<< @@ -27021,7 +26826,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect[] = "\n Take an image which has been corrected and transform it into it's raw (with loss of information)\n\n @param image: 2D-array with the image\n @return: uncorrected 2D image and a mask (pixels in raw image\n "; +static char __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect[] = "Distortion.uncorrect(self, image)\n\n Take an image which has been corrected and transform it into it's raw (with loss of information)\n\n :param image: 2D-array with the image\n :return: uncorrected 2D image and a mask (pixels in raw image\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect = {"uncorrect", (PyCFunction)__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect}; static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -27052,11 +26857,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect(PyO case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_image)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("uncorrect", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uncorrect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uncorrect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -27069,7 +26874,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect(PyO } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("uncorrect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("uncorrect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._distortion.Distortion.uncorrect", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -27108,28 +26913,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT int __pyx_clineno = 0; __Pyx_RefNannySetupContext("uncorrect", 0); - /* "pyFAI/ext/_distortion.pyx":1317 - * @return: uncorrected 2D image and a mask (pixels in raw image + /* "pyFAI/ext/_distortion.pyx":1341 + * :return: uncorrected 2D image and a mask (pixels in raw image * """ * if self.LUT is None: # <<<<<<<<<<<<<< * self.calc_LUT() * out = numpy.zeros(self.shape, dtype=numpy.float32) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1318 + /* "pyFAI/ext/_distortion.pyx":1342 * """ * if self.LUT is None: * self.calc_LUT() # <<<<<<<<<<<<<< * out = numpy.zeros(self.shape, dtype=numpy.float32) * mask = numpy.zeros(self.shape, dtype=numpy.int8) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_LUT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calc_LUT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -27142,10 +26947,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT } } if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -27154,35 +26959,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT } __pyx_L3:; - /* "pyFAI/ext/_distortion.pyx":1319 + /* "pyFAI/ext/_distortion.pyx":1343 * if self.LUT is None: * self.calc_LUT() * out = numpy.zeros(self.shape, dtype=numpy.float32) # <<<<<<<<<<<<<< * mask = numpy.zeros(self.shape, dtype=numpy.int8) * lmask = mask.ravel() */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -27190,35 +26995,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT __pyx_v_out = __pyx_t_7; __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1320 + /* "pyFAI/ext/_distortion.pyx":1344 * self.calc_LUT() * out = numpy.zeros(self.shape, dtype=numpy.float32) * mask = numpy.zeros(self.shape, dtype=numpy.int8) # <<<<<<<<<<<<<< * lmask = mask.ravel() * lout = out.ravel() */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -27226,14 +27031,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT __pyx_v_mask = __pyx_t_6; __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1321 + /* "pyFAI/ext/_distortion.pyx":1345 * out = numpy.zeros(self.shape, dtype=numpy.float32) * mask = numpy.zeros(self.shape, dtype=numpy.int8) * lmask = mask.ravel() # <<<<<<<<<<<<<< * lout = out.ravel() * lin = image.ravel() */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { @@ -27246,24 +27051,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT } } if (__pyx_t_5) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_lmask = __pyx_t_6; __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1322 + /* "pyFAI/ext/_distortion.pyx":1346 * mask = numpy.zeros(self.shape, dtype=numpy.int8) * lmask = mask.ravel() * lout = out.ravel() # <<<<<<<<<<<<<< * lin = image.ravel() * tot = self.LUT.coef.sum(axis=-1) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_out, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { @@ -27276,24 +27081,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT } } if (__pyx_t_5) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_lout = __pyx_t_6; __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1323 + /* "pyFAI/ext/_distortion.pyx":1347 * lmask = mask.ravel() * lout = out.ravel() * lin = image.ravel() # <<<<<<<<<<<<<< * tot = self.LUT.coef.sum(axis=-1) * for idx in range(self.LUT.shape[0]): */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { @@ -27306,71 +27111,71 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT } } if (__pyx_t_5) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_lin = __pyx_t_6; __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1324 + /* "pyFAI/ext/_distortion.pyx":1348 * lout = out.ravel() * lin = image.ravel() * tot = self.LUT.coef.sum(axis=-1) # <<<<<<<<<<<<<< * for idx in range(self.LUT.shape[0]): * t = tot[idx] */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_coef); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_coef); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sum); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sum); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_axis, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_tot = __pyx_t_5; __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":1325 + /* "pyFAI/ext/_distortion.pyx":1349 * lin = image.ravel() * tot = self.LUT.coef.sum(axis=-1) * for idx in range(self.LUT.shape[0]): # <<<<<<<<<<<<<< * t = tot[idx] * if t <= 0: */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_7 = __pyx_t_5; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { - __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { @@ -27378,16 +27183,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT if (likely(PyList_CheckExact(__pyx_t_7))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -27396,7 +27201,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } @@ -27405,40 +27210,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":1326 + /* "pyFAI/ext/_distortion.pyx":1350 * tot = self.LUT.coef.sum(axis=-1) * for idx in range(self.LUT.shape[0]): * t = tot[idx] # <<<<<<<<<<<<<< * if t <= 0: * lmask[idx] = 1 */ - __pyx_t_5 = PyObject_GetItem(__pyx_v_tot, __pyx_v_idx); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = PyObject_GetItem(__pyx_v_tot, __pyx_v_idx); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/_distortion.pyx":1327 + /* "pyFAI/ext/_distortion.pyx":1351 * for idx in range(self.LUT.shape[0]): * t = tot[idx] * if t <= 0: # <<<<<<<<<<<<<< * lmask[idx] = 1 * continue */ - __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_3) { - /* "pyFAI/ext/_distortion.pyx":1328 + /* "pyFAI/ext/_distortion.pyx":1352 * t = tot[idx] * if t <= 0: * lmask[idx] = 1 # <<<<<<<<<<<<<< * continue * val = lin[idx] / t */ - if (unlikely(PyObject_SetItem(__pyx_v_lmask, __pyx_v_idx, __pyx_int_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_lmask, __pyx_v_idx, __pyx_int_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1329 + /* "pyFAI/ext/_distortion.pyx":1353 * if t <= 0: * lmask[idx] = 1 * continue # <<<<<<<<<<<<<< @@ -27448,57 +27253,57 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT goto __pyx_L4_continue; } - /* "pyFAI/ext/_distortion.pyx":1330 + /* "pyFAI/ext/_distortion.pyx":1354 * lmask[idx] = 1 * continue * val = lin[idx] / t # <<<<<<<<<<<<<< * lout[self.LUT[idx].idx] += val * self.LUT[idx].coef * return out, mask */ - __pyx_t_5 = PyObject_GetItem(__pyx_v_lin, __pyx_v_idx); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = PyObject_GetItem(__pyx_v_lin, __pyx_v_idx); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_v_t); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_v_t); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1331 + /* "pyFAI/ext/_distortion.pyx":1355 * continue * val = lin[idx] / t * lout[self.LUT[idx].idx] += val * self.LUT[idx].coef # <<<<<<<<<<<<<< * return out, mask */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PyObject_GetItem(__pyx_t_6, __pyx_v_idx); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = PyObject_GetItem(__pyx_t_6, __pyx_v_idx); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_idx); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_idx); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyObject_GetItem(__pyx_v_lout, __pyx_t_6); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = PyObject_GetItem(__pyx_v_lout, __pyx_t_6); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_LUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_v_idx); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_v_idx); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_coef); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_coef); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Multiply(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_Multiply(__pyx_v_val, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_lout, __pyx_t_6, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_v_lout, __pyx_t_6, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/_distortion.pyx":1325 + /* "pyFAI/ext/_distortion.pyx":1349 * lin = image.ravel() * tot = self.LUT.coef.sum(axis=-1) * for idx in range(self.LUT.shape[0]): # <<<<<<<<<<<<<< @@ -27509,13 +27314,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_distortion.pyx":1332 + /* "pyFAI/ext/_distortion.pyx":1356 * val = lin[idx] / t * lout[self.LUT[idx].idx] += val * self.LUT[idx].coef * return out, mask # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_out); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_out); @@ -27527,7 +27332,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_12uncorrect(CYT __pyx_t_7 = 0; goto __pyx_L0; - /* "pyFAI/ext/_distortion.pyx":1310 + /* "pyFAI/ext/_distortion.pyx":1334 * return out[:img_shape[0], :img_shape[1]] * * def uncorrect(self, image): # <<<<<<<<<<<<<< @@ -40871,10 +40676,10 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_13_05_2016, __pyx_k_13_05_2016, sizeof(__pyx_k_13_05_2016), 0, 0, 1, 0}, {&__pyx_kp_s_1_5, __pyx_k_1_5, sizeof(__pyx_k_1_5), 0, 0, 1, 0}, {&__pyx_kp_s_2011_2016_ESRF, __pyx_k_2011_2016_ESRF, sizeof(__pyx_k_2011_2016_ESRF), 0, 0, 1, 0}, - {&__pyx_kp_s_27_10_2016, __pyx_k_27_10_2016, sizeof(__pyx_k_27_10_2016), 0, 0, 1, 0}, {&__pyx_n_s_A0, __pyx_k_A0, sizeof(__pyx_k_A0), 0, 0, 1, 1}, {&__pyx_kp_s_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, __pyx_k_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D, sizeof(__pyx_k_A0_s_A1_s_B0_s_B1_s_C0_s_C1_s_D), 0, 0, 1, 0}, {&__pyx_n_s_A1, __pyx_k_A1, sizeof(__pyx_k_A1), 0, 0, 1, 1}, @@ -41240,13 +41045,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_ord = __Pyx_GetBuiltinName(__pyx_n_s_ord); if (!__pyx_builtin_ord) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_ord = __Pyx_GetBuiltinName(__pyx_n_s_ord); if (!__pyx_builtin_ord) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -41267,557 +41072,557 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "pyFAI/ext/_distortion.pyx":249 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":251 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_pos(floating[:, :, :, ::1] pixel_corners not None, # <<<<<<<<<<<<<< * float pixel1, float pixel2, shape_out=None): * """Calculate the pixel boundary position on the regular grid */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); - /* "pyFAI/ext/_distortion.pyx":268 + /* "pyFAI/ext/_distortion.pyx":270 * * if (pixel1 == 0.0) or (pixel2 == 0): * raise RuntimeError("Pixel size cannot be null -> Zero division error") # <<<<<<<<<<<<<< * * dim0 = pixel_corners.shape[0] */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Pixel_size_cannot_be_null_Zero_d); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Pixel_size_cannot_be_null_Zero_d); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); - /* "pyFAI/ext/_distortion.pyx":306 + /* "pyFAI/ext/_distortion.pyx":308 * res = numpy.asarray(pos), int(delta0), int(delta1), \ * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) # <<<<<<<<<<<<<< * return res * */ - __pyx_tuple__9 = PyTuple_Pack(2, __pyx_float_0_0, __pyx_float_0_0); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__9 = PyTuple_Pack(2, __pyx_float_0_0, __pyx_float_0_0); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); - /* "pyFAI/ext/_distortion.pyx":268 + /* "pyFAI/ext/_distortion.pyx":270 * * if (pixel1 == 0.0) or (pixel2 == 0): * raise RuntimeError("Pixel size cannot be null -> Zero division error") # <<<<<<<<<<<<<< * * dim0 = pixel_corners.shape[0] */ - __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Pixel_size_cannot_be_null_Zero_d); if (unlikely(!__pyx_tuple__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Pixel_size_cannot_be_null_Zero_d); if (unlikely(!__pyx_tuple__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); - /* "pyFAI/ext/_distortion.pyx":306 + /* "pyFAI/ext/_distortion.pyx":308 * res = numpy.asarray(pos), int(delta0), int(delta1), \ * (int(ceil(all_max0 - all_min0)), int(ceil(all_max1 - all_min1))) if do_shape else shape_out, \ * (float(all_min0), float(all_min1)) if do_shape else (0.0, 0.0) # <<<<<<<<<<<<<< * return res * */ - __pyx_tuple__11 = PyTuple_Pack(2, __pyx_float_0_0, __pyx_float_0_0); if (unlikely(!__pyx_tuple__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__11 = PyTuple_Pack(2, __pyx_float_0_0, __pyx_float_0_0); if (unlikely(!__pyx_tuple__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); - /* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, */ - __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); - __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "pyFAI/ext/_distortion.pyx":544 + /* "pyFAI/ext/_distortion.pyx":553 * indptr = numpy.empty(bins + 1, dtype=numpy.int32) * indptr[0] = 0 * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) # <<<<<<<<<<<<<< * lut_size = indptr[bins] * */ - __pyx_slice__20 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__20 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__20); __Pyx_GIVEREF(__pyx_slice__20); - /* "pyFAI/ext/_distortion.pyx":550 + /* "pyFAI/ext/_distortion.pyx":559 * data = numpy.zeros(shape=lut_size, dtype=numpy.float32) * * indptr[1:] = bin_size.cumsum(dtype=numpy.int32) # <<<<<<<<<<<<<< * * logger.info("CSR matrix: %.3f MByte" % ((indices.nbytes + data.nbytes + indptr.nbytes) / 1.0e6)) */ - __pyx_slice__21 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__21 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__21); __Pyx_GIVEREF(__pyx_slice__21); - /* "pyFAI/ext/_distortion.pyx":653 + /* "pyFAI/ext/_distortion.pyx":662 * def calc_openmp(float[:, :, :, ::1] pos not None, * shape, * max_pixel_size=(8, 8), # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None, * format="csr", */ - __pyx_tuple__22 = PyTuple_Pack(2, __pyx_int_8, __pyx_int_8); if (unlikely(!__pyx_tuple__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__22 = PyTuple_Pack(2, __pyx_int_8, __pyx_int_8); if (unlikely(!__pyx_tuple__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); - /* "pyFAI/ext/_distortion.pyx":879 + /* "pyFAI/ext/_distortion.pyx":891 * new_image[:shape_img0, :shape_img1] = image * else: * new_image[:shape_img0, :] = image[:, :shape_in1] # <<<<<<<<<<<<<< * else: * if shape_img1 < shape_in1: */ - __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__24); __Pyx_GIVEREF(__pyx_slice__24); - __pyx_slice__25 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__25 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__25); __Pyx_GIVEREF(__pyx_slice__25); - /* "pyFAI/ext/_distortion.pyx":882 + /* "pyFAI/ext/_distortion.pyx":894 * else: * if shape_img1 < shape_in1: * new_image[:, :shape_img1] = image[:shape_in0, :] # <<<<<<<<<<<<<< * else: * new_image[:, :] = image[:shape_in0, :shape_in1] */ - __pyx_slice__26 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__26 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__26); __Pyx_GIVEREF(__pyx_slice__26); - __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__27); __Pyx_GIVEREF(__pyx_slice__27); - /* "pyFAI/ext/_distortion.pyx":884 + /* "pyFAI/ext/_distortion.pyx":896 * new_image[:, :shape_img1] = image[:shape_in0, :] * else: * new_image[:, :] = image[:shape_in0, :shape_in1] # <<<<<<<<<<<<<< * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) */ - __pyx_slice__28 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__28 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__28); __Pyx_GIVEREF(__pyx_slice__28); - __pyx_slice__29 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__29 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__29); __Pyx_GIVEREF(__pyx_slice__29); - __pyx_tuple__30 = PyTuple_Pack(2, __pyx_slice__28, __pyx_slice__29); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__30 = PyTuple_Pack(2, __pyx_slice__28, __pyx_slice__29); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30); - /* "pyFAI/ext/_distortion.pyx":957 + /* "pyFAI/ext/_distortion.pyx":972 * new_image[:shape_img0, :shape_img1] = image * else: * new_image[:shape_img0, :] = image[:, :shape_in1] # <<<<<<<<<<<<<< * else: * if shape_img1 < shape_in1: */ - __pyx_slice__31 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__31 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__31); __Pyx_GIVEREF(__pyx_slice__31); - __pyx_slice__32 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__32 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__32); __Pyx_GIVEREF(__pyx_slice__32); - /* "pyFAI/ext/_distortion.pyx":960 + /* "pyFAI/ext/_distortion.pyx":975 * else: * if shape_img1 < shape_in1: * new_image[:, :shape_img1] = image[:shape_in0, :] # <<<<<<<<<<<<<< * else: * new_image[:, :] = image[:shape_in0, :shape_in1] */ - __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__33); __Pyx_GIVEREF(__pyx_slice__33); - __pyx_slice__34 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__34 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__34); __Pyx_GIVEREF(__pyx_slice__34); - /* "pyFAI/ext/_distortion.pyx":962 + /* "pyFAI/ext/_distortion.pyx":977 * new_image[:, :shape_img1] = image[:shape_in0, :] * else: * new_image[:, :] = image[:shape_in0, :shape_in1] # <<<<<<<<<<<<<< * logger.warning("Patching image as image is %ix%i and expected input is %ix%i and output is %ix%i", * shape_img1, shape_img0, shape_in1, shape_in0, shape_out1, shape_out0) */ - __pyx_slice__35 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__35 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__35); __Pyx_GIVEREF(__pyx_slice__35); - __pyx_slice__36 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__36 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__36); __Pyx_GIVEREF(__pyx_slice__36); - __pyx_tuple__37 = PyTuple_Pack(2, __pyx_slice__35, __pyx_slice__36); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__37 = PyTuple_Pack(2, __pyx_slice__35, __pyx_slice__36); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__37); __Pyx_GIVEREF(__pyx_tuple__37); - /* "pyFAI/ext/_distortion.pyx":1116 + /* "pyFAI/ext/_distortion.pyx":1140 * logger.warning("makes little sense to correct for distortion non-flat detectors: %s", * self.detector) * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] # <<<<<<<<<<<<<< * pos_corners[:, :, 0] /= self.detector.pixel1 * pos_corners[:, :, 1] /= self.detector.pixel2 */ - __pyx_slice__38 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__38 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__38); __Pyx_GIVEREF(__pyx_slice__38); - __pyx_slice__39 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__39 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__39); __Pyx_GIVEREF(__pyx_slice__39); - __pyx_slice__40 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__40 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__40); __Pyx_GIVEREF(__pyx_slice__40); - __pyx_tuple__41 = PyTuple_Pack(3, __pyx_slice__39, __pyx_slice__40, __pyx_int_0); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__41 = PyTuple_Pack(3, __pyx_slice__39, __pyx_slice__40, __pyx_int_0); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__41); __Pyx_GIVEREF(__pyx_tuple__41); - __pyx_slice__42 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__42 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__42); __Pyx_GIVEREF(__pyx_slice__42); - __pyx_slice__43 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__43 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__43); __Pyx_GIVEREF(__pyx_slice__43); - __pyx_tuple__44 = PyTuple_Pack(3, __pyx_slice__42, __pyx_slice__43, __pyx_int_1); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__44 = PyTuple_Pack(3, __pyx_slice__42, __pyx_slice__43, __pyx_int_1); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44); - /* "pyFAI/ext/_distortion.pyx":1117 + /* "pyFAI/ext/_distortion.pyx":1141 * self.detector) * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] * pos_corners[:, :, 0] /= self.detector.pixel1 # <<<<<<<<<<<<<< * pos_corners[:, :, 1] /= self.detector.pixel2 * pos = numpy.empty((self.shape[0], self.shape[1], 4, 2), dtype=numpy.float32) */ - __pyx_slice__45 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__45 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__45); __Pyx_GIVEREF(__pyx_slice__45); - __pyx_slice__46 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__46 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__46); __Pyx_GIVEREF(__pyx_slice__46); - __pyx_tuple__47 = PyTuple_Pack(3, __pyx_slice__45, __pyx_slice__46, __pyx_int_0); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__47 = PyTuple_Pack(3, __pyx_slice__45, __pyx_slice__46, __pyx_int_0); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__47); __Pyx_GIVEREF(__pyx_tuple__47); - /* "pyFAI/ext/_distortion.pyx":1118 + /* "pyFAI/ext/_distortion.pyx":1142 * pos_corners[:, :, 0], pos_corners[:, :, 1] = p[:2] * pos_corners[:, :, 0] /= self.detector.pixel1 * pos_corners[:, :, 1] /= self.detector.pixel2 # <<<<<<<<<<<<<< * pos = numpy.empty((self.shape[0], self.shape[1], 4, 2), dtype=numpy.float32) * pos[:, :, 0, :] = pos_corners[:-1, :-1] */ - __pyx_slice__48 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__48 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__48); __Pyx_GIVEREF(__pyx_slice__48); - __pyx_slice__49 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__49 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__49); __Pyx_GIVEREF(__pyx_slice__49); - __pyx_tuple__50 = PyTuple_Pack(3, __pyx_slice__48, __pyx_slice__49, __pyx_int_1); if (unlikely(!__pyx_tuple__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__50 = PyTuple_Pack(3, __pyx_slice__48, __pyx_slice__49, __pyx_int_1); if (unlikely(!__pyx_tuple__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__50); __Pyx_GIVEREF(__pyx_tuple__50); - /* "pyFAI/ext/_distortion.pyx":1120 + /* "pyFAI/ext/_distortion.pyx":1144 * pos_corners[:, :, 1] /= self.detector.pixel2 * pos = numpy.empty((self.shape[0], self.shape[1], 4, 2), dtype=numpy.float32) * pos[:, :, 0, :] = pos_corners[:-1, :-1] # <<<<<<<<<<<<<< * pos[:, :, 1, :] = pos_corners[:-1, 1:] * pos[:, :, 2, :] = pos_corners[1:, 1:] */ - __pyx_slice__51 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__51 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__51); __Pyx_GIVEREF(__pyx_slice__51); - __pyx_slice__52 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__52 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__52); __Pyx_GIVEREF(__pyx_slice__52); - __pyx_tuple__53 = PyTuple_Pack(2, __pyx_slice__51, __pyx_slice__52); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__53 = PyTuple_Pack(2, __pyx_slice__51, __pyx_slice__52); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__53); __Pyx_GIVEREF(__pyx_tuple__53); - __pyx_slice__54 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__54 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__54); __Pyx_GIVEREF(__pyx_slice__54); - __pyx_slice__55 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__55 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__55); __Pyx_GIVEREF(__pyx_slice__55); - __pyx_slice__56 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__56 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__56); __Pyx_GIVEREF(__pyx_slice__56); - __pyx_tuple__57 = PyTuple_Pack(4, __pyx_slice__54, __pyx_slice__55, __pyx_int_0, __pyx_slice__56); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__57 = PyTuple_Pack(4, __pyx_slice__54, __pyx_slice__55, __pyx_int_0, __pyx_slice__56); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__57); __Pyx_GIVEREF(__pyx_tuple__57); - /* "pyFAI/ext/_distortion.pyx":1121 + /* "pyFAI/ext/_distortion.pyx":1145 * pos = numpy.empty((self.shape[0], self.shape[1], 4, 2), dtype=numpy.float32) * pos[:, :, 0, :] = pos_corners[:-1, :-1] * pos[:, :, 1, :] = pos_corners[:-1, 1:] # <<<<<<<<<<<<<< * pos[:, :, 2, :] = pos_corners[1:, 1:] * pos[:, :, 3, :] = pos_corners[1:, :-1] */ - __pyx_slice__58 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__58 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__58); __Pyx_GIVEREF(__pyx_slice__58); - __pyx_slice__59 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__59 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__59); __Pyx_GIVEREF(__pyx_slice__59); - __pyx_tuple__60 = PyTuple_Pack(2, __pyx_slice__58, __pyx_slice__59); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__60 = PyTuple_Pack(2, __pyx_slice__58, __pyx_slice__59); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__60); __Pyx_GIVEREF(__pyx_tuple__60); - __pyx_slice__61 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__61 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__61); __Pyx_GIVEREF(__pyx_slice__61); - __pyx_slice__62 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__62 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__62); __Pyx_GIVEREF(__pyx_slice__62); - __pyx_slice__63 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__63 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__63); __Pyx_GIVEREF(__pyx_slice__63); - __pyx_tuple__64 = PyTuple_Pack(4, __pyx_slice__61, __pyx_slice__62, __pyx_int_1, __pyx_slice__63); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__64 = PyTuple_Pack(4, __pyx_slice__61, __pyx_slice__62, __pyx_int_1, __pyx_slice__63); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__64); __Pyx_GIVEREF(__pyx_tuple__64); - /* "pyFAI/ext/_distortion.pyx":1122 + /* "pyFAI/ext/_distortion.pyx":1146 * pos[:, :, 0, :] = pos_corners[:-1, :-1] * pos[:, :, 1, :] = pos_corners[:-1, 1:] * pos[:, :, 2, :] = pos_corners[1:, 1:] # <<<<<<<<<<<<<< * pos[:, :, 3, :] = pos_corners[1:, :-1] * self.pos = pos */ - __pyx_slice__65 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__65 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__65); __Pyx_GIVEREF(__pyx_slice__65); - __pyx_slice__66 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__66 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__66); __Pyx_GIVEREF(__pyx_slice__66); - __pyx_tuple__67 = PyTuple_Pack(2, __pyx_slice__65, __pyx_slice__66); if (unlikely(!__pyx_tuple__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__67 = PyTuple_Pack(2, __pyx_slice__65, __pyx_slice__66); if (unlikely(!__pyx_tuple__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__67); __Pyx_GIVEREF(__pyx_tuple__67); - __pyx_slice__68 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__68 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__68); __Pyx_GIVEREF(__pyx_slice__68); - __pyx_slice__69 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__69 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__69); __Pyx_GIVEREF(__pyx_slice__69); - __pyx_slice__70 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__70 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__70); __Pyx_GIVEREF(__pyx_slice__70); - __pyx_tuple__71 = PyTuple_Pack(4, __pyx_slice__68, __pyx_slice__69, __pyx_int_2, __pyx_slice__70); if (unlikely(!__pyx_tuple__71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__71 = PyTuple_Pack(4, __pyx_slice__68, __pyx_slice__69, __pyx_int_2, __pyx_slice__70); if (unlikely(!__pyx_tuple__71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__71); __Pyx_GIVEREF(__pyx_tuple__71); - /* "pyFAI/ext/_distortion.pyx":1123 + /* "pyFAI/ext/_distortion.pyx":1147 * pos[:, :, 1, :] = pos_corners[:-1, 1:] * pos[:, :, 2, :] = pos_corners[1:, 1:] * pos[:, :, 3, :] = pos_corners[1:, :-1] # <<<<<<<<<<<<<< * self.pos = pos * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) */ - __pyx_slice__72 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__72 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__72); __Pyx_GIVEREF(__pyx_slice__72); - __pyx_slice__73 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__73 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__73); __Pyx_GIVEREF(__pyx_slice__73); - __pyx_tuple__74 = PyTuple_Pack(2, __pyx_slice__72, __pyx_slice__73); if (unlikely(!__pyx_tuple__74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__74 = PyTuple_Pack(2, __pyx_slice__72, __pyx_slice__73); if (unlikely(!__pyx_tuple__74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__74); __Pyx_GIVEREF(__pyx_tuple__74); - __pyx_slice__75 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__75 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__75); __Pyx_GIVEREF(__pyx_slice__75); - __pyx_slice__76 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__76 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__76); __Pyx_GIVEREF(__pyx_slice__76); - __pyx_slice__77 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__77 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__77); __Pyx_GIVEREF(__pyx_slice__77); - __pyx_tuple__78 = PyTuple_Pack(4, __pyx_slice__75, __pyx_slice__76, __pyx_int_3, __pyx_slice__77); if (unlikely(!__pyx_tuple__78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__78 = PyTuple_Pack(4, __pyx_slice__75, __pyx_slice__76, __pyx_int_3, __pyx_slice__77); if (unlikely(!__pyx_tuple__78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__78); __Pyx_GIVEREF(__pyx_tuple__78); - /* "pyFAI/ext/_distortion.pyx":1125 + /* "pyFAI/ext/_distortion.pyx":1149 * pos[:, :, 3, :] = pos_corners[1:, :-1] * self.pos = pos * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) # <<<<<<<<<<<<<< * self.delta1 = int((numpy.ceil(pos_corners[:, 1:, 1]) - numpy.floor(pos_corners[:, :-1, 1])).max()) * return self.pos */ - __pyx_slice__79 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__79 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__79); __Pyx_GIVEREF(__pyx_slice__79); - __pyx_slice__80 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__80 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__80); __Pyx_GIVEREF(__pyx_slice__80); - __pyx_tuple__81 = PyTuple_Pack(3, __pyx_slice__79, __pyx_slice__80, __pyx_int_0); if (unlikely(!__pyx_tuple__81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__81 = PyTuple_Pack(3, __pyx_slice__79, __pyx_slice__80, __pyx_int_0); if (unlikely(!__pyx_tuple__81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__81); __Pyx_GIVEREF(__pyx_tuple__81); - __pyx_slice__82 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__82 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__82); __Pyx_GIVEREF(__pyx_slice__82); - __pyx_slice__83 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__83 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__83); __Pyx_GIVEREF(__pyx_slice__83); - __pyx_tuple__84 = PyTuple_Pack(3, __pyx_slice__82, __pyx_slice__83, __pyx_int_0); if (unlikely(!__pyx_tuple__84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__84 = PyTuple_Pack(3, __pyx_slice__82, __pyx_slice__83, __pyx_int_0); if (unlikely(!__pyx_tuple__84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__84); __Pyx_GIVEREF(__pyx_tuple__84); - /* "pyFAI/ext/_distortion.pyx":1126 + /* "pyFAI/ext/_distortion.pyx":1150 * self.pos = pos * self.delta0 = int((numpy.ceil(pos_corners[1:, :, 0]) - numpy.floor(pos_corners[:-1, :, 0])).max()) * self.delta1 = int((numpy.ceil(pos_corners[:, 1:, 1]) - numpy.floor(pos_corners[:, :-1, 1])).max()) # <<<<<<<<<<<<<< * return self.pos * */ - __pyx_slice__85 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__85 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__85); __Pyx_GIVEREF(__pyx_slice__85); - __pyx_slice__86 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__86 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__86); __Pyx_GIVEREF(__pyx_slice__86); - __pyx_tuple__87 = PyTuple_Pack(3, __pyx_slice__85, __pyx_slice__86, __pyx_int_1); if (unlikely(!__pyx_tuple__87)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__87 = PyTuple_Pack(3, __pyx_slice__85, __pyx_slice__86, __pyx_int_1); if (unlikely(!__pyx_tuple__87)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__87); __Pyx_GIVEREF(__pyx_tuple__87); - __pyx_slice__88 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__88 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__88); __Pyx_GIVEREF(__pyx_slice__88); - __pyx_slice__89 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__89 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__89); __Pyx_GIVEREF(__pyx_slice__89); - __pyx_tuple__90 = PyTuple_Pack(3, __pyx_slice__88, __pyx_slice__89, __pyx_int_1); if (unlikely(!__pyx_tuple__90)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__90 = PyTuple_Pack(3, __pyx_slice__88, __pyx_slice__89, __pyx_int_1); if (unlikely(!__pyx_tuple__90)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__90); __Pyx_GIVEREF(__pyx_tuple__90); - /* "pyFAI/ext/_distortion.pyx":1107 + /* "pyFAI/ext/_distortion.pyx":1131 * def calc_pos(self): * if self.pos is None: * with self._sem: # <<<<<<<<<<<<<< * if self.pos is None: * pos_corners = numpy.empty((self.shape[0] + 1, self.shape[1] + 1, 2), dtype=numpy.float64) */ - __pyx_tuple__91 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__91)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__91 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__91)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__91); __Pyx_GIVEREF(__pyx_tuple__91); - /* "pyFAI/ext/_distortion.pyx":1153 + /* "pyFAI/ext/_distortion.pyx":1177 * if self.lut_size is None: * shape0, shape1 = self.shape * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) # <<<<<<<<<<<<<< * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) */ - __pyx_slice__92 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__92)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__92 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__92)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__92); __Pyx_GIVEREF(__pyx_slice__92); - __pyx_slice__93 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__93)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__93 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__93)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__93); __Pyx_GIVEREF(__pyx_slice__93); - __pyx_slice__94 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__94)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__94 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__94)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__94); __Pyx_GIVEREF(__pyx_slice__94); - __pyx_tuple__95 = PyTuple_Pack(4, __pyx_slice__92, __pyx_slice__93, __pyx_slice__94, __pyx_int_0); if (unlikely(!__pyx_tuple__95)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__95 = PyTuple_Pack(4, __pyx_slice__92, __pyx_slice__93, __pyx_slice__94, __pyx_int_0); if (unlikely(!__pyx_tuple__95)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__95); __Pyx_GIVEREF(__pyx_tuple__95); - /* "pyFAI/ext/_distortion.pyx":1154 + /* "pyFAI/ext/_distortion.pyx":1178 * shape0, shape1 = self.shape * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) # <<<<<<<<<<<<<< * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) */ - __pyx_slice__96 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__96)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__96 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__96)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__96); __Pyx_GIVEREF(__pyx_slice__96); - __pyx_slice__97 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__97)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__97 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__97)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__97); __Pyx_GIVEREF(__pyx_slice__97); - __pyx_slice__98 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__98)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__98 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__98)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__98); __Pyx_GIVEREF(__pyx_slice__98); - __pyx_tuple__99 = PyTuple_Pack(4, __pyx_slice__96, __pyx_slice__97, __pyx_slice__98, __pyx_int_1); if (unlikely(!__pyx_tuple__99)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__99 = PyTuple_Pack(4, __pyx_slice__96, __pyx_slice__97, __pyx_slice__98, __pyx_int_1); if (unlikely(!__pyx_tuple__99)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__99); __Pyx_GIVEREF(__pyx_tuple__99); - /* "pyFAI/ext/_distortion.pyx":1155 + /* "pyFAI/ext/_distortion.pyx":1179 * pos0min = numpy.floor(pos[:, :, :, 0].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[0]) * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) # <<<<<<<<<<<<<< * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) */ - __pyx_slice__100 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__100 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__100); __Pyx_GIVEREF(__pyx_slice__100); - __pyx_slice__101 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__101)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__101 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__101)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__101); __Pyx_GIVEREF(__pyx_slice__101); - __pyx_slice__102 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__102)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__102 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__102)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__102); __Pyx_GIVEREF(__pyx_slice__102); - __pyx_tuple__103 = PyTuple_Pack(4, __pyx_slice__100, __pyx_slice__101, __pyx_slice__102, __pyx_int_0); if (unlikely(!__pyx_tuple__103)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__103 = PyTuple_Pack(4, __pyx_slice__100, __pyx_slice__101, __pyx_slice__102, __pyx_int_0); if (unlikely(!__pyx_tuple__103)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__103); __Pyx_GIVEREF(__pyx_tuple__103); - /* "pyFAI/ext/_distortion.pyx":1156 + /* "pyFAI/ext/_distortion.pyx":1180 * pos1min = numpy.floor(pos[:, :, :, 1].min(axis=-1)).astype(numpy.int32).clip(0, self.shape[1]) * pos0max = (numpy.ceil(pos[:, :, :, 0].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[0]) * pos1max = (numpy.ceil(pos[:, :, :, 1].max(axis=-1)).astype(numpy.int32) + 1).clip(0, self.shape[1]) # <<<<<<<<<<<<<< * lut_size = numpy.zeros(self.shape, dtype=numpy.int32) * with nogil: */ - __pyx_slice__104 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__104)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__104 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__104)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__104); __Pyx_GIVEREF(__pyx_slice__104); - __pyx_slice__105 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__105 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__105); __Pyx_GIVEREF(__pyx_slice__105); - __pyx_slice__106 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__106)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_slice__106 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__106)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_slice__106); __Pyx_GIVEREF(__pyx_slice__106); - __pyx_tuple__107 = PyTuple_Pack(4, __pyx_slice__104, __pyx_slice__105, __pyx_slice__106, __pyx_int_1); if (unlikely(!__pyx_tuple__107)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__107 = PyTuple_Pack(4, __pyx_slice__104, __pyx_slice__105, __pyx_slice__106, __pyx_int_1); if (unlikely(!__pyx_tuple__107)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__107); __Pyx_GIVEREF(__pyx_tuple__107); - /* "pyFAI/ext/_distortion.pyx":1150 + /* "pyFAI/ext/_distortion.pyx":1174 * pos = self.pos * if self.lut_size is None: * with self._sem: # <<<<<<<<<<<<<< * if self.lut_size is None: * shape0, shape1 = self.shape */ - __pyx_tuple__108 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__108)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__108 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__108)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__108); __Pyx_GIVEREF(__pyx_tuple__108); - __pyx_tuple__109 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__109)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__109 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__109)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__109); __Pyx_GIVEREF(__pyx_tuple__109); - /* "pyFAI/ext/_distortion.pyx":1185 + /* "pyFAI/ext/_distortion.pyx":1209 * self.calc_LUT_size() * if self.LUT is None: * with self._sem: # <<<<<<<<<<<<<< * if self.LUT is None: * pos = self.pos */ - __pyx_tuple__110 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__110)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__110 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__110)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__110); __Pyx_GIVEREF(__pyx_tuple__110); @@ -42030,200 +41835,200 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__129); __Pyx_GIVEREF(__pyx_tuple__129); - /* "pyFAI/ext/_distortion.pyx":249 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":251 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_pos(floating[:, :, :, ::1] pixel_corners not None, # <<<<<<<<<<<<<< * float pixel1, float pixel2, shape_out=None): * """Calculate the pixel boundary position on the regular grid */ - __pyx_tuple__130 = PyTuple_Pack(26, __pyx_n_s_pixel_corners, __pyx_n_s_pixel1, __pyx_n_s_pixel2, __pyx_n_s_shape_out, __pyx_n_s_pos, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_dim0, __pyx_n_s_dim1, __pyx_n_s_nb_corners, __pyx_n_s_do_shape, __pyx_n_s_BIG, __pyx_n_s_min0, __pyx_n_s_min1, __pyx_n_s_max0, __pyx_n_s_max1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_all_min0, __pyx_n_s_all_max0, __pyx_n_s_all_max1, __pyx_n_s_all_min1, __pyx_n_s_p0, __pyx_n_s_p1, __pyx_n_s_res); if (unlikely(!__pyx_tuple__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__130 = PyTuple_Pack(26, __pyx_n_s_pixel_corners, __pyx_n_s_pixel1, __pyx_n_s_pixel2, __pyx_n_s_shape_out, __pyx_n_s_pos, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_dim0, __pyx_n_s_dim1, __pyx_n_s_nb_corners, __pyx_n_s_do_shape, __pyx_n_s_BIG, __pyx_n_s_min0, __pyx_n_s_min1, __pyx_n_s_max0, __pyx_n_s_max1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_all_min0, __pyx_n_s_all_max0, __pyx_n_s_all_max1, __pyx_n_s_all_min1, __pyx_n_s_p0, __pyx_n_s_p1, __pyx_n_s_res); if (unlikely(!__pyx_tuple__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__130); __Pyx_GIVEREF(__pyx_tuple__130); - __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(4, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_pos, 249, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(4, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_pos, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, */ - __pyx_tuple__132 = PyTuple_Pack(30, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_mask, __pyx_n_s_offset, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_l, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_min0, __pyx_n_s_min1, __pyx_n_s_max0, __pyx_n_s_max1, __pyx_n_s_lut_size, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_do_mask, __pyx_n_s_cmask, __pyx_n_s_err); if (unlikely(!__pyx_tuple__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__132 = PyTuple_Pack(30, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_mask, __pyx_n_s_offset, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_l, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_min0, __pyx_n_s_min1, __pyx_n_s_max0, __pyx_n_s_max1, __pyx_n_s_lut_size, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_do_mask, __pyx_n_s_cmask, __pyx_n_s_err); if (unlikely(!__pyx_tuple__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__132); __Pyx_GIVEREF(__pyx_tuple__132); - __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(4, 0, 30, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_size, 312, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(4, 0, 30, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_size, 317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":371 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":378 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_LUT(float[:, :, :, ::1] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """ */ - __pyx_tuple__134 = PyTuple_Pack(50, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_bin_size, __pyx_n_s_max_pixel_size, __pyx_n_s_mask, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_size, __pyx_n_s_k, __pyx_n_s_idx, __pyx_n_s_err_cnt, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_foffset0, __pyx_n_s_foffset1, __pyx_n_s_lut, __pyx_n_s_do_mask, __pyx_n_s_buffer, __pyx_n_s_outMax, __pyx_n_s_buffer_nbytes, __pyx_n_s_lut_total_size, __pyx_n_s_tmp_ary); if (unlikely(!__pyx_tuple__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__134 = PyTuple_Pack(50, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_bin_size, __pyx_n_s_max_pixel_size, __pyx_n_s_mask, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_size, __pyx_n_s_k, __pyx_n_s_idx, __pyx_n_s_err_cnt, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_foffset0, __pyx_n_s_foffset1, __pyx_n_s_lut, __pyx_n_s_do_mask, __pyx_n_s_buffer, __pyx_n_s_outMax, __pyx_n_s_buffer_nbytes, __pyx_n_s_lut_total_size, __pyx_n_s_tmp_ary); if (unlikely(!__pyx_tuple__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__134); __Pyx_GIVEREF(__pyx_tuple__134); - __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(5, 0, 50, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_LUT, 371, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(5, 0, 50, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_LUT, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":513 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":522 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_CSR(float[:, :, :, :] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """Calculate the Look-up table as CSR format */ - __pyx_tuple__136 = PyTuple_Pack(51, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_bin_size, __pyx_n_s_max_pixel_size, __pyx_n_s_mask, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_bins, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_idx, __pyx_n_s_tmp_index, __pyx_n_s_err_cnt, __pyx_n_s_lut_size, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_foffset0, __pyx_n_s_foffset1, __pyx_n_s_indptr, __pyx_n_s_indices, __pyx_n_s_data, __pyx_n_s_outMax, __pyx_n_s_buffer, __pyx_n_s_do_mask); if (unlikely(!__pyx_tuple__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__136 = PyTuple_Pack(51, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_bin_size, __pyx_n_s_max_pixel_size, __pyx_n_s_mask, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_bins, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_idx, __pyx_n_s_tmp_index, __pyx_n_s_err_cnt, __pyx_n_s_lut_size, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_foffset0, __pyx_n_s_foffset1, __pyx_n_s_indptr, __pyx_n_s_indices, __pyx_n_s_data, __pyx_n_s_outMax, __pyx_n_s_buffer, __pyx_n_s_do_mask); if (unlikely(!__pyx_tuple__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__136); __Pyx_GIVEREF(__pyx_tuple__136); - __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(5, 0, 51, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_CSR, 513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(5, 0, 51, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_CSR, 522, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":651 + /* "pyFAI/ext/_distortion.pyx":660 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_openmp(float[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * max_pixel_size=(8, 8), */ - __pyx_tuple__138 = PyTuple_Pack(64, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_max_pixel_size, __pyx_n_s_mask, __pyx_n_s_format, __pyx_n_s_bins_per_pixel, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_size_in, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_bins, __pyx_n_s_large_size, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_i0, __pyx_n_s_i1, __pyx_n_s_lut_size, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_counter, __pyx_n_s_bin_number, __pyx_n_s_idx, __pyx_n_s_err_cnt, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_foffset0, __pyx_n_s_foffset1, __pyx_n_s_indptr, __pyx_n_s_indices, __pyx_n_s_idx_bin, __pyx_n_s_idx_pixel, __pyx_n_s_pixel_count, __pyx_n_s_data, __pyx_n_s_large_data, __pyx_n_s_buffer, __pyx_n_s_do_mask, __pyx_n_s_lut, __pyx_n_s_res); if (unlikely(!__pyx_tuple__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__138 = PyTuple_Pack(64, __pyx_n_s_pos, __pyx_n_s_shape, __pyx_n_s_max_pixel_size, __pyx_n_s_mask, __pyx_n_s_format, __pyx_n_s_bins_per_pixel, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_size_in, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_bins, __pyx_n_s_large_size, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_i0, __pyx_n_s_i1, __pyx_n_s_lut_size, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_counter, __pyx_n_s_bin_number, __pyx_n_s_idx, __pyx_n_s_err_cnt, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_foffset0, __pyx_n_s_foffset1, __pyx_n_s_indptr, __pyx_n_s_indices, __pyx_n_s_idx_bin, __pyx_n_s_idx_pixel, __pyx_n_s_pixel_count, __pyx_n_s_data, __pyx_n_s_large_data, __pyx_n_s_buffer, __pyx_n_s_do_mask, __pyx_n_s_lut, __pyx_n_s_res); if (unlikely(!__pyx_tuple__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__138); __Pyx_GIVEREF(__pyx_tuple__138); - __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(6, 0, 64, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__138, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_openmp, 651, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(6, 0, 64, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__138, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_openmp, 660, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":846 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":858 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_LUT(image, shape_in, shape_out, lut_point[:, ::1] LUT not None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """Correct an image based on the look-up table calculated ... * */ - __pyx_tuple__140 = PyTuple_Pack(31, __pyx_n_s_image, __pyx_n_s_shape_in, __pyx_n_s_shape_out, __pyx_n_s_LUT, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_lshape0, __pyx_n_s_lshape1, __pyx_n_s_idx, __pyx_n_s_size, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_shape_img0, __pyx_n_s_shape_img1, __pyx_n_s_coef, __pyx_n_s_sum, __pyx_n_s_error, __pyx_n_s_t, __pyx_n_s_y, __pyx_n_s_value, __pyx_n_s_cdummy, __pyx_n_s_cdelta_dummy, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_do_dummy, __pyx_n_s_new_image, __pyx_n_s_out); if (unlikely(!__pyx_tuple__140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__140 = PyTuple_Pack(31, __pyx_n_s_image, __pyx_n_s_shape_in, __pyx_n_s_shape_out, __pyx_n_s_LUT, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_lshape0, __pyx_n_s_lshape1, __pyx_n_s_idx, __pyx_n_s_size, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_shape_img0, __pyx_n_s_shape_img1, __pyx_n_s_coef, __pyx_n_s_sum, __pyx_n_s_error, __pyx_n_s_t, __pyx_n_s_y, __pyx_n_s_value, __pyx_n_s_cdummy, __pyx_n_s_cdelta_dummy, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_do_dummy, __pyx_n_s_new_image, __pyx_n_s_out); if (unlikely(!__pyx_tuple__140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__140); __Pyx_GIVEREF(__pyx_tuple__140); - __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(6, 0, 31, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__140, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_correct_LUT, 846, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(6, 0, 31, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__140, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_correct_LUT, 858, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":921 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":936 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * Correct an image based on the look-up table calculated ... */ - __pyx_tuple__142 = PyTuple_Pack(34, __pyx_n_s_image, __pyx_n_s_shape_in, __pyx_n_s_shape_out, __pyx_n_s_LUT, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_idx, __pyx_n_s_size, __pyx_n_s_bins, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_shape_img0, __pyx_n_s_shape_img1, __pyx_n_s_coef, __pyx_n_s_tmp, __pyx_n_s_error, __pyx_n_s_sum, __pyx_n_s_y, __pyx_n_s_t, __pyx_n_s_value, __pyx_n_s_cdummy, __pyx_n_s_cdelta_dummy, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_data, __pyx_n_s_indices, __pyx_n_s_indptr, __pyx_n_s_do_dummy, __pyx_n_s_new_image, __pyx_n_s_out); if (unlikely(!__pyx_tuple__142)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__142 = PyTuple_Pack(34, __pyx_n_s_image, __pyx_n_s_shape_in, __pyx_n_s_shape_out, __pyx_n_s_LUT, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_idx, __pyx_n_s_size, __pyx_n_s_bins, __pyx_n_s_shape_in0, __pyx_n_s_shape_in1, __pyx_n_s_shape_out0, __pyx_n_s_shape_out1, __pyx_n_s_shape_img0, __pyx_n_s_shape_img1, __pyx_n_s_coef, __pyx_n_s_tmp, __pyx_n_s_error, __pyx_n_s_sum, __pyx_n_s_y, __pyx_n_s_t, __pyx_n_s_value, __pyx_n_s_cdummy, __pyx_n_s_cdelta_dummy, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_data, __pyx_n_s_indices, __pyx_n_s_indptr, __pyx_n_s_do_dummy, __pyx_n_s_new_image, __pyx_n_s_out); if (unlikely(!__pyx_tuple__142)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__142); __Pyx_GIVEREF(__pyx_tuple__142); - __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(6, 0, 34, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__142, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_correct_CSR, 921, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(6, 0, 34, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__142, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_correct_CSR, 936, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":998 - * - * + /* "pyFAI/ext/_distortion.pyx":1017 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_LUT(image, shape, lut_point[:, :]LUT): # <<<<<<<<<<<<<< * """ * Take an image which has been corrected and transform it into it's raw (with loss of information) */ - __pyx_tuple__144 = PyTuple_Pack(13, __pyx_n_s_image, __pyx_n_s_shape, __pyx_n_s_LUT, __pyx_n_s_idx, __pyx_n_s_j, __pyx_n_s_total, __pyx_n_s_coef, __pyx_n_s_out, __pyx_n_s_mask, __pyx_n_s_lmask, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_val); if (unlikely(!__pyx_tuple__144)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__144 = PyTuple_Pack(13, __pyx_n_s_image, __pyx_n_s_shape, __pyx_n_s_LUT, __pyx_n_s_idx, __pyx_n_s_j, __pyx_n_s_total, __pyx_n_s_coef, __pyx_n_s_out, __pyx_n_s_mask, __pyx_n_s_lmask, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_val); if (unlikely(!__pyx_tuple__144)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__144); __Pyx_GIVEREF(__pyx_tuple__144); - __pyx_codeobj__145 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_uncorrect_LUT, 998, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__145)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__145 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_uncorrect_LUT, 1017, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__145)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1031 - * - * + /* "pyFAI/ext/_distortion.pyx":1055 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_CSR(image, shape, LUT): # <<<<<<<<<<<<<< - * """ - * Take an image which has been corrected and transform it into it's raw (with loss of information) + * """Take an image which has been corrected and transform it into it's raw (with loss of information) + * */ - __pyx_tuple__146 = PyTuple_Pack(17, __pyx_n_s_image, __pyx_n_s_shape, __pyx_n_s_LUT, __pyx_n_s_idx, __pyx_n_s_j, __pyx_n_s_nbins, __pyx_n_s_total, __pyx_n_s_coef, __pyx_n_s_lmask, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_data, __pyx_n_s_indices, __pyx_n_s_indptr, __pyx_n_s_out, __pyx_n_s_mask, __pyx_n_s_val); if (unlikely(!__pyx_tuple__146)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__146 = PyTuple_Pack(17, __pyx_n_s_image, __pyx_n_s_shape, __pyx_n_s_LUT, __pyx_n_s_idx, __pyx_n_s_j, __pyx_n_s_nbins, __pyx_n_s_total, __pyx_n_s_coef, __pyx_n_s_lmask, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_data, __pyx_n_s_indices, __pyx_n_s_indptr, __pyx_n_s_out, __pyx_n_s_mask, __pyx_n_s_val); if (unlikely(!__pyx_tuple__146)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__146); __Pyx_GIVEREF(__pyx_tuple__146); - __pyx_codeobj__147 = (PyObject*)__Pyx_PyCode_New(3, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__146, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_uncorrect_CSR, 1031, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__147 = (PyObject*)__Pyx_PyCode_New(3, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__146, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_uncorrect_CSR, 1055, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1082 + /* "pyFAI/ext/_distortion.pyx":1106 * * """ * def __init__(self, detector="detector", shape=None): # <<<<<<<<<<<<<< * """ - * @param detector: detector instance or detector name + * :param detector: detector instance or detector name */ - __pyx_tuple__148 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_detector, __pyx_n_s_shape, __pyx_n_s_i); if (unlikely(!__pyx_tuple__148)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__148 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_detector, __pyx_n_s_shape, __pyx_n_s_i); if (unlikely(!__pyx_tuple__148)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__148); __Pyx_GIVEREF(__pyx_tuple__148); - __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__148, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init, 1082, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_tuple__150 = PyTuple_Pack(2, ((PyObject*)__pyx_n_s_detector), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__148, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init, 1106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__150 = PyTuple_Pack(2, ((PyObject*)__pyx_n_s_detector), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__150); __Pyx_GIVEREF(__pyx_tuple__150); - /* "pyFAI/ext/_distortion.pyx":1101 + /* "pyFAI/ext/_distortion.pyx":1125 * self.delta0 = self.delta1 = None # max size of an pixel on a regular grid ... * * def __repr__(self): # <<<<<<<<<<<<<< * return os.linesep.join(["Distortion correction for detector:", * self.detector.__repr__()]) */ - __pyx_tuple__151 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__151 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__151); __Pyx_GIVEREF(__pyx_tuple__151); - __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_repr, 1101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_repr, 1125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1105 + /* "pyFAI/ext/_distortion.pyx":1129 * self.detector.__repr__()]) * * def calc_pos(self): # <<<<<<<<<<<<<< * if self.pos is None: * with self._sem: */ - __pyx_tuple__153 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_pos_corners, __pyx_n_s_d1, __pyx_n_s_d2, __pyx_n_s_p, __pyx_n_s_pos); if (unlikely(!__pyx_tuple__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__153 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_pos_corners, __pyx_n_s_d1, __pyx_n_s_d2, __pyx_n_s_p, __pyx_n_s_pos); if (unlikely(!__pyx_tuple__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__153); __Pyx_GIVEREF(__pyx_tuple__153); - __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_pos, 1105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_pos, 1129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1131 + /* "pyFAI/ext/_distortion.pyx":1155 * @cython.wraparound(False) * @cython.boundscheck(False) * def calc_LUT_size(self): # <<<<<<<<<<<<<< * """ * Considering the "half-CCD" spline from ID11 which describes a (1025,2048) detector, */ - __pyx_tuple__155 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_l, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_pos, __pyx_n_s_pos0min, __pyx_n_s_pos1min, __pyx_n_s_pos0max, __pyx_n_s_pos1max, __pyx_n_s_lut_size); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__155 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_l, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_pos, __pyx_n_s_pos0min, __pyx_n_s_pos1min, __pyx_n_s_pos0max, __pyx_n_s_pos1max, __pyx_n_s_lut_size); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__155); __Pyx_GIVEREF(__pyx_tuple__155); - __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(1, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_LUT_size, 1131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(1, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_LUT_size, 1155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1170 + /* "pyFAI/ext/_distortion.pyx":1194 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_LUT(self): # <<<<<<<<<<<<<< * cdef: * int i, j, ms, ml, ns, nl, shape0, shape1, delta0, delta1, buffer_size, i0, i1, size */ - __pyx_tuple__157 = PyTuple_Pack(43, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_buffer_size, __pyx_n_s_i0, __pyx_n_s_i1, __pyx_n_s_size, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_k, __pyx_n_s_idx, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_pos, __pyx_n_s_lut, __pyx_n_s_outMax, __pyx_n_s_buffer); if (unlikely(!__pyx_tuple__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__157 = PyTuple_Pack(43, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_ms, __pyx_n_s_ml, __pyx_n_s_ns, __pyx_n_s_nl, __pyx_n_s_shape0, __pyx_n_s_shape1, __pyx_n_s_delta0, __pyx_n_s_delta1, __pyx_n_s_buffer_size, __pyx_n_s_i0, __pyx_n_s_i1, __pyx_n_s_size, __pyx_n_s_offset0, __pyx_n_s_offset1, __pyx_n_s_box_size0, __pyx_n_s_box_size1, __pyx_n_s_k, __pyx_n_s_idx, __pyx_n_s_A0, __pyx_n_s_A1, __pyx_n_s_B0, __pyx_n_s_B1, __pyx_n_s_C0, __pyx_n_s_C1, __pyx_n_s_D0, __pyx_n_s_D1, __pyx_n_s_pAB, __pyx_n_s_pBC, __pyx_n_s_pCD, __pyx_n_s_pDA, __pyx_n_s_cAB, __pyx_n_s_cBC, __pyx_n_s_cCD, __pyx_n_s_cDA, __pyx_n_s_area, __pyx_n_s_value, __pyx_n_s_pos, __pyx_n_s_lut, __pyx_n_s_outMax, __pyx_n_s_buffer); if (unlikely(!__pyx_tuple__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__157); __Pyx_GIVEREF(__pyx_tuple__157); - __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(1, 0, 43, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_LUT, 1170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(1, 0, 43, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_LUT, 1194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1269 + /* "pyFAI/ext/_distortion.pyx":1293 * @cython.wraparound(False) * @cython.boundscheck(False) * def correct(self, image): # <<<<<<<<<<<<<< * """ * Correct an image based on the look-up table calculated ... */ - __pyx_tuple__159 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_lshape0, __pyx_n_s_lshape1, __pyx_n_s_idx, __pyx_n_s_size, __pyx_n_s_coef, __pyx_n_s_LUT, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_img_shape, __pyx_n_s_new_image, __pyx_n_s_out); if (unlikely(!__pyx_tuple__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__159 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_lshape0, __pyx_n_s_lshape1, __pyx_n_s_idx, __pyx_n_s_size, __pyx_n_s_coef, __pyx_n_s_LUT, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_img_shape, __pyx_n_s_new_image, __pyx_n_s_out); if (unlikely(!__pyx_tuple__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__159); __Pyx_GIVEREF(__pyx_tuple__159); - __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_correct, 1269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_correct, 1293, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_distortion.pyx":1310 + /* "pyFAI/ext/_distortion.pyx":1334 * return out[:img_shape[0], :img_shape[1]] * * def uncorrect(self, image): # <<<<<<<<<<<<<< * """ * Take an image which has been corrected and transform it into it's raw (with loss of information) */ - __pyx_tuple__161 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_out, __pyx_n_s_mask, __pyx_n_s_lmask, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_tot, __pyx_n_s_idx, __pyx_n_s_t, __pyx_n_s_val); if (unlikely(!__pyx_tuple__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__161 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_out, __pyx_n_s_mask, __pyx_n_s_lmask, __pyx_n_s_lout, __pyx_n_s_lin, __pyx_n_s_tot, __pyx_n_s_idx, __pyx_n_s_t, __pyx_n_s_val); if (unlikely(!__pyx_tuple__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__161); __Pyx_GIVEREF(__pyx_tuple__161); - __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_uncorrect, 1310, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_uncorrect, 1334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -42466,7 +42271,7 @@ PyMODINIT_FUNC PyInit__distortion(void) * * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __license__ = "MIT" - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -42474,7 +42279,7 @@ PyMODINIT_FUNC PyInit__distortion(void) * * __author__ = "Jerome Kieffer" * __license__ = "MIT" # <<<<<<<<<<<<<< - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2016, ESRF" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -42482,15 +42287,15 @@ PyMODINIT_FUNC PyInit__distortion(void) /* "pyFAI/ext/_distortion.pyx":31 * __author__ = "Jerome Kieffer" * __license__ = "MIT" - * __date__ = "27/10/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __copyright__ = "2011-2016, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_27_10_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_distortion.pyx":32 * __license__ = "MIT" - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2016, ESRF" # <<<<<<<<<<<<<< * __contact__ = "jerome.kieffer@esrf.fr" * @@ -42498,7 +42303,7 @@ PyMODINIT_FUNC PyInit__distortion(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_copyright, __pyx_kp_s_2011_2016_ESRF) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_distortion.pyx":33 - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2016, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< * @@ -42925,14 +42730,14 @@ PyMODINIT_FUNC PyInit__distortion(void) __pyx_L12_bool_binop_done:; __pyx_v_5pyFAI_3ext_11_distortion_NEED_DECREF = __pyx_t_9; - /* "pyFAI/ext/_distortion.pyx":249 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":251 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_pos(floating[:, :, :, ::1] pixel_corners not None, # <<<<<<<<<<<<<< * float pixel1, float pixel2, shape_out=None): * """Calculate the pixel boundary position on the regular grid */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(Py_None); PyTuple_SET_ITEM(__pyx_t_2, 0, Py_None); @@ -42940,46 +42745,46 @@ PyMODINIT_FUNC PyInit__distortion(void) __Pyx_INCREF(Py_None); __pyx_k_ = Py_None; __Pyx_GIVEREF(Py_None); - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_5pyFAI_3ext_11_distortion_23calc_pos, 0, __pyx_n_s_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_5pyFAI_3ext_11_distortion_23calc_pos, 0, __pyx_n_s_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, sizeof(__pyx_defaults2), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, sizeof(__pyx_defaults2), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_INCREF(Py_None); __Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_t_7)->__pyx_arg_shape_out = Py_None; __Pyx_GIVEREF(Py_None); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_t_2); __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_7, __pyx_pf_5pyFAI_3ext_11_distortion_38__defaults__); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_5pyFAI_3ext_11_distortion_25calc_pos, 0, __pyx_n_s_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_5pyFAI_3ext_11_distortion_25calc_pos, 0, __pyx_n_s_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, sizeof(__pyx_defaults3), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, sizeof(__pyx_defaults3), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_INCREF(Py_None); __Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_t_7)->__pyx_arg_shape_out = Py_None; __Pyx_GIVEREF(Py_None); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_t_2); __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_7, __pyx_pf_5pyFAI_3ext_11_distortion_40__defaults__); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_double, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_double, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __pyx_FusedFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_5calc_pos, 0, __pyx_n_s_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_FusedFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_5calc_pos, 0, __pyx_n_s_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_t_2); __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_7, __pyx_pf_5pyFAI_3ext_11_distortion_38__defaults__); ((__pyx_FusedFunctionObject *) __pyx_t_7)->__signatures__ = __pyx_t_1; __Pyx_GIVEREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_pos, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_pos, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, */ - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(Py_None); PyTuple_SET_ITEM(__pyx_t_8, 0, Py_None); @@ -42993,16 +42798,16 @@ PyMODINIT_FUNC PyInit__distortion(void) __Pyx_INCREF(Py_None); __pyx_k__13 = Py_None; __Pyx_GIVEREF(Py_None); - __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __pyx_t_12 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_5pyFAI_3ext_11_distortion_29calc_size, 0, __pyx_n_s_calc_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_5pyFAI_3ext_11_distortion_29calc_size, 0, __pyx_n_s_calc_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - if (!__Pyx_CyFunction_InitDefaults(__pyx_t_12, sizeof(__pyx_defaults6), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__Pyx_CyFunction_InitDefaults(__pyx_t_12, sizeof(__pyx_defaults6), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_INCREF(Py_None); __Pyx_CyFunction_Defaults(__pyx_defaults6, __pyx_t_12)->__pyx_arg_offset = Py_None; __Pyx_GIVEREF(Py_None); - /* "pyFAI/ext/_distortion.pyx":314 + /* "pyFAI/ext/_distortion.pyx":319 * def calc_size(floating[:, :, :, ::1] pos not None, * shape, * numpy.int8_t[:, ::1] mask=None, # <<<<<<<<<<<<<< @@ -43010,30 +42815,30 @@ PyMODINIT_FUNC PyInit__distortion(void) * """Calculate the number of items per output pixel */ __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_CyFunction_Defaults(__pyx_defaults6, __pyx_t_12)->__pyx_arg_mask = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_12, __pyx_t_8); __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_12, __pyx_pf_5pyFAI_3ext_11_distortion_46__defaults__); - if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_float, __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_float, __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - /* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, */ - __pyx_t_12 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_5pyFAI_3ext_11_distortion_31calc_size, 0, __pyx_n_s_calc_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_5pyFAI_3ext_11_distortion_31calc_size, 0, __pyx_n_s_calc_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - if (!__Pyx_CyFunction_InitDefaults(__pyx_t_12, sizeof(__pyx_defaults7), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__Pyx_CyFunction_InitDefaults(__pyx_t_12, sizeof(__pyx_defaults7), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_INCREF(Py_None); __Pyx_CyFunction_Defaults(__pyx_defaults7, __pyx_t_12)->__pyx_arg_offset = Py_None; __Pyx_GIVEREF(Py_None); - /* "pyFAI/ext/_distortion.pyx":314 + /* "pyFAI/ext/_distortion.pyx":319 * def calc_size(floating[:, :, :, ::1] pos not None, * shape, * numpy.int8_t[:, ::1] mask=None, # <<<<<<<<<<<<<< @@ -43041,83 +42846,83 @@ PyMODINIT_FUNC PyInit__distortion(void) * """Calculate the number of items per output pixel */ __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_CyFunction_Defaults(__pyx_defaults7, __pyx_t_12)->__pyx_arg_mask = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_12, __pyx_t_8); __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_12, __pyx_pf_5pyFAI_3ext_11_distortion_48__defaults__); - if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_double, __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_double, __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - /* "pyFAI/ext/_distortion.pyx":312 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":317 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_size(floating[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * numpy.int8_t[:, ::1] mask=None, */ - __pyx_t_12 = __pyx_FusedFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_7calc_size, 0, __pyx_n_s_calc_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __pyx_FusedFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_7calc_size, 0, __pyx_n_s_calc_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_12, __pyx_t_8); __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_12, __pyx_pf_5pyFAI_3ext_11_distortion_46__defaults__); ((__pyx_FusedFunctionObject *) __pyx_t_12)->__signatures__ = __pyx_t_11; __Pyx_GIVEREF(__pyx_t_11); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_size, __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_size, __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/_distortion.pyx":372 - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":379 + * @cython.embedsignature(True) * def calc_LUT(float[:, :, :, ::1] pos not None, shape, bin_size, max_pixel_size, * numpy.int8_t[:, :] mask=None): # <<<<<<<<<<<<<< * """ - * @param pos: 4D position array + * :param pos: 4D position array */ __pyx_t_14 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__18 = __pyx_t_14; __pyx_t_14.memview = NULL; __pyx_t_14.data = NULL; - /* "pyFAI/ext/_distortion.pyx":371 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":378 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_LUT(float[:, :, :, ::1] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """ */ - __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_9calc_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_9calc_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_LUT, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_LUT, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":514 - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":523 + * @cython.embedsignature(True) * def calc_CSR(float[:, :, :, :] pos not None, shape, bin_size, max_pixel_size, * numpy.int8_t[:, :] mask=None): # <<<<<<<<<<<<<< * """Calculate the Look-up table as CSR format * */ __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__19 = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL; - /* "pyFAI/ext/_distortion.pyx":513 - * @cython.boundscheck(False) - * @cython.cdivision(True) + /* "pyFAI/ext/_distortion.pyx":522 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def calc_CSR(float[:, :, :, :] pos not None, shape, bin_size, max_pixel_size, # <<<<<<<<<<<<<< * numpy.int8_t[:, :] mask=None): * """Calculate the Look-up table as CSR format */ - __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_11calc_CSR, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_11calc_CSR, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_CSR, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_CSR, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":654 + /* "pyFAI/ext/_distortion.pyx":663 * shape, * max_pixel_size=(8, 8), * numpy.int8_t[:, :] mask=None, # <<<<<<<<<<<<<< @@ -43125,183 +42930,183 @@ PyMODINIT_FUNC PyInit__distortion(void) * int bins_per_pixel=8): */ __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__23 = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL; - /* "pyFAI/ext/_distortion.pyx":651 + /* "pyFAI/ext/_distortion.pyx":660 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_openmp(float[:, :, :, ::1] pos not None, # <<<<<<<<<<<<<< * shape, * max_pixel_size=(8, 8), */ - __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_13calc_openmp, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_13calc_openmp, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_openmp, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_openmp, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":846 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":858 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_LUT(image, shape_in, shape_out, lut_point[:, ::1] LUT not None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """Correct an image based on the look-up table calculated ... * */ - __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_15correct_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_15correct_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_correct_LUT, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_correct_LUT, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":921 - * @cython.wraparound(False) - * @cython.boundscheck(False) + /* "pyFAI/ext/_distortion.pyx":936 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * Correct an image based on the look-up table calculated ... */ - __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_17correct_CSR, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_17correct_CSR, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_correct_CSR, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_correct_CSR, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":998 - * - * + /* "pyFAI/ext/_distortion.pyx":1017 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_LUT(image, shape, lut_point[:, :]LUT): # <<<<<<<<<<<<<< * """ * Take an image which has been corrected and transform it into it's raw (with loss of information) */ - __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_19uncorrect_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_19uncorrect_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_uncorrect_LUT, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_uncorrect_LUT, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":1031 - * - * + /* "pyFAI/ext/_distortion.pyx":1055 + * @cython.initializedcheck(False) + * @cython.embedsignature(True) * def uncorrect_CSR(image, shape, LUT): # <<<<<<<<<<<<<< - * """ - * Take an image which has been corrected and transform it into it's raw (with loss of information) + * """Take an image which has been corrected and transform it into it's raw (with loss of information) + * */ - __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_21uncorrect_CSR, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_21uncorrect_CSR, NULL, __pyx_n_s_pyFAI_ext__distortion); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_uncorrect_CSR, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_uncorrect_CSR, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "pyFAI/ext/_distortion.pyx":1074 + /* "pyFAI/ext/_distortion.pyx":1098 * * * class Distortion(object): # <<<<<<<<<<<<<< * """ * */ - __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_15); __Pyx_INCREF(__pyx_builtin_object); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_builtin_object); __Pyx_GIVEREF(__pyx_builtin_object); - __pyx_t_18 = __Pyx_CalculateMetaclass(NULL, __pyx_t_15); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_CalculateMetaclass(NULL, __pyx_t_15); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_18); - __pyx_t_19 = __Pyx_Py3MetaclassPrepare(__pyx_t_18, __pyx_t_15, __pyx_n_s_Distortion, __pyx_n_s_Distortion, (PyObject *) NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_kp_s_This_class_applies_a_distortion); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __Pyx_Py3MetaclassPrepare(__pyx_t_18, __pyx_t_15, __pyx_n_s_Distortion, __pyx_n_s_Distortion, (PyObject *) NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_kp_s_This_class_applies_a_distortion); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_19); - /* "pyFAI/ext/_distortion.pyx":1082 + /* "pyFAI/ext/_distortion.pyx":1106 * * """ * def __init__(self, detector="detector", shape=None): # <<<<<<<<<<<<<< * """ - * @param detector: detector instance or detector name + * :param detector: detector instance or detector name */ - __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_1__init__, 0, __pyx_n_s_Distortion___init, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_1__init__, 0, __pyx_n_s_Distortion___init, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_20, __pyx_tuple__150); - if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_init, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_init, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - /* "pyFAI/ext/_distortion.pyx":1101 + /* "pyFAI/ext/_distortion.pyx":1125 * self.delta0 = self.delta1 = None # max size of an pixel on a regular grid ... * * def __repr__(self): # <<<<<<<<<<<<<< * return os.linesep.join(["Distortion correction for detector:", * self.detector.__repr__()]) */ - __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_3__repr__, 0, __pyx_n_s_Distortion___repr, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__152)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_3__repr__, 0, __pyx_n_s_Distortion___repr, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__152)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_repr, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_repr, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - /* "pyFAI/ext/_distortion.pyx":1105 + /* "pyFAI/ext/_distortion.pyx":1129 * self.detector.__repr__()]) * * def calc_pos(self): # <<<<<<<<<<<<<< * if self.pos is None: * with self._sem: */ - __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos, 0, __pyx_n_s_Distortion_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_5calc_pos, 0, __pyx_n_s_Distortion_calc_pos, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_calc_pos, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_calc_pos, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - /* "pyFAI/ext/_distortion.pyx":1131 + /* "pyFAI/ext/_distortion.pyx":1155 * @cython.wraparound(False) * @cython.boundscheck(False) * def calc_LUT_size(self): # <<<<<<<<<<<<<< * """ * Considering the "half-CCD" spline from ID11 which describes a (1025,2048) detector, */ - __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_7calc_LUT_size, 0, __pyx_n_s_Distortion_calc_LUT_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_7calc_LUT_size, 0, __pyx_n_s_Distortion_calc_LUT_size, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_calc_LUT_size, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_calc_LUT_size, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - /* "pyFAI/ext/_distortion.pyx":1170 + /* "pyFAI/ext/_distortion.pyx":1194 * @cython.boundscheck(False) * @cython.cdivision(True) * def calc_LUT(self): # <<<<<<<<<<<<<< * cdef: * int i, j, ms, ml, ns, nl, shape0, shape1, delta0, delta1, buffer_size, i0, i1, size */ - __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT, 0, __pyx_n_s_Distortion_calc_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_9calc_LUT, 0, __pyx_n_s_Distortion_calc_LUT, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_calc_LUT, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_calc_LUT, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - /* "pyFAI/ext/_distortion.pyx":1269 + /* "pyFAI/ext/_distortion.pyx":1293 * @cython.wraparound(False) * @cython.boundscheck(False) * def correct(self, image): # <<<<<<<<<<<<<< * """ * Correct an image based on the look-up table calculated ... */ - __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_11correct, 0, __pyx_n_s_Distortion_correct, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_11correct, 0, __pyx_n_s_Distortion_correct, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_correct, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_correct, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - /* "pyFAI/ext/_distortion.pyx":1310 + /* "pyFAI/ext/_distortion.pyx":1334 * return out[:img_shape[0], :img_shape[1]] * * def uncorrect(self, image): # <<<<<<<<<<<<<< * """ * Take an image which has been corrected and transform it into it's raw (with loss of information) */ - __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect, 0, __pyx_n_s_Distortion_uncorrect, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11_distortion_10Distortion_13uncorrect, 0, __pyx_n_s_Distortion_uncorrect, NULL, __pyx_n_s_pyFAI_ext__distortion, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_uncorrect, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_19, __pyx_n_s_uncorrect, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - /* "pyFAI/ext/_distortion.pyx":1074 + /* "pyFAI/ext/_distortion.pyx":1098 * * * class Distortion(object): # <<<<<<<<<<<<<< * """ * */ - __pyx_t_20 = __Pyx_Py3ClassCreate(__pyx_t_18, __pyx_n_s_Distortion, __pyx_t_15, __pyx_t_19, NULL, 0, 1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_Py3ClassCreate(__pyx_t_18, __pyx_n_s_Distortion, __pyx_t_15, __pyx_t_19, NULL, 0, 1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_20); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Distortion, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Distortion, __pyx_t_20) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; @@ -44988,20 +44793,6 @@ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { return 0; } -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { - PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -} - -static void __Pyx_RaiseUnboundMemoryviewSliceNogil(const char *varname) { - #ifdef WITH_THREAD - PyGILState_STATE gilstate = PyGILState_Ensure(); - #endif - __Pyx_RaiseUnboundLocalError(varname); - #ifdef WITH_THREAD - PyGILState_Release(gilstate); - #endif -} - static void __Pyx_RaiseBufferFallbackError(void) { PyErr_SetString(PyExc_ValueError, "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); @@ -45225,11 +45016,6 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int #endif } -static void __Pyx_RaiseBufferIndexError(int axis) { - PyErr_Format(PyExc_IndexError, - "Out of bounds on buffer access (axis %d)", axis); -} - static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; @@ -45495,6 +45281,10 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, *tb = tmp_tb; } +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + static CYTHON_INLINE long __Pyx_div_long(long a, long b) { long q = a / b; long r = a - q*b; diff --git a/pyFAI/ext/_distortion.pyx b/pyFAI/ext/_distortion.pyx index 48fd0b150..1c0854e0f 100644 --- a/pyFAI/ext/_distortion.pyx +++ b/pyFAI/ext/_distortion.pyx @@ -28,7 +28,7 @@ __author__ = "Jerome Kieffer" __license__ = "MIT" -__date__ = "27/10/2016" +__date__ = "01/12/2016" __copyright__ = "2011-2016, ESRF" __contact__ = "jerome.kieffer@esrf.fr" @@ -110,7 +110,7 @@ cdef inline float _ceil_max4(float a, float b, float c, float d) nogil: cdef inline void integrate(float[:, ::1] box, float start, float stop, float slope, float intercept) nogil: """Integrate in a box a line between start and stop, line defined by its slope & intercept - @param box: buffer + :param box: buffer """ cdef: int i, h = 0 @@ -243,17 +243,19 @@ cdef inline void integrate(float[:, ::1] box, float start, float stop, float slo # Functions used in python classes from PyFAI.distortion ################################################################################ -@cython.wraparound(False) -@cython.boundscheck(False) @cython.cdivision(True) +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def calc_pos(floating[:, :, :, ::1] pixel_corners not None, float pixel1, float pixel2, shape_out=None): """Calculate the pixel boundary position on the regular grid - @param pixel_corners: pixel corner coordinate as detector.get_pixel_corner() - @param shape: requested output shape. If None, it is calculated - @param pixel1, pixel2: pixel size along row and column coordinates - @return: pos, delta1, delta2, shape_out, offset + :param pixel_corners: pixel corner coordinate as detector.get_pixel_corner() + :param shape: requested output shape. If None, it is calculated + :param pixel1, pixel2: pixel size along row and column coordinates + :return: pos, delta1, delta2, shape_out, offset """ cdef: float[:, :, :, ::1] pos @@ -307,19 +309,22 @@ def calc_pos(floating[:, :, :, ::1] pixel_corners not None, return res -@cython.wraparound(False) +@cython.cdivision(True) @cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def calc_size(floating[:, :, :, ::1] pos not None, shape, numpy.int8_t[:, ::1] mask=None, offset=None): """Calculate the number of items per output pixel - @param pos: 4D array with position in space - @param shape: shape of the output array - @param mask: input data mask - @param offset: 2-tuple of float with the minimal index of - @return: number of input element per output elements + :param pos: 4D array with position in space + :param shape: shape of the output array + :param mask: input data mask + :param offset: 2-tuple of float with the minimal index of + :return: number of input element per output elements """ cdef: int i, j, k, l, shape_out0, shape_out1, shape_in0, shape_in1, min0, min1, max0, max1 @@ -365,18 +370,20 @@ def calc_size(floating[:, :, :, ::1] pos not None, return lut_size -@cython.wraparound(False) -@cython.boundscheck(False) @cython.cdivision(True) +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def calc_LUT(float[:, :, :, ::1] pos not None, shape, bin_size, max_pixel_size, numpy.int8_t[:, :] mask=None): """ - @param pos: 4D position array - @param shape: output shape - @param bin_size: number of input element per output element (numpy array) - @param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel - @param mask: arry with bad pixels marked as True - @return: look-up table + :param pos: 4D position array + :param shape: output shape + :param bin_size: number of input element per output element (numpy array) + :param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel + :param mask: arry with bad pixels marked as True + :return: look-up table """ cdef: int i, j, ms, ml, ns, nl, shape0, shape1, delta0, delta1 @@ -507,18 +514,20 @@ def calc_LUT(float[:, :, :, ::1] pos not None, shape, bin_size, max_pixel_size, copy=True) -@cython.wraparound(False) -@cython.boundscheck(False) @cython.cdivision(True) +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def calc_CSR(float[:, :, :, :] pos not None, shape, bin_size, max_pixel_size, numpy.int8_t[:, :] mask=None): """Calculate the Look-up table as CSR format - @param pos: 4D position array - @param shape: output shape - @param bin_size: number of input element per output element (as numpy array) - @param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel - @return: look-up table in CSR format: 3-tuple of array""" + :param pos: 4D position array + :param shape: output shape + :param bin_size: number of input element per output element (as numpy array) + :param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel + :return: look-up table in CSR format: 3-tuple of array""" cdef: int shape0, shape1, delta0, delta1, bins shape0, shape1 = shape @@ -656,12 +665,12 @@ def calc_openmp(float[:, :, :, ::1] pos not None, int bins_per_pixel=8): """Calculate the look-up table (or CSR) using OpenMP - @param pos: 4D position array - @param shape: output shape - @param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel - @param format: can be "CSR" or "LUT" - @param bins_per_pixel: average splitting factor (number of pixels per bin) - @return: look-up table in CSR/LUT format + :param pos: 4D position array + :param shape: output shape + :param max_pixel_size: (2-tuple of int) size of a buffer covering the largest pixel + :param format: can be "CSR" or "LUT" + :param bins_per_pixel: average splitting factor (number of pixels per bin) + :return: look-up table in CSR/LUT format """ cdef: int shape_in0, shape_in1, shape_out0, shape_out1, size_in, delta0, delta1, bins, large_size @@ -841,18 +850,21 @@ def calc_openmp(float[:, :, :, ::1] pos not None, return res -@cython.wraparound(False) +@cython.cdivision(True) @cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def correct_LUT(image, shape_in, shape_out, lut_point[:, ::1] LUT not None, dummy=None, delta_dummy=None): """Correct an image based on the look-up table calculated ... - @param image: 2D-array with the image - @param shape_in: shape of input image - @param shape_out: shape of output image - @param LUT: Look up table, here a 2D-array of struct - @param dummy: value for invalid pixels - @param delta_dummy: precision for invalid pixels - @return: corrected 2D image + :param image: 2D-array with the image + :param shape_in: shape of input image + :param shape_out: shape of output image + :param LUT: Look up table, here a 2D-array of struct + :param dummy: value for invalid pixels + :param delta_dummy: precision for invalid pixels + :return: corrected 2D image """ cdef: int i, j, lshape0, lshape1, idx, size @@ -916,19 +928,22 @@ def correct_LUT(image, shape_in, shape_out, lut_point[:, ::1] LUT not None, dumm return out -@cython.wraparound(False) +@cython.cdivision(True) @cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None): """ Correct an image based on the look-up table calculated ... - @param image: 2D-array with the image - @param shape_in: shape of input image - @param shape_out: shape of output image - @param LUT: Look up table, here a 3-tuple array of ndarray - @param dummy: value for invalid pixels - @param delta_dummy: precision for invalid pixels - @return: corrected 2D image + :param image: 2D-array with the image + :param shape_in: shape of input image + :param shape_out: shape of output image + :param LUT: Look up table, here a 3-tuple array of ndarray + :param dummy: value for invalid pixels + :param delta_dummy: precision for invalid pixels + :return: corrected 2D image """ cdef: int i, j, idx, size, bins @@ -994,14 +1009,19 @@ def correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None): lout[i] += sum # this += is for Cython's reduction return out - +@cython.cdivision(True) +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def uncorrect_LUT(image, shape, lut_point[:, :]LUT): """ Take an image which has been corrected and transform it into it's raw (with loss of information) - @param image: 2D-array with the image - @param shape: shape of output image - @param LUT: Look up table, here a 2D-array of struct - @return: uncorrected 2D image and a mask (pixels in raw image not existing) + + :param image: 2D-array with the image + :param shape: shape of output image + :param LUT: Look up table, here a 2D-array of struct + :return: uncorrected 2D image and a mask (pixels in raw image not existing) """ cdef int idx, j cdef float total, coef @@ -1027,14 +1047,18 @@ def uncorrect_LUT(image, shape, lut_point[:, :]LUT): lout[LUT[idx, j].idx] += val * coef return out, mask - +@cython.cdivision(True) +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.initializedcheck(False) +@cython.embedsignature(True) def uncorrect_CSR(image, shape, LUT): - """ - Take an image which has been corrected and transform it into it's raw (with loss of information) - @param image: 2D-array with the image - @param shape: shape of output image - @param LUT: Look up table, here a 3-tuple of ndarray - @return: uncorrected 2D image and a mask (pixels in raw image not existing) + """Take an image which has been corrected and transform it into it's raw (with loss of information) + + :param image: 2D-array with the image + :param shape: shape of output image + :param LUT: Look up table, here a 3-tuple of ndarray + :return: uncorrected 2D image and a mask (pixels in raw image not existing) """ cdef: int idx, j, nbins @@ -1081,7 +1105,7 @@ class Distortion(object): """ def __init__(self, detector="detector", shape=None): """ - @param detector: detector instance or detector name + :param detector: detector instance or detector name """ if isinstance(detector, six.string_types): self.detector = detector_factory(detector) @@ -1270,8 +1294,8 @@ class Distortion(object): """ Correct an image based on the look-up table calculated ... - @param image: 2D-array with the image - @return: corrected 2D image + :param image: 2D-array with the image + :return: corrected 2D image """ cdef: int i, j, lshape0, lshape1, idx, size @@ -1311,8 +1335,8 @@ class Distortion(object): """ Take an image which has been corrected and transform it into it's raw (with loss of information) - @param image: 2D-array with the image - @return: uncorrected 2D image and a mask (pixels in raw image + :param image: 2D-array with the image + :return: uncorrected 2D image and a mask (pixels in raw image """ if self.LUT is None: self.calc_LUT() diff --git a/pyFAI/ext/_geometry.c b/pyFAI/ext/_geometry.c index 13be8c443..8811c652b 100644 --- a/pyFAI/ext/_geometry.c +++ b/pyFAI/ext/_geometry.c @@ -449,6 +449,15 @@ static const char *__pyx_f[] = { "stringsource", "type.pxd", }; +struct __pyx_memoryview_obj; +typedef struct { + struct __pyx_memoryview_obj *memview; + char *data; + Py_ssize_t shape[8]; + Py_ssize_t strides[8]; + Py_ssize_t suboffsets[8]; +} __Pyx_memviewslice; + #define IS_UNSIGNED(type) (((type) -1) > 0) struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) @@ -484,15 +493,6 @@ typedef struct { char is_valid_array; } __Pyx_BufFmt_Context; -struct __pyx_memoryview_obj; -typedef struct { - struct __pyx_memoryview_obj *memview; - char *data; - Py_ssize_t shape[8]; - Py_ssize_t strides[8]; - Py_ssize_t suboffsets[8]; -} __Pyx_memviewslice; - #include #ifndef CYTHON_ATOMICS #define CYTHON_ATOMICS 1 @@ -1012,15 +1012,10 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static void __Pyx_RaiseBufferFallbackError(void); - -#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0) #define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d #define __Pyx_MEMVIEW_DIRECT 1 #define __Pyx_MEMVIEW_PTR 2 @@ -1046,9 +1041,6 @@ static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int); -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); - #include static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); @@ -1061,6 +1053,9 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals #endif +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); + static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); static double __Pyx__PyObject_AsDouble(PyObject* obj); @@ -1075,19 +1070,20 @@ static double __Pyx__PyObject_AsDouble(PyObject* obj); PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) #endif -#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1) -#ifndef __PYX_FORCE_INIT_THREADS - #define __PYX_FORCE_INIT_THREADS 0 -#endif - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t); /* proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + #define UNARY_NEG_WOULD_OVERFLOW(x) (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ @@ -1236,8 +1232,14 @@ static Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1, -1, -1, -1, -1}; static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); +static PyObject *__pyx_memview_get_double(const char *itemp); +static int __pyx_memview_set_double(const char *itemp, PyObject *obj); + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value); +static PyObject *__pyx_memview_get_float(const char *itemp); +static int __pyx_memview_set_float(const char *itemp, PyObject *obj); + #if CYTHON_CCOMPLEX #ifdef __cplusplus #define __Pyx_CREAL(z) ((z).real()) @@ -1375,6 +1377,8 @@ static int __Pyx_ValidateAndInit_memviewslice( static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *); + static int __Pyx_check_binary_version(void); #if !defined(__Pyx_PyIdentifier_FromString) @@ -1484,9 +1488,8 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/ static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/ -static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t = { "float64_t", NULL, sizeof(__pyx_t_5numpy_float64_t), { 0 }, 0, 'R', 0, 0 }; -static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t = { "float32_t", NULL, sizeof(__pyx_t_5numpy_float32_t), { 0 }, 0, 'R', 0, 0 }; static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 }; +static __Pyx_TypeInfo __Pyx_TypeInfo_float = { "float", NULL, sizeof(float), { 0 }, 0, 'R', 0, 0 }; #define __Pyx_MODULE_NAME "pyFAI.ext._geometry" int __pyx_module_is_main_pyFAI__ext___geometry = 0; @@ -1573,6 +1576,9 @@ static char __pyx_k_id[] = "id"; static char __pyx_k_p1[] = "p1"; static char __pyx_k_p2[] = "p2"; static char __pyx_k_p3[] = "p3"; +static char __pyx_k_r1[] = "r1"; +static char __pyx_k_r2[] = "r2"; +static char __pyx_k_r3[] = "r3"; static char __pyx_k_t1[] = "t1"; static char __pyx_k_t2[] = "t2"; static char __pyx_k_t3[] = "t3"; @@ -1586,6 +1592,7 @@ static char __pyx_k_main[] = "__main__"; static char __pyx_k_mode[] = "mode"; static char __pyx_k_name[] = "name"; static char __pyx_k_ndim[] = "ndim"; +static char __pyx_k_nout[] = "nout"; static char __pyx_k_pack[] = "pack"; static char __pyx_k_pos1[] = "pos1"; static char __pyx_k_pos2[] = "pos2"; @@ -1620,6 +1627,7 @@ static char __pyx_k_name_2[] = "__name__"; static char __pyx_k_struct[] = "struct"; static char __pyx_k_unpack[] = "unpack"; static char __pyx_k_xrange[] = "xrange"; +static char __pyx_k_asarray[] = "asarray"; static char __pyx_k_contact[] = "__contact__"; static char __pyx_k_cosRot1[] = "cosRot1"; static char __pyx_k_cosRot2[] = "cosRot2"; @@ -1642,7 +1650,7 @@ static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_calc_cosa[] = "calc_cosa"; static char __pyx_k_copyright[] = "__copyright__"; static char __pyx_k_enumerate[] = "enumerate"; -static char __pyx_k_18_11_2016[] = "18/11/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; @@ -1653,7 +1661,7 @@ static char __pyx_k_RuntimeError[] = "RuntimeError"; static char __pyx_k_calc_pos_zyx[] = "calc_pos_zyx"; static char __pyx_k_calc_rad_azim[] = "calc_rad_azim"; static char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer"; -static char __pyx_k_2011_2015_ESRF[] = "2011-2015, ESRF"; +static char __pyx_k_2011_2016_ESRF[] = "2011-2016, ESRF"; static char __pyx_k_Jerome_Kieffer[] = "Jerome Kieffer"; static char __pyx_k_pos2_size_size[] = "pos2.size == size"; static char __pyx_k_pos3_size_size[] = "pos3.size == size"; @@ -1697,8 +1705,8 @@ static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_wavelength_is_needed_for_q_calcu[] = "wavelength is needed for q calculation"; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_kp_s_18_11_2016; -static PyObject *__pyx_kp_s_2011_2015_ESRF; +static PyObject *__pyx_kp_s_01_12_2016; +static PyObject *__pyx_kp_s_2011_2016_ESRF; static PyObject *__pyx_kp_s_2th; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; @@ -1727,6 +1735,7 @@ static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_n_s_allocate_buffer; +static PyObject *__pyx_n_s_asarray; static PyObject *__pyx_n_s_ascontiguousarray; static PyObject *__pyx_n_s_author; static PyObject *__pyx_n_s_base; @@ -1780,6 +1789,7 @@ static PyObject *__pyx_n_s_name_2; static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous; static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou; static PyObject *__pyx_n_s_ndim; +static PyObject *__pyx_n_s_nout; static PyObject *__pyx_n_s_numpy; static PyObject *__pyx_n_s_obj; static PyObject *__pyx_n_s_out; @@ -1799,6 +1809,9 @@ static PyObject *__pyx_n_s_pyx_getbuffer; static PyObject *__pyx_n_s_pyx_vtable; static PyObject *__pyx_n_s_q; static PyObject *__pyx_n_s_r; +static PyObject *__pyx_n_s_r1; +static PyObject *__pyx_n_s_r2; +static PyObject *__pyx_n_s_r3; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_ravel; static PyObject *__pyx_n_s_reshape; @@ -1877,13 +1890,13 @@ static PyObject *__pyx_codeobj__32; * * cdef inline double f_t1(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< * """Calculate t2 (aka y) for 1 pixel - * @param p1:distances in meter along dim1 from PONI + * */ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t1(double __pyx_v_p1, double __pyx_v_p2, double __pyx_v_p3, double __pyx_v_sinRot1, double __pyx_v_cosRot1, double __pyx_v_sinRot2, double __pyx_v_cosRot2, double __pyx_v_sinRot3, double __pyx_v_cosRot3) { double __pyx_r; - /* "pyFAI/ext/_geometry.pyx":52 + /* "pyFAI/ext/_geometry.pyx":53 * """ * return p1 * cosRot2 * cosRot3 + \ * p2 * (cosRot3 * sinRot1 * sinRot2 - cosRot1 * sinRot3) - \ # <<<<<<<<<<<<<< @@ -1898,7 +1911,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t1(double __pyx_v_p * * cdef inline double f_t1(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< * """Calculate t2 (aka y) for 1 pixel - * @param p1:distances in meter along dim1 from PONI + * */ /* function exit code */ @@ -1906,7 +1919,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t1(double __pyx_v_p return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":56 +/* "pyFAI/ext/_geometry.pyx":57 * * * cdef inline double f_t2(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< @@ -1917,7 +1930,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t1(double __pyx_v_p static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t2(double __pyx_v_p1, double __pyx_v_p2, double __pyx_v_p3, double __pyx_v_sinRot1, double __pyx_v_cosRot1, double __pyx_v_sinRot2, double __pyx_v_cosRot2, double __pyx_v_sinRot3, double __pyx_v_cosRot3) { double __pyx_r; - /* "pyFAI/ext/_geometry.pyx":66 + /* "pyFAI/ext/_geometry.pyx":67 * """ * return p1 * cosRot2 * sinRot3 + \ * p2 * (cosRot1 * cosRot3 + sinRot1 * sinRot2 * sinRot3) - \ # <<<<<<<<<<<<<< @@ -1927,7 +1940,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t2(double __pyx_v_p __pyx_r = ((((__pyx_v_p1 * __pyx_v_cosRot2) * __pyx_v_sinRot3) + (__pyx_v_p2 * ((__pyx_v_cosRot1 * __pyx_v_cosRot3) + ((__pyx_v_sinRot1 * __pyx_v_sinRot2) * __pyx_v_sinRot3)))) - (__pyx_v_p3 * ((-(__pyx_v_cosRot3 * __pyx_v_sinRot1)) + ((__pyx_v_cosRot1 * __pyx_v_sinRot2) * __pyx_v_sinRot3)))); goto __pyx_L0; - /* "pyFAI/ext/_geometry.pyx":56 + /* "pyFAI/ext/_geometry.pyx":57 * * * cdef inline double f_t2(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< @@ -1940,7 +1953,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t2(double __pyx_v_p return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":70 +/* "pyFAI/ext/_geometry.pyx":71 * * * cdef inline double f_t3(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< @@ -1951,7 +1964,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t2(double __pyx_v_p static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t3(double __pyx_v_p1, double __pyx_v_p2, double __pyx_v_p3, double __pyx_v_sinRot1, double __pyx_v_cosRot1, double __pyx_v_sinRot2, double __pyx_v_cosRot2, CYTHON_UNUSED double __pyx_v_sinRot3, CYTHON_UNUSED double __pyx_v_cosRot3) { double __pyx_r; - /* "pyFAI/ext/_geometry.pyx":80 + /* "pyFAI/ext/_geometry.pyx":81 * """ * * return p1 * sinRot2 - p2 * cosRot2 * sinRot1 + p3 * cosRot1 * cosRot2 # <<<<<<<<<<<<<< @@ -1961,7 +1974,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t3(double __pyx_v_p __pyx_r = (((__pyx_v_p1 * __pyx_v_sinRot2) - ((__pyx_v_p2 * __pyx_v_cosRot2) * __pyx_v_sinRot1)) + ((__pyx_v_p3 * __pyx_v_cosRot1) * __pyx_v_cosRot2)); goto __pyx_L0; - /* "pyFAI/ext/_geometry.pyx":70 + /* "pyFAI/ext/_geometry.pyx":71 * * * cdef inline double f_t3(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< @@ -1974,12 +1987,12 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_t3(double __pyx_v_p return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":84 +/* "pyFAI/ext/_geometry.pyx":85 * * @cython.cdivision(True) * cdef inline double f_tth(double p1, double p2, double L, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< - * """ - * Calculate 2 theta for 1 pixel + * """Calculate 2 theta for 1 pixel + * */ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_tth(double __pyx_v_p1, double __pyx_v_p2, double __pyx_v_L, double __pyx_v_sinRot1, double __pyx_v_cosRot1, double __pyx_v_sinRot2, double __pyx_v_cosRot2, double __pyx_v_sinRot3, double __pyx_v_cosRot3) { @@ -2025,12 +2038,12 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_tth(double __pyx_v_ __pyx_r = atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3); goto __pyx_L0; - /* "pyFAI/ext/_geometry.pyx":84 + /* "pyFAI/ext/_geometry.pyx":85 * * @cython.cdivision(True) * cdef inline double f_tth(double p1, double p2, double L, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: # <<<<<<<<<<<<<< - * """ - * Calculate 2 theta for 1 pixel + * """Calculate 2 theta for 1 pixel + * */ /* function exit code */ @@ -2050,7 +2063,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_q(double __pyx_v_p1 double __pyx_r; /* "pyFAI/ext/_geometry.pyx":113 - * @param cosRot1,cosRot2,cosRot3: cosine of the angles + * :param cosRot1,cosRot2,cosRot3: cosine of the angles * """ * return 4.0e-9 * M_PI / wavelength * sin(f_tth(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) / 2.0) # <<<<<<<<<<<<<< * @@ -2192,7 +2205,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_cosa(double __pyx_v double __pyx_r; /* "pyFAI/ext/_geometry.pyx":160 - * @param L: distance sample - PONI + * :param L: distance sample - PONI * """ * return L / sqrt((L * L) + (p1 * p1) + (p2 * p2)) # <<<<<<<<<<<<<< * @@ -2214,9 +2227,9 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_cosa(double __pyx_v return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":170 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_geometry.pyx":172 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_pos_zyx(double L, double poni1, double poni2, # <<<<<<<<<<<<<< * double rot1, double rot2, double rot3, * numpy.ndarray pos1 not None, @@ -2224,7 +2237,7 @@ static CYTHON_INLINE double __pyx_f_5pyFAI_3ext_9_geometry_f_cosa(double __pyx_v /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_1calc_pos_zyx(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9_geometry_calc_pos_zyx[] = "Calculate the 3D coordinates in the sample's referential\n\n @param L: distance sample - PONI\n @param poni1: PONI coordinate along y axis\n @param poni2: PONI coordinate along x axis\n @param rot1: angle1\n @param rot2: angle2\n @param rot3: angle3\n @param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n @param pos2: numpy array with distances in meter along dim2 from PONI (X)\n @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n @return: 3-tuple of ndarray of double with same shape and size as pos1\n\n "; +static char __pyx_doc_5pyFAI_3ext_9_geometry_calc_pos_zyx[] = "calc_pos_zyx(double L, double poni1, double poni2, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)\nCalculate the 3D coordinates in the sample's referential\n\n :param L: distance sample - PONI\n :param poni1: PONI coordinate along y axis\n :param poni2: PONI coordinate along x axis\n :param rot1: angle1\n :param rot2: angle2\n :param rot3: angle3\n :param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n :param pos2: numpy array with distances in meter along dim2 from PONI (X)\n :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n :return: 3-tuple of ndarray of double with same shape and size as pos1\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9_geometry_1calc_pos_zyx = {"calc_pos_zyx", (PyCFunction)__pyx_pw_5pyFAI_3ext_9_geometry_1calc_pos_zyx, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9_geometry_calc_pos_zyx}; static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_1calc_pos_zyx(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_L; @@ -2246,7 +2259,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_1calc_pos_zyx(PyObject *__pyx_s static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_L,&__pyx_n_s_poni1,&__pyx_n_s_poni2,&__pyx_n_s_rot1,&__pyx_n_s_rot2,&__pyx_n_s_rot3,&__pyx_n_s_pos1,&__pyx_n_s_pos2,&__pyx_n_s_pos3,0}; PyObject* values[9] = {0,0,0,0,0,0,0,0,0}; - /* "pyFAI/ext/_geometry.pyx":174 + /* "pyFAI/ext/_geometry.pyx":176 * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): # <<<<<<<<<<<<<< @@ -2278,37 +2291,37 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_1calc_pos_zyx(PyObject *__pyx_s case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_poni1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_poni2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot3)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 6: if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 7: if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 8: if (kw_args > 0) { @@ -2317,7 +2330,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_1calc_pos_zyx(PyObject *__pyx_s } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_pos_zyx") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_pos_zyx") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2334,32 +2347,32 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_1calc_pos_zyx(PyObject *__pyx_s default: goto __pyx_L5_argtuple_error; } } - __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_poni1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_poni1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_poni2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_poni2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_poni1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_poni1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_poni2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_poni2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos1 = ((PyArrayObject *)values[6]); __pyx_v_pos2 = ((PyArrayObject *)values[7]); __pyx_v_pos3 = ((PyArrayObject *)values[8]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_pos_zyx", 0, 8, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._geometry.calc_pos_zyx", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(__pyx_self, __pyx_v_L, __pyx_v_poni1, __pyx_v_poni2, __pyx_v_rot1, __pyx_v_rot2, __pyx_v_rot3, __pyx_v_pos1, __pyx_v_pos2, __pyx_v_pos3); - /* "pyFAI/ext/_geometry.pyx":170 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":172 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_pos_zyx(double L, double poni1, double poni2, # <<<<<<<<<<<<<< * double rot1, double rot2, double rot3, * numpy.ndarray pos1 not None, @@ -2389,15 +2402,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb __Pyx_memviewslice __pyx_v_c1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c2 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c3 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_v_t1 = 0; - PyArrayObject *__pyx_v_t2 = 0; - PyArrayObject *__pyx_v_t3 = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_t1; - __Pyx_Buffer __pyx_pybuffer_t1; - __Pyx_LocalBuf_ND __pyx_pybuffernd_t2; - __Pyx_Buffer __pyx_pybuffer_t2; - __Pyx_LocalBuf_ND __pyx_pybuffernd_t3; - __Pyx_Buffer __pyx_pybuffer_t3; + __Pyx_memviewslice __pyx_v_t1 = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_memviewslice __pyx_v_t2 = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_memviewslice __pyx_v_t3 = { 0, 0, { 0 }, { 0 }, { 0 } }; + PyObject *__pyx_v_r1 = NULL; + PyObject *__pyx_v_r2 = NULL; + PyObject *__pyx_v_r3 = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -2409,49 +2419,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb PyObject *__pyx_t_7 = NULL; __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_t_10 = NULL; - int __pyx_t_11; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - int __pyx_t_15; + __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_memviewslice __pyx_t_12 = { 0, 0, { 0 }, { 0 }, { 0 } }; + int __pyx_t_13; + Py_ssize_t __pyx_t_14; + Py_ssize_t __pyx_t_15; Py_ssize_t __pyx_t_16; Py_ssize_t __pyx_t_17; Py_ssize_t __pyx_t_18; Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; - Py_ssize_t __pyx_t_21; + __Pyx_memviewslice __pyx_t_21 = { 0, 0, { 0 }, { 0 }, { 0 } }; Py_ssize_t __pyx_t_22; - __Pyx_memviewslice __pyx_t_23 = { 0, 0, { 0 }, { 0 }, { 0 } }; + Py_ssize_t __pyx_t_23; Py_ssize_t __pyx_t_24; Py_ssize_t __pyx_t_25; Py_ssize_t __pyx_t_26; Py_ssize_t __pyx_t_27; - Py_ssize_t __pyx_t_28; + PyObject *__pyx_t_28 = NULL; Py_ssize_t __pyx_t_29; PyObject *__pyx_t_30 = NULL; - Py_ssize_t __pyx_t_31; + PyObject *__pyx_t_31 = NULL; PyObject *__pyx_t_32 = NULL; - PyObject *__pyx_t_33 = NULL; - PyObject *__pyx_t_34 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_pos_zyx", 0); - __pyx_pybuffer_t1.pybuffer.buf = NULL; - __pyx_pybuffer_t1.refcount = 0; - __pyx_pybuffernd_t1.data = NULL; - __pyx_pybuffernd_t1.rcbuffer = &__pyx_pybuffer_t1; - __pyx_pybuffer_t2.pybuffer.buf = NULL; - __pyx_pybuffer_t2.refcount = 0; - __pyx_pybuffernd_t2.data = NULL; - __pyx_pybuffernd_t2.rcbuffer = &__pyx_pybuffer_t2; - __pyx_pybuffer_t3.pybuffer.buf = NULL; - __pyx_pybuffer_t3.refcount = 0; - __pyx_pybuffernd_t3.data = NULL; - __pyx_pybuffernd_t3.rcbuffer = &__pyx_pybuffer_t3; - - /* "pyFAI/ext/_geometry.pyx":190 + + /* "pyFAI/ext/_geometry.pyx":192 * """ * cdef: * double sinRot1 = sin(rot1) # <<<<<<<<<<<<<< @@ -2460,7 +2456,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb */ __pyx_v_sinRot1 = sin(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":191 + /* "pyFAI/ext/_geometry.pyx":193 * cdef: * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) # <<<<<<<<<<<<<< @@ -2469,7 +2465,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb */ __pyx_v_cosRot1 = cos(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":192 + /* "pyFAI/ext/_geometry.pyx":194 * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) # <<<<<<<<<<<<<< @@ -2478,7 +2474,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb */ __pyx_v_sinRot2 = sin(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":193 + /* "pyFAI/ext/_geometry.pyx":195 * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) # <<<<<<<<<<<<<< @@ -2487,7 +2483,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb */ __pyx_v_cosRot2 = cos(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":194 + /* "pyFAI/ext/_geometry.pyx":196 * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) # <<<<<<<<<<<<<< @@ -2496,7 +2492,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb */ __pyx_v_sinRot3 = sin(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":195 + /* "pyFAI/ext/_geometry.pyx":197 * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) # <<<<<<<<<<<<<< @@ -2505,21 +2501,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb */ __pyx_v_cosRot3 = cos(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":196 + /* "pyFAI/ext/_geometry.pyx":198 * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) * ssize_t size = pos1.size, i = 0 # <<<<<<<<<<<<<< * double p1, p2, p3 * assert pos2.size == size, "pos2.size == size" */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; __pyx_v_i = 0; - /* "pyFAI/ext/_geometry.pyx":198 + /* "pyFAI/ext/_geometry.pyx":200 * ssize_t size = pos1.size, i = 0 * double p1, p2, p3 * assert pos2.size == size, "pos2.size == size" # <<<<<<<<<<<<<< @@ -2528,35 +2524,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos2_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":200 + /* "pyFAI/ext/_geometry.pyx":202 * assert pos2.size == size, "pos2.size == size" * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -2569,52 +2565,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_c1 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_geometry.pyx":201 + /* "pyFAI/ext/_geometry.pyx":203 * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] t1, t2, t3 + * double[::1] t1 = numpy.empty(size, dtype=numpy.float64) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -2627,45 +2623,45 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb } } if (__pyx_t_3) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_c2 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; /* "pyFAI/ext/_geometry.pyx":205 - * numpy.ndarray[numpy.float64_t, ndim = 1] t1, t2, t3 - * - * t1 = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< - * t2 = numpy.empty(size, dtype=numpy.float64) - * t3 = numpy.empty(size, dtype=numpy.float64) + * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) + * double[::1] c3 + * double[::1] t1 = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] t2 = numpy.empty(size, dtype=numpy.float64) + * double[::1] t3 = numpy.empty(size, dtype=numpy.float64) */ __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); @@ -2693,33 +2689,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t1.rcbuffer->pybuffer); - __pyx_t_11 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_t1.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_11 < 0)) { - PyErr_Fetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_t1.rcbuffer->pybuffer, (PyObject*)__pyx_v_t1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_14); - __Pyx_RaiseBufferFallbackError(); - } else { - PyErr_Restore(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - } - __pyx_pybuffernd_t1.diminfo[0].strides = __pyx_pybuffernd_t1.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_t1.diminfo[0].shape = __pyx_pybuffernd_t1.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_10 = 0; - __pyx_v_t1 = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3); + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_t1 = __pyx_t_10; + __pyx_t_10.memview = NULL; + __pyx_t_10.data = NULL; /* "pyFAI/ext/_geometry.pyx":206 - * - * t1 = numpy.empty(size, dtype=numpy.float64) - * t2 = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< - * t3 = numpy.empty(size, dtype=numpy.float64) + * double[::1] c3 + * double[::1] t1 = numpy.empty(size, dtype=numpy.float64) + * double[::1] t2 = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] t3 = numpy.empty(size, dtype=numpy.float64) * */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -2748,32 +2729,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_4); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t2.rcbuffer->pybuffer); - __pyx_t_11 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_t2.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_11 < 0)) { - PyErr_Fetch(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_t2.rcbuffer->pybuffer, (PyObject*)__pyx_v_t2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_14); Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); - __Pyx_RaiseBufferFallbackError(); - } else { - PyErr_Restore(__pyx_t_14, __pyx_t_13, __pyx_t_12); - } - } - __pyx_pybuffernd_t2.diminfo[0].strides = __pyx_pybuffernd_t2.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_t2.diminfo[0].shape = __pyx_pybuffernd_t2.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_10 = 0; - __pyx_v_t2 = ((PyArrayObject *)__pyx_t_4); - __pyx_t_4 = 0; + __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4); + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_t2 = __pyx_t_11; + __pyx_t_11.memview = NULL; + __pyx_t_11.data = NULL; /* "pyFAI/ext/_geometry.pyx":207 - * t1 = numpy.empty(size, dtype=numpy.float64) - * t2 = numpy.empty(size, dtype=numpy.float64) - * t3 = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] t1 = numpy.empty(size, dtype=numpy.float64) + * double[::1] t2 = numpy.empty(size, dtype=numpy.float64) + * double[::1] t3 = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< * * if pos3 is None: */ @@ -2803,38 +2769,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_7); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t3.rcbuffer->pybuffer); - __pyx_t_11 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_t3.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_11 < 0)) { - PyErr_Fetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_t3.rcbuffer->pybuffer, (PyObject*)__pyx_v_t3, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_14); - __Pyx_RaiseBufferFallbackError(); - } else { - PyErr_Restore(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - } - __pyx_pybuffernd_t3.diminfo[0].strides = __pyx_pybuffernd_t3.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_t3.diminfo[0].shape = __pyx_pybuffernd_t3.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_10 = 0; - __pyx_v_t3 = ((PyArrayObject *)__pyx_t_7); - __pyx_t_7 = 0; + __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); + if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_t3 = __pyx_t_12; + __pyx_t_12.memview = NULL; + __pyx_t_12.data = NULL; /* "pyFAI/ext/_geometry.pyx":209 - * t3 = numpy.empty(size, dtype=numpy.float64) + * double[::1] t3 = numpy.empty(size, dtype=numpy.float64) * * if pos3 is None: # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): * p1 = c1[i] - poni1 */ __pyx_t_5 = (((PyObject *)__pyx_v_pos3) == Py_None); - __pyx_t_15 = (__pyx_t_5 != 0); - if (__pyx_t_15) { + __pyx_t_13 = (__pyx_t_5 != 0); + if (__pyx_t_13) { /* "pyFAI/ext/_geometry.pyx":210 * @@ -2858,19 +2809,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb #define likely(x) (x) #define unlikely(x) (x) #endif - __pyx_t_17 = (__pyx_t_2 - 0) / 1; - if (__pyx_t_17 > 0) + __pyx_t_15 = (__pyx_t_2 - 0) / 1; + if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18, __pyx_t_22) + #pragma omp parallel private(__pyx_t_16, __pyx_t_18, __pyx_t_20, __pyx_t_17, __pyx_t_19) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_p1) lastprivate(__pyx_v_p2) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_p2) schedule(static) #endif /* _OPENMP */ - for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_17; __pyx_t_16++){ + for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ { - __pyx_v_i = 0 + 1 * __pyx_t_16; + __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ __pyx_v_p1 = ((double)__PYX_NAN()); __pyx_v_p2 = ((double)__PYX_NAN()); @@ -2882,8 +2833,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * p2 = c2[i] - poni2 * t1[i] = f_t1(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_18 = __pyx_v_i; - __pyx_v_p1 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))) - __pyx_v_poni1); + __pyx_t_16 = __pyx_v_i; + __pyx_v_p1 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_16)) ))) - __pyx_v_poni1); /* "pyFAI/ext/_geometry.pyx":212 * for i in prange(size, nogil=True, schedule="static"): @@ -2892,8 +2843,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * t1[i] = f_t1(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t2[i] = f_t2(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_19 = __pyx_v_i; - __pyx_v_p2 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))) - __pyx_v_poni2); + __pyx_t_17 = __pyx_v_i; + __pyx_v_p2 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_17)) ))) - __pyx_v_poni2); /* "pyFAI/ext/_geometry.pyx":213 * p1 = c1[i] - poni1 @@ -2902,8 +2853,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * t2[i] = f_t2(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t3[i] = f_t3(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_20 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_t1.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_t1.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_t1(__pyx_v_p1, __pyx_v_p2, __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + __pyx_t_18 = __pyx_v_i; + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_t1.data) + __pyx_t_18)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_t1(__pyx_v_p1, __pyx_v_p2, __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); /* "pyFAI/ext/_geometry.pyx":214 * p2 = c2[i] - poni2 @@ -2912,8 +2863,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * t3[i] = f_t3(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * else: */ - __pyx_t_21 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_t2.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_t2.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_t2(__pyx_v_p1, __pyx_v_p2, __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + __pyx_t_19 = __pyx_v_i; + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_t2.data) + __pyx_t_19)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_t2(__pyx_v_p1, __pyx_v_p2, __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); /* "pyFAI/ext/_geometry.pyx":215 * t1[i] = f_t1(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) @@ -2922,8 +2873,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * else: * assert pos3.size == size, "pos3.size == size" */ - __pyx_t_22 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_t3.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_t3.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_t3(__pyx_v_p1, __pyx_v_p2, __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + __pyx_t_20 = __pyx_v_i; + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_t3.data) + __pyx_t_20)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_t3(__pyx_v_p1, __pyx_v_p2, __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -2974,9 +2925,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_15)) { + if (unlikely(!__pyx_t_13)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos3_size_size); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } @@ -3034,12 +2985,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_23 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_23.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_21 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); + if (unlikely(!__pyx_t_21.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_c3 = __pyx_t_23; - __pyx_t_23.memview = NULL; - __pyx_t_23.data = NULL; + __pyx_v_c3 = __pyx_t_21; + __pyx_t_21.memview = NULL; + __pyx_t_21.data = NULL; /* "pyFAI/ext/_geometry.pyx":219 * assert pos3.size == size, "pos3.size == size" @@ -3054,7 +3005,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb Py_UNBLOCK_THREADS #endif /*try:*/ { - __pyx_t_17 = __pyx_v_size; + __pyx_t_15 = __pyx_v_size; if (1 == 0) abort(); { #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) @@ -3063,23 +3014,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb #define likely(x) (x) #define unlikely(x) (x) #endif - __pyx_t_2 = (__pyx_t_17 - 0) / 1; + __pyx_t_2 = (__pyx_t_15 - 0) / 1; if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_26, __pyx_t_27, __pyx_t_25, __pyx_t_28, __pyx_t_29, __pyx_t_24) + #pragma omp parallel private(__pyx_t_27, __pyx_t_22, __pyx_t_23, __pyx_t_25, __pyx_t_24, __pyx_t_26) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_p1) lastprivate(__pyx_v_p3) lastprivate(__pyx_v_p2) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for lastprivate(__pyx_v_p3) lastprivate(__pyx_v_p2) lastprivate(__pyx_v_p1) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ - for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_2; __pyx_t_16++){ + for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_2; __pyx_t_14++){ { - __pyx_v_i = 0 + 1 * __pyx_t_16; + __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_p1 = ((double)__PYX_NAN()); __pyx_v_p3 = ((double)__PYX_NAN()); __pyx_v_p2 = ((double)__PYX_NAN()); + __pyx_v_p1 = ((double)__PYX_NAN()); /* "pyFAI/ext/_geometry.pyx":220 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) @@ -3088,8 +3039,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * p2 = c2[i] - poni2 * p3 = c3[i] + L */ - __pyx_t_24 = __pyx_v_i; - __pyx_v_p1 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_24)) ))) - __pyx_v_poni1); + __pyx_t_22 = __pyx_v_i; + __pyx_v_p1 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_22)) ))) - __pyx_v_poni1); /* "pyFAI/ext/_geometry.pyx":221 * for i in prange(size, nogil=True, schedule="static"): @@ -3098,8 +3049,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * p3 = c3[i] + L * t1[i] = f_t1(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_25 = __pyx_v_i; - __pyx_v_p2 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_25)) ))) - __pyx_v_poni2); + __pyx_t_23 = __pyx_v_i; + __pyx_v_p2 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_23)) ))) - __pyx_v_poni2); /* "pyFAI/ext/_geometry.pyx":222 * p1 = c1[i] - poni1 @@ -3108,8 +3059,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * t1[i] = f_t1(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t2[i] = f_t2(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_26 = __pyx_v_i; - __pyx_v_p3 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_26)) ))) + __pyx_v_L); + __pyx_t_24 = __pyx_v_i; + __pyx_v_p3 = ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_24)) ))) + __pyx_v_L); /* "pyFAI/ext/_geometry.pyx":223 * p2 = c2[i] - poni2 @@ -3118,8 +3069,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * t2[i] = f_t2(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t3[i] = f_t3(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_27 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_t1.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_t1.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_t1(__pyx_v_p1, __pyx_v_p2, __pyx_v_p3, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + __pyx_t_25 = __pyx_v_i; + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_t1.data) + __pyx_t_25)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_t1(__pyx_v_p1, __pyx_v_p2, __pyx_v_p3, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); /* "pyFAI/ext/_geometry.pyx":224 * p3 = c3[i] + L @@ -3128,18 +3079,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb * t3[i] = f_t3(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * */ - __pyx_t_28 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_t2.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_t2.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_t2(__pyx_v_p1, __pyx_v_p2, __pyx_v_p3, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + __pyx_t_26 = __pyx_v_i; + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_t2.data) + __pyx_t_26)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_t2(__pyx_v_p1, __pyx_v_p2, __pyx_v_p3, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); /* "pyFAI/ext/_geometry.pyx":225 * t1[i] = f_t1(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t2[i] = f_t2(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t3[i] = f_t3(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< * - * if pos1.ndim == 3: + * r1 = numpy.asarray(t1) */ - __pyx_t_29 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_t3.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_t3.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_t3(__pyx_v_p1, __pyx_v_p2, __pyx_v_p3, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + __pyx_t_27 = __pyx_v_i; + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_t3.data) + __pyx_t_27)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_t3(__pyx_v_p1, __pyx_v_p2, __pyx_v_p3, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -3176,360 +3127,489 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb /* "pyFAI/ext/_geometry.pyx":227 * t3[i] = f_t3(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * + * r1 = numpy.asarray(t1) # <<<<<<<<<<<<<< + * r2 = numpy.asarray(t2) + * r3 = numpy.asarray(t3) + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_t1, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_4) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_r1 = __pyx_t_6; + __pyx_t_6 = 0; + + /* "pyFAI/ext/_geometry.pyx":228 + * + * r1 = numpy.asarray(t1) + * r2 = numpy.asarray(t2) # <<<<<<<<<<<<<< + * r3 = numpy.asarray(t3) + * + */ + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_t2, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_1) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + __pyx_t_7 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_r2 = __pyx_t_6; + __pyx_t_6 = 0; + + /* "pyFAI/ext/_geometry.pyx":229 + * r1 = numpy.asarray(t1) + * r2 = numpy.asarray(t2) + * r3 = numpy.asarray(t3) # <<<<<<<<<<<<<< + * + * if pos1.ndim == 3: + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_t3, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_7) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else { + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_r3 = __pyx_t_6; + __pyx_t_6 = 0; + + /* "pyFAI/ext/_geometry.pyx":231 + * r3 = numpy.asarray(t3) + * * if pos1.ndim == 3: # <<<<<<<<<<<<<< - * return t3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - * t1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + * return r3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + * r1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ */ - __pyx_t_15 = ((__pyx_v_pos1->nd == 3) != 0); - if (__pyx_t_15) { + __pyx_t_13 = ((__pyx_v_pos1->nd == 3) != 0); + if (__pyx_t_13) { - /* "pyFAI/ext/_geometry.pyx":228 + /* "pyFAI/ext/_geometry.pyx":232 * * if pos1.ndim == 3: - * return t3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ # <<<<<<<<<<<<<< - * t1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - * t2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) + * return r3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ # <<<<<<<<<<<<<< + * r1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + * r2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_t3), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_r3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_30 = NULL; - __pyx_t_31 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_30 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_30)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_30); + __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_28 = NULL; + __pyx_t_29 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_28 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_28)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_28); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_31 = 1; + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_29 = 1; } } - __pyx_t_32 = PyTuple_New(3+__pyx_t_31); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_32); - if (__pyx_t_30) { - PyTuple_SET_ITEM(__pyx_t_32, 0, __pyx_t_30); __Pyx_GIVEREF(__pyx_t_30); __pyx_t_30 = NULL; + __pyx_t_30 = PyTuple_New(3+__pyx_t_29); if (unlikely(!__pyx_t_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_30); + if (__pyx_t_28) { + PyTuple_SET_ITEM(__pyx_t_30, 0, __pyx_t_28); __Pyx_GIVEREF(__pyx_t_28); __pyx_t_28 = NULL; } - PyTuple_SET_ITEM(__pyx_t_32, 0+__pyx_t_31, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_32, 1+__pyx_t_31, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_32, 2+__pyx_t_31, __pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_30, 0+__pyx_t_29, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_30, 1+__pyx_t_29, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); - __pyx_t_7 = 0; - __pyx_t_4 = 0; + PyTuple_SET_ITEM(__pyx_t_30, 2+__pyx_t_29, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + __pyx_t_1 = 0; __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_32, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_30, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/_geometry.pyx":229 + /* "pyFAI/ext/_geometry.pyx":233 * if pos1.ndim == 3: - * return t3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - * t1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ # <<<<<<<<<<<<<< - * t2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) + * return r3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + * r1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ # <<<<<<<<<<<<<< + * r2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) * */ - __pyx_t_32 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_t1), __pyx_n_s_reshape); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_32); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_30 = __Pyx_PyObject_GetAttrStr(__pyx_v_r1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_30); + __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_30 = NULL; - __pyx_t_31 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_32))) { - __pyx_t_30 = PyMethod_GET_SELF(__pyx_t_32); - if (likely(__pyx_t_30)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_32); - __Pyx_INCREF(__pyx_t_30); + __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_28 = NULL; + __pyx_t_29 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_30))) { + __pyx_t_28 = PyMethod_GET_SELF(__pyx_t_30); + if (likely(__pyx_t_28)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_30); + __Pyx_INCREF(__pyx_t_28); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_32, function); - __pyx_t_31 = 1; + __Pyx_DECREF_SET(__pyx_t_30, function); + __pyx_t_29 = 1; } } - __pyx_t_33 = PyTuple_New(3+__pyx_t_31); if (unlikely(!__pyx_t_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_33); - if (__pyx_t_30) { - PyTuple_SET_ITEM(__pyx_t_33, 0, __pyx_t_30); __Pyx_GIVEREF(__pyx_t_30); __pyx_t_30 = NULL; + __pyx_t_31 = PyTuple_New(3+__pyx_t_29); if (unlikely(!__pyx_t_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_31); + if (__pyx_t_28) { + PyTuple_SET_ITEM(__pyx_t_31, 0, __pyx_t_28); __Pyx_GIVEREF(__pyx_t_28); __pyx_t_28 = NULL; } - PyTuple_SET_ITEM(__pyx_t_33, 0+__pyx_t_31, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_33, 1+__pyx_t_31, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_33, 2+__pyx_t_31, __pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_31, 0+__pyx_t_29, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_3 = 0; - __pyx_t_4 = 0; + PyTuple_SET_ITEM(__pyx_t_31, 1+__pyx_t_29, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_31, 2+__pyx_t_29, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_32, __pyx_t_33, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_33); __pyx_t_33 = 0; - __Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0; + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_30, __pyx_t_31, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0; + __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; - /* "pyFAI/ext/_geometry.pyx":230 - * return t3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - * t1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - * t2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) # <<<<<<<<<<<<<< + /* "pyFAI/ext/_geometry.pyx":234 + * return r3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + * r1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + * r2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) # <<<<<<<<<<<<<< * * if pos1.ndim == 2: */ - __pyx_t_33 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_t2), __pyx_n_s_reshape); if (unlikely(!__pyx_t_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_33); - __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_31 = __Pyx_PyObject_GetAttrStr(__pyx_v_r2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_31); + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_30 = NULL; - __pyx_t_31 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_33))) { - __pyx_t_30 = PyMethod_GET_SELF(__pyx_t_33); - if (likely(__pyx_t_30)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_33); - __Pyx_INCREF(__pyx_t_30); + __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_28 = NULL; + __pyx_t_29 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_31))) { + __pyx_t_28 = PyMethod_GET_SELF(__pyx_t_31); + if (likely(__pyx_t_28)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_31); + __Pyx_INCREF(__pyx_t_28); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_33, function); - __pyx_t_31 = 1; + __Pyx_DECREF_SET(__pyx_t_31, function); + __pyx_t_29 = 1; } } - __pyx_t_34 = PyTuple_New(3+__pyx_t_31); if (unlikely(!__pyx_t_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_34); - if (__pyx_t_30) { - PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_30); __Pyx_GIVEREF(__pyx_t_30); __pyx_t_30 = NULL; + __pyx_t_32 = PyTuple_New(3+__pyx_t_29); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_32); + if (__pyx_t_28) { + PyTuple_SET_ITEM(__pyx_t_32, 0, __pyx_t_28); __Pyx_GIVEREF(__pyx_t_28); __pyx_t_28 = NULL; } - PyTuple_SET_ITEM(__pyx_t_34, 0+__pyx_t_31, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_34, 1+__pyx_t_31, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_34, 2+__pyx_t_31, __pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_32, 0+__pyx_t_29, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_32, 1+__pyx_t_29, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); - __pyx_t_7 = 0; - __pyx_t_4 = 0; + PyTuple_SET_ITEM(__pyx_t_32, 2+__pyx_t_29, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + __pyx_t_1 = 0; __pyx_t_3 = 0; - __pyx_t_32 = __Pyx_PyObject_Call(__pyx_t_33, __pyx_t_34, NULL); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_32); - __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0; - __Pyx_DECREF(__pyx_t_33); __pyx_t_33 = 0; + __pyx_t_7 = 0; + __pyx_t_30 = __Pyx_PyObject_Call(__pyx_t_31, __pyx_t_32, NULL); if (unlikely(!__pyx_t_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_30); + __Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0; + __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0; - /* "pyFAI/ext/_geometry.pyx":228 + /* "pyFAI/ext/_geometry.pyx":232 * * if pos1.ndim == 3: - * return t3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ # <<<<<<<<<<<<<< - * t1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - * t2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) + * return r3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ # <<<<<<<<<<<<<< + * r1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + * r2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) */ - __pyx_t_33 = PyTuple_New(3); if (unlikely(!__pyx_t_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_33); - PyTuple_SET_ITEM(__pyx_t_33, 0, __pyx_t_6); + __pyx_t_31 = PyTuple_New(3); if (unlikely(!__pyx_t_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_31); + PyTuple_SET_ITEM(__pyx_t_31, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_33, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_33, 2, __pyx_t_32); - __Pyx_GIVEREF(__pyx_t_32); + PyTuple_SET_ITEM(__pyx_t_31, 1, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_31, 2, __pyx_t_30); + __Pyx_GIVEREF(__pyx_t_30); __pyx_t_6 = 0; - __pyx_t_1 = 0; - __pyx_t_32 = 0; - __pyx_r = __pyx_t_33; - __pyx_t_33 = 0; + __pyx_t_4 = 0; + __pyx_t_30 = 0; + __pyx_r = __pyx_t_31; + __pyx_t_31 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":232 - * t2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) + /* "pyFAI/ext/_geometry.pyx":236 + * r2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) * * if pos1.ndim == 2: # <<<<<<<<<<<<<< - * return t3.reshape(pos1.shape[0], pos1.shape[1]),\ - * t1.reshape(pos1.shape[0], pos1.shape[1]),\ + * return r3.reshape(pos1.shape[0], pos1.shape[1]),\ + * r1.reshape(pos1.shape[0], pos1.shape[1]),\ */ - __pyx_t_15 = ((__pyx_v_pos1->nd == 2) != 0); - if (__pyx_t_15) { + __pyx_t_13 = ((__pyx_v_pos1->nd == 2) != 0); + if (__pyx_t_13) { - /* "pyFAI/ext/_geometry.pyx":233 + /* "pyFAI/ext/_geometry.pyx":237 * * if pos1.ndim == 2: - * return t3.reshape(pos1.shape[0], pos1.shape[1]),\ # <<<<<<<<<<<<<< - * t1.reshape(pos1.shape[0], pos1.shape[1]),\ - * t2.reshape(pos1.shape[0], pos1.shape[1]) + * return r3.reshape(pos1.shape[0], pos1.shape[1]),\ # <<<<<<<<<<<<<< + * r1.reshape(pos1.shape[0], pos1.shape[1]),\ + * r2.reshape(pos1.shape[0], pos1.shape[1]) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_32 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_t3), __pyx_n_s_reshape); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_32); - __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_30 = __Pyx_PyObject_GetAttrStr(__pyx_v_r3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_30); + __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_34 = NULL; - __pyx_t_31 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_32))) { - __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_32); - if (likely(__pyx_t_34)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_32); - __Pyx_INCREF(__pyx_t_34); + __pyx_t_32 = NULL; + __pyx_t_29 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_30))) { + __pyx_t_32 = PyMethod_GET_SELF(__pyx_t_30); + if (likely(__pyx_t_32)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_30); + __Pyx_INCREF(__pyx_t_32); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_32, function); - __pyx_t_31 = 1; + __Pyx_DECREF_SET(__pyx_t_30, function); + __pyx_t_29 = 1; } } - __pyx_t_3 = PyTuple_New(2+__pyx_t_31); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - if (__pyx_t_34) { - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_34); __Pyx_GIVEREF(__pyx_t_34); __pyx_t_34 = NULL; + __pyx_t_7 = PyTuple_New(2+__pyx_t_29); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_32) { + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_32); __Pyx_GIVEREF(__pyx_t_32); __pyx_t_32 = NULL; } - PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_31, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_31, __pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_29, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_29, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_1 = 0; + __pyx_t_4 = 0; __pyx_t_6 = 0; - __pyx_t_33 = __Pyx_PyObject_Call(__pyx_t_32, __pyx_t_3, NULL); if (unlikely(!__pyx_t_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_33); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0; + __pyx_t_31 = __Pyx_PyObject_Call(__pyx_t_30, __pyx_t_7, NULL); if (unlikely(!__pyx_t_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_31); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; - /* "pyFAI/ext/_geometry.pyx":234 + /* "pyFAI/ext/_geometry.pyx":238 * if pos1.ndim == 2: - * return t3.reshape(pos1.shape[0], pos1.shape[1]),\ - * t1.reshape(pos1.shape[0], pos1.shape[1]),\ # <<<<<<<<<<<<<< - * t2.reshape(pos1.shape[0], pos1.shape[1]) + * return r3.reshape(pos1.shape[0], pos1.shape[1]),\ + * r1.reshape(pos1.shape[0], pos1.shape[1]),\ # <<<<<<<<<<<<<< + * r2.reshape(pos1.shape[0], pos1.shape[1]) * else: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_t1), __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_r1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_34 = NULL; - __pyx_t_31 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_34)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_34); + __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_32 = NULL; + __pyx_t_29 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_32 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_32)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_32); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_31 = 1; + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_29 = 1; } } - __pyx_t_4 = PyTuple_New(2+__pyx_t_31); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - if (__pyx_t_34) { - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_34); __Pyx_GIVEREF(__pyx_t_34); __pyx_t_34 = NULL; + __pyx_t_3 = PyTuple_New(2+__pyx_t_29); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_32) { + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_32); __Pyx_GIVEREF(__pyx_t_32); __pyx_t_32 = NULL; } - PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_31, __pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_29, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_31, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_29, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_6 = 0; - __pyx_t_1 = 0; - __pyx_t_32 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_32); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = 0; + __pyx_t_30 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_30); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/_geometry.pyx":235 - * return t3.reshape(pos1.shape[0], pos1.shape[1]),\ - * t1.reshape(pos1.shape[0], pos1.shape[1]),\ - * t2.reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< + /* "pyFAI/ext/_geometry.pyx":239 + * return r3.reshape(pos1.shape[0], pos1.shape[1]),\ + * r1.reshape(pos1.shape[0], pos1.shape[1]),\ + * r2.reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< * else: - * return t3, t1, t2 + * return r3, r1, r2 */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_t2), __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_r2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_34 = NULL; - __pyx_t_31 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_34)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_34); + __pyx_t_32 = NULL; + __pyx_t_29 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_32 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_32)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_32); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_31 = 1; + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_29 = 1; } } - __pyx_t_7 = PyTuple_New(2+__pyx_t_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_34) { - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_34); __Pyx_GIVEREF(__pyx_t_34); __pyx_t_34 = NULL; + __pyx_t_1 = PyTuple_New(2+__pyx_t_29); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + if (__pyx_t_32) { + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_32); __Pyx_GIVEREF(__pyx_t_32); __pyx_t_32 = NULL; } - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_31, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_31, __pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_29, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_29, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_1 = 0; + __pyx_t_4 = 0; __pyx_t_6 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/_geometry.pyx":233 + /* "pyFAI/ext/_geometry.pyx":237 * * if pos1.ndim == 2: - * return t3.reshape(pos1.shape[0], pos1.shape[1]),\ # <<<<<<<<<<<<<< - * t1.reshape(pos1.shape[0], pos1.shape[1]),\ - * t2.reshape(pos1.shape[0], pos1.shape[1]) + * return r3.reshape(pos1.shape[0], pos1.shape[1]),\ # <<<<<<<<<<<<<< + * r1.reshape(pos1.shape[0], pos1.shape[1]),\ + * r2.reshape(pos1.shape[0], pos1.shape[1]) */ - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_33); - __Pyx_GIVEREF(__pyx_t_33); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_32); - __Pyx_GIVEREF(__pyx_t_32); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - __pyx_t_33 = 0; - __pyx_t_32 = 0; + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_31); + __Pyx_GIVEREF(__pyx_t_31); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_30); + __Pyx_GIVEREF(__pyx_t_30); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + __pyx_t_31 = 0; + __pyx_t_30 = 0; + __pyx_t_7 = 0; + __pyx_r = __pyx_t_3; __pyx_t_3 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":237 - * t2.reshape(pos1.shape[0], pos1.shape[1]) + /* "pyFAI/ext/_geometry.pyx":241 + * r2.reshape(pos1.shape[0], pos1.shape[1]) * else: - * return t3, t1, t2 # <<<<<<<<<<<<<< + * return r3, r1, r2 # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(((PyObject *)__pyx_v_t3)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_t3)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_t3)); - __Pyx_INCREF(((PyObject *)__pyx_v_t1)); - PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_t1)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_t1)); - __Pyx_INCREF(((PyObject *)__pyx_v_t2)); - PyTuple_SET_ITEM(__pyx_t_4, 2, ((PyObject *)__pyx_v_t2)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_t2)); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_r3); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_r3); + __Pyx_GIVEREF(__pyx_v_r3); + __Pyx_INCREF(__pyx_v_r1); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_r1); + __Pyx_GIVEREF(__pyx_v_r1); + __Pyx_INCREF(__pyx_v_r2); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_r2); + __Pyx_GIVEREF(__pyx_v_r2); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":170 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":172 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_pos_zyx(double L, double poni1, double poni2, # <<<<<<<<<<<<<< * double rot1, double rot2, double rot3, * numpy.ndarray pos1 not None, @@ -3544,39 +3624,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_23, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_21, 1); + __Pyx_XDECREF(__pyx_t_28); __Pyx_XDECREF(__pyx_t_30); + __Pyx_XDECREF(__pyx_t_31); __Pyx_XDECREF(__pyx_t_32); - __Pyx_XDECREF(__pyx_t_33); - __Pyx_XDECREF(__pyx_t_34); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t1.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t2.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t3.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("pyFAI.ext._geometry.calc_pos_zyx", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t1.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t2.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_t3.rcbuffer->pybuffer); - __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_c1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c2, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c3, 1); - __Pyx_XDECREF((PyObject *)__pyx_v_t1); - __Pyx_XDECREF((PyObject *)__pyx_v_t2); - __Pyx_XDECREF((PyObject *)__pyx_v_t3); + __PYX_XDEC_MEMVIEW(&__pyx_v_t1, 1); + __PYX_XDEC_MEMVIEW(&__pyx_v_t2, 1); + __PYX_XDEC_MEMVIEW(&__pyx_v_t3, 1); + __Pyx_XDECREF(__pyx_v_r1); + __Pyx_XDECREF(__pyx_v_r2); + __Pyx_XDECREF(__pyx_v_r3); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":242 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_geometry.pyx":248 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_tth(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -3584,7 +3659,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_3calc_tth(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9_geometry_2calc_tth[] = "\n Calculate the 2theta array (radial angle) in parallel\n\n @param L: distance sample - PONI\n @param rot1: angle1\n @param rot2: angle2\n @param rot3: angle3\n @param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n @param pos2: numpy array with distances in meter along dim2 from PONI (X)\n @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n @return: ndarray of double with same shape and size as pos1\n "; +static char __pyx_doc_5pyFAI_3ext_9_geometry_2calc_tth[] = "calc_tth(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)\n\n Calculate the 2theta array (radial angle) in parallel\n\n :param L: distance sample - PONI\n :param rot1: angle1\n :param rot2: angle2\n :param rot3: angle3\n :param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n :param pos2: numpy array with distances in meter along dim2 from PONI (X)\n :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n :return: ndarray of double with same shape and size as pos1\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9_geometry_3calc_tth = {"calc_tth", (PyCFunction)__pyx_pw_5pyFAI_3ext_9_geometry_3calc_tth, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9_geometry_2calc_tth}; static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_3calc_tth(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_L; @@ -3604,7 +3679,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_3calc_tth(PyObject *__pyx_self, static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_L,&__pyx_n_s_rot1,&__pyx_n_s_rot2,&__pyx_n_s_rot3,&__pyx_n_s_pos1,&__pyx_n_s_pos2,&__pyx_n_s_pos3,0}; PyObject* values[7] = {0,0,0,0,0,0,0}; - /* "pyFAI/ext/_geometry.pyx":245 + /* "pyFAI/ext/_geometry.pyx":251 * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): # <<<<<<<<<<<<<< @@ -3634,27 +3709,27 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_3calc_tth(PyObject *__pyx_self, case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot3)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 6: if (kw_args > 0) { @@ -3663,7 +3738,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_3calc_tth(PyObject *__pyx_self, } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_tth") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_tth") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3678,30 +3753,30 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_3calc_tth(PyObject *__pyx_self, default: goto __pyx_L5_argtuple_error; } } - __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos1 = ((PyArrayObject *)values[4]); __pyx_v_pos2 = ((PyArrayObject *)values[5]); __pyx_v_pos3 = ((PyArrayObject *)values[6]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_tth", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._geometry.calc_tth", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(__pyx_self, __pyx_v_L, __pyx_v_rot1, __pyx_v_rot2, __pyx_v_rot3, __pyx_v_pos1, __pyx_v_pos2, __pyx_v_pos3); - /* "pyFAI/ext/_geometry.pyx":242 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":248 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_tth(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -3728,9 +3803,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec __Pyx_memviewslice __pyx_v_c1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c2 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c3 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; + __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -3742,7 +3815,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec PyObject *__pyx_t_7 = NULL; __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_t_10 = NULL; + __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_11; Py_ssize_t __pyx_t_12; Py_ssize_t __pyx_t_13; @@ -3754,18 +3827,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_22 = NULL; + Py_ssize_t __pyx_t_23; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_tth", 0); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - /* "pyFAI/ext/_geometry.pyx":259 + /* "pyFAI/ext/_geometry.pyx":265 * """ * cdef: * double sinRot1 = sin(rot1) # <<<<<<<<<<<<<< @@ -3774,7 +3843,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ __pyx_v_sinRot1 = sin(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":260 + /* "pyFAI/ext/_geometry.pyx":266 * cdef: * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) # <<<<<<<<<<<<<< @@ -3783,7 +3852,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ __pyx_v_cosRot1 = cos(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":261 + /* "pyFAI/ext/_geometry.pyx":267 * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) # <<<<<<<<<<<<<< @@ -3792,7 +3861,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ __pyx_v_sinRot2 = sin(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":262 + /* "pyFAI/ext/_geometry.pyx":268 * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) # <<<<<<<<<<<<<< @@ -3801,7 +3870,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ __pyx_v_cosRot2 = cos(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":263 + /* "pyFAI/ext/_geometry.pyx":269 * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) # <<<<<<<<<<<<<< @@ -3810,7 +3879,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ __pyx_v_sinRot3 = sin(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":264 + /* "pyFAI/ext/_geometry.pyx":270 * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) # <<<<<<<<<<<<<< @@ -3819,21 +3888,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ __pyx_v_cosRot3 = cos(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":265 + /* "pyFAI/ext/_geometry.pyx":271 * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) * ssize_t size = pos1.size, i = 0 # <<<<<<<<<<<<<< * assert pos2.size == size, "pos2.size == size" * cdef: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; __pyx_v_i = 0; - /* "pyFAI/ext/_geometry.pyx":266 + /* "pyFAI/ext/_geometry.pyx":272 * double cosRot3 = cos(rot3) * ssize_t size = pos1.size, i = 0 * assert pos2.size == size, "pos2.size == size" # <<<<<<<<<<<<<< @@ -3842,35 +3911,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos2_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":268 + /* "pyFAI/ext/_geometry.pyx":274 * assert pos2.size == size, "pos2.size == size" * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -3883,52 +3952,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_c1 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_geometry.pyx":269 + /* "pyFAI/ext/_geometry.pyx":275 * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + * double[::1] out = numpy.empty(size, dtype=numpy.float64) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -3941,88 +4010,81 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec } } if (__pyx_t_3) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_c2 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_geometry.pyx":271 + /* "pyFAI/ext/_geometry.pyx":277 * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< * * if pos3 is None: */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_10 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3); + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_out = __pyx_t_10; + __pyx_t_10.memview = NULL; + __pyx_t_10.data = NULL; - /* "pyFAI/ext/_geometry.pyx":273 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + /* "pyFAI/ext/_geometry.pyx":279 + * double[::1] out = numpy.empty(size, dtype=numpy.float64) * * if pos3 is None: # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): @@ -4032,7 +4094,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec __pyx_t_11 = (__pyx_t_5 != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":274 + /* "pyFAI/ext/_geometry.pyx":280 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -4058,7 +4120,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) + #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4068,7 +4130,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":275 + /* "pyFAI/ext/_geometry.pyx":281 * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_tth(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -4078,7 +4140,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec __pyx_t_14 = __pyx_v_i; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_tth((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_16)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_tth((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -4092,7 +4154,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec #endif } - /* "pyFAI/ext/_geometry.pyx":274 + /* "pyFAI/ext/_geometry.pyx":280 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -4113,7 +4175,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":277 + /* "pyFAI/ext/_geometry.pyx":283 * out[i] = f_tth(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * else: * assert pos3.size == size, "pos3.size == size" # <<<<<<<<<<<<<< @@ -4122,35 +4184,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_11)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos3_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":278 + /* "pyFAI/ext/_geometry.pyx":284 * else: * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_tth(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -4163,40 +4225,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec } } if (__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4); - if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_c3 = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL; - /* "pyFAI/ext/_geometry.pyx":279 + /* "pyFAI/ext/_geometry.pyx":285 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -4222,7 +4284,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) + #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4232,7 +4294,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":280 + /* "pyFAI/ext/_geometry.pyx":286 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_tth(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -4243,7 +4305,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_i; __pyx_t_21 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_tth((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_21)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_tth((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -4257,7 +4319,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec #endif } - /* "pyFAI/ext/_geometry.pyx":279 + /* "pyFAI/ext/_geometry.pyx":285 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -4277,79 +4339,146 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec } __pyx_L3:; - /* "pyFAI/ext/_geometry.pyx":282 + /* "pyFAI/ext/_geometry.pyx":288 * out[i] = f_tth(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * * if pos1.ndim == 2: # <<<<<<<<<<<<<< - * return out.reshape(pos1.shape[0], pos1.shape[1]) + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: */ __pyx_t_11 = ((__pyx_v_pos1->nd == 2) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":283 + /* "pyFAI/ext/_geometry.pyx":289 * * if pos1.ndim == 2: - * return out.reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< * else: - * return out + * return numpy.asarray(out) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_out), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; - __pyx_t_22 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_22 = 1; + __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_23 = PyTuple_New(2+__pyx_t_22); if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_23); - if (__pyx_t_7) { - PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + if (!__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_22 = PyTuple_New(1+1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_22, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_22, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } - PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_3 = 0; - __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_22 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + __pyx_t_3 = NULL; + __pyx_t_23 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_23 = 1; + } + } + __pyx_t_7 = PyTuple_New(2+__pyx_t_23); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_3) { + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + } + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_23, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_23, __pyx_t_22); + __Pyx_GIVEREF(__pyx_t_22); + __pyx_t_1 = 0; + __pyx_t_22 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":285 - * return out.reshape(pos1.shape[0], pos1.shape[1]) + /* "pyFAI/ext/_geometry.pyx":291 + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: - * return out # <<<<<<<<<<<<<< + * return numpy.asarray(out) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_out)); - __pyx_r = ((PyObject *)__pyx_v_out); + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_22 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_22)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_22); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_22) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_22); __pyx_t_22 = NULL; + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":242 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":248 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_tth(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -4364,30 +4493,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_17, 1); - __Pyx_XDECREF(__pyx_t_23); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_XDECREF(__pyx_t_22); __Pyx_AddTraceback("pyFAI.ext._geometry.calc_tth", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_c1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c2, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c3, 1); - __Pyx_XDECREF((PyObject *)__pyx_v_out); + __PYX_XDEC_MEMVIEW(&__pyx_v_out, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":290 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_geometry.pyx":298 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_chi(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -4395,7 +4518,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_5calc_chi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9_geometry_4calc_chi[] = "\n Calculate the chi array (azimuthal angles) in parallel\n\n X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3))\n X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3))\n X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2)\n tan(Chi) = X2 / X1\n\n\n @param L: distance sample - PONI\n @param rot1: angle1\n @param rot2: angle2\n @param rot3: angle3\n @param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n @param pos2: numpy array with distances in meter along dim2 from PONI (X)\n @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n @return: ndarray of double with same shape and size as pos1\n "; +static char __pyx_doc_5pyFAI_3ext_9_geometry_4calc_chi[] = "calc_chi(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)\nCalculate the chi array (azimuthal angles) using OpenMP\n\n X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3))\n X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3))\n X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2)\n tan(Chi) = X2 / X1\n\n\n :param L: distance sample - PONI\n :param rot1: angle1\n :param rot2: angle2\n :param rot3: angle3\n :param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n :param pos2: numpy array with distances in meter along dim2 from PONI (X)\n :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n :return: ndarray of double with same shape and size as pos1\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9_geometry_5calc_chi = {"calc_chi", (PyCFunction)__pyx_pw_5pyFAI_3ext_9_geometry_5calc_chi, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9_geometry_4calc_chi}; static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_5calc_chi(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_L; @@ -4415,12 +4538,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_5calc_chi(PyObject *__pyx_self, static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_L,&__pyx_n_s_rot1,&__pyx_n_s_rot2,&__pyx_n_s_rot3,&__pyx_n_s_pos1,&__pyx_n_s_pos2,&__pyx_n_s_pos3,0}; PyObject* values[7] = {0,0,0,0,0,0,0}; - /* "pyFAI/ext/_geometry.pyx":293 + /* "pyFAI/ext/_geometry.pyx":301 * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): # <<<<<<<<<<<<<< - * """ - * Calculate the chi array (azimuthal angles) in parallel + * """Calculate the chi array (azimuthal angles) using OpenMP + * */ values[6] = (PyObject *)((PyArrayObject *)Py_None); if (unlikely(__pyx_kwds)) { @@ -4445,27 +4568,27 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_5calc_chi(PyObject *__pyx_self, case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot3)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 6: if (kw_args > 0) { @@ -4474,7 +4597,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_5calc_chi(PyObject *__pyx_self, } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_chi") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_chi") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4489,30 +4612,30 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_5calc_chi(PyObject *__pyx_self, default: goto __pyx_L5_argtuple_error; } } - __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos1 = ((PyArrayObject *)values[4]); __pyx_v_pos2 = ((PyArrayObject *)values[5]); __pyx_v_pos3 = ((PyArrayObject *)values[6]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_chi", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._geometry.calc_chi", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(__pyx_self, __pyx_v_L, __pyx_v_rot1, __pyx_v_rot2, __pyx_v_rot3, __pyx_v_pos1, __pyx_v_pos2, __pyx_v_pos3); - /* "pyFAI/ext/_geometry.pyx":290 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":298 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_chi(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -4539,9 +4662,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec __Pyx_memviewslice __pyx_v_c1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c2 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c3 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; + __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -4553,7 +4674,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec PyObject *__pyx_t_7 = NULL; __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_t_10 = NULL; + __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_11; Py_ssize_t __pyx_t_12; Py_ssize_t __pyx_t_13; @@ -4565,18 +4686,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_22 = NULL; + Py_ssize_t __pyx_t_23; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_chi", 0); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - /* "pyFAI/ext/_geometry.pyx":313 + /* "pyFAI/ext/_geometry.pyx":320 * """ * cdef: * double sinRot1 = sin(rot1) # <<<<<<<<<<<<<< @@ -4585,7 +4702,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ __pyx_v_sinRot1 = sin(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":314 + /* "pyFAI/ext/_geometry.pyx":321 * cdef: * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) # <<<<<<<<<<<<<< @@ -4594,7 +4711,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ __pyx_v_cosRot1 = cos(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":315 + /* "pyFAI/ext/_geometry.pyx":322 * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) # <<<<<<<<<<<<<< @@ -4603,7 +4720,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ __pyx_v_sinRot2 = sin(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":316 + /* "pyFAI/ext/_geometry.pyx":323 * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) # <<<<<<<<<<<<<< @@ -4612,7 +4729,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ __pyx_v_cosRot2 = cos(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":317 + /* "pyFAI/ext/_geometry.pyx":324 * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) # <<<<<<<<<<<<<< @@ -4621,7 +4738,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ __pyx_v_sinRot3 = sin(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":318 + /* "pyFAI/ext/_geometry.pyx":325 * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) # <<<<<<<<<<<<<< @@ -4630,21 +4747,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ __pyx_v_cosRot3 = cos(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":319 + /* "pyFAI/ext/_geometry.pyx":326 * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) * cdef ssize_t size = pos1.size, i = 0 # <<<<<<<<<<<<<< * assert pos2.size == size, "pos2.size == size" * cdef: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; __pyx_v_i = 0; - /* "pyFAI/ext/_geometry.pyx":320 + /* "pyFAI/ext/_geometry.pyx":327 * double cosRot3 = cos(rot3) * cdef ssize_t size = pos1.size, i = 0 * assert pos2.size == size, "pos2.size == size" # <<<<<<<<<<<<<< @@ -4653,35 +4770,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos2_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":322 + /* "pyFAI/ext/_geometry.pyx":329 * assert pos2.size == size, "pos2.size == size" * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -4694,52 +4811,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_c1 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_geometry.pyx":323 + /* "pyFAI/ext/_geometry.pyx":330 * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + * double[::1] out = numpy.empty(size, dtype=numpy.float64) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -4752,88 +4869,81 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec } } if (__pyx_t_3) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_c2 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_geometry.pyx":325 + /* "pyFAI/ext/_geometry.pyx":332 * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< * * if pos3 is None: */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_10 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3); + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_out = __pyx_t_10; + __pyx_t_10.memview = NULL; + __pyx_t_10.data = NULL; - /* "pyFAI/ext/_geometry.pyx":327 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + /* "pyFAI/ext/_geometry.pyx":334 + * double[::1] out = numpy.empty(size, dtype=numpy.float64) * * if pos3 is None: # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): @@ -4843,7 +4953,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec __pyx_t_11 = (__pyx_t_5 != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":328 + /* "pyFAI/ext/_geometry.pyx":335 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -4869,7 +4979,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) + #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4879,7 +4989,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":329 + /* "pyFAI/ext/_geometry.pyx":336 * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_chi(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -4889,7 +4999,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec __pyx_t_14 = __pyx_v_i; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_chi((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_16)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_chi((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -4903,7 +5013,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec #endif } - /* "pyFAI/ext/_geometry.pyx":328 + /* "pyFAI/ext/_geometry.pyx":335 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -4924,7 +5034,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":331 + /* "pyFAI/ext/_geometry.pyx":338 * out[i] = f_chi(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * else: * assert pos3.size == size, "pos3.size == size" # <<<<<<<<<<<<<< @@ -4933,35 +5043,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_11)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos3_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":332 + /* "pyFAI/ext/_geometry.pyx":339 * else: * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_chi(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -4974,40 +5084,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec } } if (__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4); - if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_c3 = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL; - /* "pyFAI/ext/_geometry.pyx":333 + /* "pyFAI/ext/_geometry.pyx":340 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -5033,7 +5143,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) + #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -5043,7 +5153,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":334 + /* "pyFAI/ext/_geometry.pyx":341 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_chi(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -5054,7 +5164,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_i; __pyx_t_21 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_chi((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_21)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_chi((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -5068,7 +5178,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec #endif } - /* "pyFAI/ext/_geometry.pyx":333 + /* "pyFAI/ext/_geometry.pyx":340 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -5088,79 +5198,146 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec } __pyx_L3:; - /* "pyFAI/ext/_geometry.pyx":336 + /* "pyFAI/ext/_geometry.pyx":343 * out[i] = f_chi(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * * if pos1.ndim == 2: # <<<<<<<<<<<<<< - * return out.reshape(pos1.shape[0], pos1.shape[1]) + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: */ __pyx_t_11 = ((__pyx_v_pos1->nd == 2) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":337 + /* "pyFAI/ext/_geometry.pyx":344 * * if pos1.ndim == 2: - * return out.reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< * else: - * return out + * return numpy.asarray(out) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_out), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; - __pyx_t_22 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_22 = 1; + __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_23 = PyTuple_New(2+__pyx_t_22); if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_23); - if (__pyx_t_7) { - PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + if (!__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_22 = PyTuple_New(1+1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_22, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_22, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } - PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_3 = 0; - __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_22 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + __pyx_t_3 = NULL; + __pyx_t_23 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_23 = 1; + } + } + __pyx_t_7 = PyTuple_New(2+__pyx_t_23); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_3) { + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + } + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_23, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_23, __pyx_t_22); + __Pyx_GIVEREF(__pyx_t_22); + __pyx_t_1 = 0; + __pyx_t_22 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":339 - * return out.reshape(pos1.shape[0], pos1.shape[1]) + /* "pyFAI/ext/_geometry.pyx":346 + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: - * return out # <<<<<<<<<<<<<< + * return numpy.asarray(out) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_out)); - __pyx_r = ((PyObject *)__pyx_v_out); + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_22 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_22)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_22); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_22) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_22); __pyx_t_22 = NULL; + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":290 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":298 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_chi(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -5175,30 +5352,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_17, 1); - __Pyx_XDECREF(__pyx_t_23); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_XDECREF(__pyx_t_22); __Pyx_AddTraceback("pyFAI.ext._geometry.calc_chi", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_c1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c2, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c3, 1); - __Pyx_XDECREF((PyObject *)__pyx_v_out); + __PYX_XDEC_MEMVIEW(&__pyx_v_out, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":344 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_geometry.pyx":353 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_q(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -5206,7 +5377,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_7calc_q(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9_geometry_6calc_q[] = "\n Calculate the q (scattering vector) array in parallel\n\n X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3))\n X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3))\n X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2)\n tan(Chi) = X2 / X1\n\n\n @param L: distance sample - PONI\n @param rot1: angle1\n @param rot2: angle2\n @param rot3: angle3\n @param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n @param pos2: numpy array with distances in meter along dim2 from PONI (X)\n @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n @param wavelength: in meter to get q in nm-1\n @return: ndarray of double with same shape and size as pos1\n "; +static char __pyx_doc_5pyFAI_3ext_9_geometry_6calc_q[] = "calc_q(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, double wavelength, pos3=None)\n\n Calculate the q (scattering vector) array using OpenMP\n\n X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3))\n X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3))\n X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2)\n tan(Chi) = X2 / X1\n\n\n :param L: distance sample - PONI\n :param rot1: angle1\n :param rot2: angle2\n :param rot3: angle3\n :param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n :param pos2: numpy array with distances in meter along dim2 from PONI (X)\n :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n :param wavelength: in meter to get q in nm-1\n :return: ndarray of double with same shape and size as pos1\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9_geometry_7calc_q = {"calc_q", (PyCFunction)__pyx_pw_5pyFAI_3ext_9_geometry_7calc_q, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9_geometry_6calc_q}; static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_7calc_q(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_L; @@ -5227,12 +5398,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_7calc_q(PyObject *__pyx_self, P static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_L,&__pyx_n_s_rot1,&__pyx_n_s_rot2,&__pyx_n_s_rot3,&__pyx_n_s_pos1,&__pyx_n_s_pos2,&__pyx_n_s_wavelength,&__pyx_n_s_pos3,0}; PyObject* values[8] = {0,0,0,0,0,0,0,0}; - /* "pyFAI/ext/_geometry.pyx":347 + /* "pyFAI/ext/_geometry.pyx":356 * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, * double wavelength, pos3=None): # <<<<<<<<<<<<<< * """ - * Calculate the q (scattering vector) array in parallel + * Calculate the q (scattering vector) array using OpenMP */ values[7] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { @@ -5258,32 +5429,32 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_7calc_q(PyObject *__pyx_self, P case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot3)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 6: if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_wavelength)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 7: if (kw_args > 0) { @@ -5292,7 +5463,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_7calc_q(PyObject *__pyx_self, P } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_q") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_q") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -5308,30 +5479,30 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_7calc_q(PyObject *__pyx_self, P default: goto __pyx_L5_argtuple_error; } } - __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos1 = ((PyArrayObject *)values[4]); __pyx_v_pos2 = ((PyArrayObject *)values[5]); - __pyx_v_wavelength = __pyx_PyFloat_AsDouble(values[6]); if (unlikely((__pyx_v_wavelength == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_wavelength = __pyx_PyFloat_AsDouble(values[6]); if (unlikely((__pyx_v_wavelength == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos3 = values[7]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_q", 0, 7, 8, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._geometry.calc_q", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(__pyx_self, __pyx_v_L, __pyx_v_rot1, __pyx_v_rot2, __pyx_v_rot3, __pyx_v_pos1, __pyx_v_pos2, __pyx_v_wavelength, __pyx_v_pos3); - /* "pyFAI/ext/_geometry.pyx":344 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":353 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_q(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -5358,9 +5529,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject __Pyx_memviewslice __pyx_v_c1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c2 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c3 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; + __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -5372,7 +5541,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject PyObject *__pyx_t_7 = NULL; __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_t_10 = NULL; + __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_11; Py_ssize_t __pyx_t_12; Py_ssize_t __pyx_t_13; @@ -5384,18 +5553,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_22 = NULL; + Py_ssize_t __pyx_t_23; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_q", 0); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - /* "pyFAI/ext/_geometry.pyx":368 + /* "pyFAI/ext/_geometry.pyx":377 * """ * cdef: * double sinRot1 = sin(rot1) # <<<<<<<<<<<<<< @@ -5404,7 +5569,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ __pyx_v_sinRot1 = sin(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":369 + /* "pyFAI/ext/_geometry.pyx":378 * cdef: * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) # <<<<<<<<<<<<<< @@ -5413,7 +5578,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ __pyx_v_cosRot1 = cos(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":370 + /* "pyFAI/ext/_geometry.pyx":379 * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) # <<<<<<<<<<<<<< @@ -5422,7 +5587,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ __pyx_v_sinRot2 = sin(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":371 + /* "pyFAI/ext/_geometry.pyx":380 * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) # <<<<<<<<<<<<<< @@ -5431,7 +5596,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ __pyx_v_cosRot2 = cos(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":372 + /* "pyFAI/ext/_geometry.pyx":381 * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) # <<<<<<<<<<<<<< @@ -5440,7 +5605,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ __pyx_v_sinRot3 = sin(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":373 + /* "pyFAI/ext/_geometry.pyx":382 * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) # <<<<<<<<<<<<<< @@ -5449,21 +5614,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ __pyx_v_cosRot3 = cos(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":374 + /* "pyFAI/ext/_geometry.pyx":383 * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) * ssize_t size = pos1.size, i = 0, ndim # <<<<<<<<<<<<<< * assert pos2.size == size, "pos2.size == size" * cdef: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; __pyx_v_i = 0; - /* "pyFAI/ext/_geometry.pyx":375 + /* "pyFAI/ext/_geometry.pyx":384 * double cosRot3 = cos(rot3) * ssize_t size = pos1.size, i = 0, ndim * assert pos2.size == size, "pos2.size == size" # <<<<<<<<<<<<<< @@ -5472,35 +5637,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos2_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":377 + /* "pyFAI/ext/_geometry.pyx":386 * assert pos2.size == size, "pos2.size == size" * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -5513,52 +5678,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_c1 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_geometry.pyx":378 + /* "pyFAI/ext/_geometry.pyx":387 * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + * double[::1] out = numpy.empty(size, dtype=numpy.float64) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -5571,88 +5736,81 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject } } if (__pyx_t_3) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_c2 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_geometry.pyx":380 + /* "pyFAI/ext/_geometry.pyx":389 * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< * * if pos3 is None: */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_10 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3); + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_out = __pyx_t_10; + __pyx_t_10.memview = NULL; + __pyx_t_10.data = NULL; - /* "pyFAI/ext/_geometry.pyx":382 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + /* "pyFAI/ext/_geometry.pyx":391 + * double[::1] out = numpy.empty(size, dtype=numpy.float64) * * if pos3 is None: # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): @@ -5662,7 +5820,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject __pyx_t_11 = (__pyx_t_5 != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":383 + /* "pyFAI/ext/_geometry.pyx":392 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -5688,7 +5846,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) + #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -5698,7 +5856,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":384 + /* "pyFAI/ext/_geometry.pyx":393 * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_q(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3, wavelength) # <<<<<<<<<<<<<< @@ -5708,7 +5866,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject __pyx_t_14 = __pyx_v_i; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_q((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3, __pyx_v_wavelength); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_16)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_q((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3, __pyx_v_wavelength); } } } @@ -5722,7 +5880,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject #endif } - /* "pyFAI/ext/_geometry.pyx":383 + /* "pyFAI/ext/_geometry.pyx":392 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -5743,7 +5901,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":386 + /* "pyFAI/ext/_geometry.pyx":395 * out[i] = f_q(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3, wavelength) * else: * assert pos3.size == size, "pos3.size == size" # <<<<<<<<<<<<<< @@ -5752,35 +5910,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pos3, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pos3, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_11)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos3_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":387 + /* "pyFAI/ext/_geometry.pyx":396 * else: * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_q(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3, wavelength) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pos3, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pos3, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -5793,40 +5951,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject } } if (__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4); - if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_c3 = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL; - /* "pyFAI/ext/_geometry.pyx":388 + /* "pyFAI/ext/_geometry.pyx":397 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -5852,7 +6010,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) + #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -5862,7 +6020,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":389 + /* "pyFAI/ext/_geometry.pyx":398 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_q(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3, wavelength) # <<<<<<<<<<<<<< @@ -5873,7 +6031,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_i; __pyx_t_21 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_q((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3, __pyx_v_wavelength); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_21)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_q((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3, __pyx_v_wavelength); } } } @@ -5887,7 +6045,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject #endif } - /* "pyFAI/ext/_geometry.pyx":388 + /* "pyFAI/ext/_geometry.pyx":397 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -5907,79 +6065,146 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject } __pyx_L3:; - /* "pyFAI/ext/_geometry.pyx":391 + /* "pyFAI/ext/_geometry.pyx":400 * out[i] = f_q(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3, wavelength) * * if pos1.ndim == 2: # <<<<<<<<<<<<<< - * return out.reshape(pos1.shape[0], pos1.shape[1]) + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: */ __pyx_t_11 = ((__pyx_v_pos1->nd == 2) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":392 + /* "pyFAI/ext/_geometry.pyx":401 * * if pos1.ndim == 2: - * return out.reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< * else: - * return out + * return numpy.asarray(out) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_out), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; - __pyx_t_22 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_22 = 1; + __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_23 = PyTuple_New(2+__pyx_t_22); if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_23); - if (__pyx_t_7) { - PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + if (!__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_22 = PyTuple_New(1+1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_22, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_22, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } - PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_3 = 0; - __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_22 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + __pyx_t_3 = NULL; + __pyx_t_23 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_23 = 1; + } + } + __pyx_t_7 = PyTuple_New(2+__pyx_t_23); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_3) { + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + } + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_23, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_23, __pyx_t_22); + __Pyx_GIVEREF(__pyx_t_22); + __pyx_t_1 = 0; + __pyx_t_22 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":394 - * return out.reshape(pos1.shape[0], pos1.shape[1]) + /* "pyFAI/ext/_geometry.pyx":403 + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: - * return out # <<<<<<<<<<<<<< + * return numpy.asarray(out) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_out)); - __pyx_r = ((PyObject *)__pyx_v_out); + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_22 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_22)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_22); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_22) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_22); __pyx_t_22 = NULL; + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":344 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":353 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_q(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -5994,30 +6219,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_17, 1); - __Pyx_XDECREF(__pyx_t_23); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_XDECREF(__pyx_t_22); __Pyx_AddTraceback("pyFAI.ext._geometry.calc_q", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_c1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c2, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c3, 1); - __Pyx_XDECREF((PyObject *)__pyx_v_out); + __PYX_XDEC_MEMVIEW(&__pyx_v_out, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":399 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_geometry.pyx":410 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_r(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): @@ -6025,7 +6244,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_9calc_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9_geometry_8calc_r[] = "\n Calculate the radius array (radial direction) in parallel\n\n @param L: distance sample - PONI\n @param rot1: angle1\n @param rot2: angle2\n @param rot3: angle3\n @param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n @param pos2: numpy array with distances in meter along dim2 from PONI (X)\n @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n @return: ndarray of double with same shape and size as pos1\n "; +static char __pyx_doc_5pyFAI_3ext_9_geometry_8calc_r[] = "calc_r(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)\n\n Calculate the radius array (radial direction) in parallel\n\n :param L: distance sample - PONI\n :param rot1: angle1\n :param rot2: angle2\n :param rot3: angle3\n :param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n :param pos2: numpy array with distances in meter along dim2 from PONI (X)\n :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n :return: ndarray of double with same shape and size as pos1\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9_geometry_9calc_r = {"calc_r", (PyCFunction)__pyx_pw_5pyFAI_3ext_9_geometry_9calc_r, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9_geometry_8calc_r}; static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_9calc_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_L; @@ -6045,7 +6264,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_9calc_r(PyObject *__pyx_self, P static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_L,&__pyx_n_s_rot1,&__pyx_n_s_rot2,&__pyx_n_s_rot3,&__pyx_n_s_pos1,&__pyx_n_s_pos2,&__pyx_n_s_pos3,0}; PyObject* values[7] = {0,0,0,0,0,0,0}; - /* "pyFAI/ext/_geometry.pyx":401 + /* "pyFAI/ext/_geometry.pyx":412 * def calc_r(double L, double rot1, double rot2, double rot3, * numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): # <<<<<<<<<<<<<< @@ -6075,27 +6294,27 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_9calc_r(PyObject *__pyx_self, P case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot3)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 6: if (kw_args > 0) { @@ -6104,7 +6323,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_9calc_r(PyObject *__pyx_self, P } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_r") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_r") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -6119,30 +6338,30 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_9calc_r(PyObject *__pyx_self, P default: goto __pyx_L5_argtuple_error; } } - __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos1 = ((PyArrayObject *)values[4]); __pyx_v_pos2 = ((PyArrayObject *)values[5]); __pyx_v_pos3 = ((PyArrayObject *)values[6]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_r", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._geometry.calc_r", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(__pyx_self, __pyx_v_L, __pyx_v_rot1, __pyx_v_rot2, __pyx_v_rot3, __pyx_v_pos1, __pyx_v_pos2, __pyx_v_pos3); - /* "pyFAI/ext/_geometry.pyx":399 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":410 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_r(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): @@ -6169,9 +6388,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject __Pyx_memviewslice __pyx_v_c1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c2 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c3 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; + __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -6183,7 +6400,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject PyObject *__pyx_t_7 = NULL; __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_t_10 = NULL; + __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_11; Py_ssize_t __pyx_t_12; Py_ssize_t __pyx_t_13; @@ -6195,18 +6412,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_22 = NULL; + Py_ssize_t __pyx_t_23; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_r", 0); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - /* "pyFAI/ext/_geometry.pyx":415 + /* "pyFAI/ext/_geometry.pyx":426 * """ * cdef: * double sinRot1 = sin(rot1) # <<<<<<<<<<<<<< @@ -6215,7 +6428,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ __pyx_v_sinRot1 = sin(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":416 + /* "pyFAI/ext/_geometry.pyx":427 * cdef: * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) # <<<<<<<<<<<<<< @@ -6224,7 +6437,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ __pyx_v_cosRot1 = cos(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":417 + /* "pyFAI/ext/_geometry.pyx":428 * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) # <<<<<<<<<<<<<< @@ -6233,7 +6446,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ __pyx_v_sinRot2 = sin(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":418 + /* "pyFAI/ext/_geometry.pyx":429 * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) # <<<<<<<<<<<<<< @@ -6242,7 +6455,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ __pyx_v_cosRot2 = cos(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":419 + /* "pyFAI/ext/_geometry.pyx":430 * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) # <<<<<<<<<<<<<< @@ -6251,7 +6464,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ __pyx_v_sinRot3 = sin(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":420 + /* "pyFAI/ext/_geometry.pyx":431 * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) # <<<<<<<<<<<<<< @@ -6260,21 +6473,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ __pyx_v_cosRot3 = cos(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":421 + /* "pyFAI/ext/_geometry.pyx":432 * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) * ssize_t size = pos1.size, i = 0 # <<<<<<<<<<<<<< * assert pos2.size == size, "pos2.size == size" * cdef: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; __pyx_v_i = 0; - /* "pyFAI/ext/_geometry.pyx":422 + /* "pyFAI/ext/_geometry.pyx":433 * double cosRot3 = cos(rot3) * ssize_t size = pos1.size, i = 0 * assert pos2.size == size, "pos2.size == size" # <<<<<<<<<<<<<< @@ -6283,35 +6496,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos2_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":424 + /* "pyFAI/ext/_geometry.pyx":435 * assert pos2.size == size, "pos2.size == size" * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -6324,52 +6537,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_c1 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_geometry.pyx":425 + /* "pyFAI/ext/_geometry.pyx":436 * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + * double[::1] out = numpy.empty(size, dtype=numpy.float64) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -6382,88 +6595,81 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject } } if (__pyx_t_3) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_c2 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_geometry.pyx":427 + /* "pyFAI/ext/_geometry.pyx":438 * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< * * if pos3 is None: */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_10 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3); + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_out = __pyx_t_10; + __pyx_t_10.memview = NULL; + __pyx_t_10.data = NULL; - /* "pyFAI/ext/_geometry.pyx":429 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + /* "pyFAI/ext/_geometry.pyx":440 + * double[::1] out = numpy.empty(size, dtype=numpy.float64) * * if pos3 is None: # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): @@ -6473,7 +6679,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject __pyx_t_11 = (__pyx_t_5 != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":430 + /* "pyFAI/ext/_geometry.pyx":441 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -6499,7 +6705,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) + #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -6509,7 +6715,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":431 + /* "pyFAI/ext/_geometry.pyx":442 * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_r(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -6519,7 +6725,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject __pyx_t_14 = __pyx_v_i; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_r((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_16)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_r((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -6533,7 +6739,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject #endif } - /* "pyFAI/ext/_geometry.pyx":430 + /* "pyFAI/ext/_geometry.pyx":441 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -6554,7 +6760,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":433 + /* "pyFAI/ext/_geometry.pyx":444 * out[i] = f_r(c1[i], c2[i], L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * else: * assert pos3.size == size, "pos3.size == size" # <<<<<<<<<<<<<< @@ -6563,35 +6769,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_11)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos3_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":434 + /* "pyFAI/ext/_geometry.pyx":445 * else: * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_r(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -6604,40 +6810,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject } } if (__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4); - if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_c3 = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL; - /* "pyFAI/ext/_geometry.pyx":435 + /* "pyFAI/ext/_geometry.pyx":446 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -6663,7 +6869,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) + #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -6673,7 +6879,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":436 + /* "pyFAI/ext/_geometry.pyx":447 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_r(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -6684,7 +6890,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_i; __pyx_t_21 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_r((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_21)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_r((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); } } } @@ -6698,7 +6904,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject #endif } - /* "pyFAI/ext/_geometry.pyx":435 + /* "pyFAI/ext/_geometry.pyx":446 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -6718,79 +6924,146 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject } __pyx_L3:; - /* "pyFAI/ext/_geometry.pyx":438 + /* "pyFAI/ext/_geometry.pyx":449 * out[i] = f_r(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * * if pos1.ndim == 2: # <<<<<<<<<<<<<< - * return out.reshape(pos1.shape[0], pos1.shape[1]) + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: */ __pyx_t_11 = ((__pyx_v_pos1->nd == 2) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":439 + /* "pyFAI/ext/_geometry.pyx":450 * * if pos1.ndim == 2: - * return out.reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< * else: - * return out + * return numpy.asarray(out) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_out), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; - __pyx_t_22 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_22 = 1; + __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_23 = PyTuple_New(2+__pyx_t_22); if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_23); - if (__pyx_t_7) { - PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + if (!__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_22 = PyTuple_New(1+1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_22, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_22, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } - PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_3 = 0; - __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_22 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + __pyx_t_3 = NULL; + __pyx_t_23 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_23 = 1; + } + } + __pyx_t_7 = PyTuple_New(2+__pyx_t_23); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_3) { + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + } + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_23, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_23, __pyx_t_22); + __Pyx_GIVEREF(__pyx_t_22); + __pyx_t_1 = 0; + __pyx_t_22 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":441 - * return out.reshape(pos1.shape[0], pos1.shape[1]) + /* "pyFAI/ext/_geometry.pyx":452 + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: - * return out # <<<<<<<<<<<<<< + * return numpy.asarray(out) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_out)); - __pyx_r = ((PyObject *)__pyx_v_out); + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_22 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_22)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_22); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_22) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_22); __pyx_t_22 = NULL; + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":399 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":410 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_r(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): @@ -6805,30 +7078,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_17, 1); - __Pyx_XDECREF(__pyx_t_23); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_XDECREF(__pyx_t_22); __Pyx_AddTraceback("pyFAI.ext._geometry.calc_r", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_c1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c2, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c3, 1); - __Pyx_XDECREF((PyObject *)__pyx_v_out); + __PYX_XDEC_MEMVIEW(&__pyx_v_out, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":446 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_geometry.pyx":459 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_cosa(double L, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -6836,7 +7103,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_11calc_cosa(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9_geometry_10calc_cosa[] = "\n Calculate the cosine of the incidence angle in parallel\n\n @param L: distance sa - PONI\n @param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n @param pos2: numpy array with distances in meter along dim2 from PONI (X)\n @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n @return: ndarray of double with same shape and size as pos1\n "; +static char __pyx_doc_5pyFAI_3ext_9_geometry_10calc_cosa[] = "calc_cosa(double L, ndarray pos1, ndarray pos2, ndarray pos3=None)\nCalculate the cosine of the incidence angle using OpenMP. \n Used for sensors thickness effect corrections \n\n :param L: distance sample - PONI\n :param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n :param pos2: numpy array with distances in meter along dim2 from PONI (X)\n :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n :return: ndarray of double with same shape and size as pos1\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9_geometry_11calc_cosa = {"calc_cosa", (PyCFunction)__pyx_pw_5pyFAI_3ext_9_geometry_11calc_cosa, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9_geometry_10calc_cosa}; static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_11calc_cosa(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_L; @@ -6853,12 +7120,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_11calc_cosa(PyObject *__pyx_sel static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_L,&__pyx_n_s_pos1,&__pyx_n_s_pos2,&__pyx_n_s_pos3,0}; PyObject* values[4] = {0,0,0,0}; - /* "pyFAI/ext/_geometry.pyx":449 + /* "pyFAI/ext/_geometry.pyx":462 * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): # <<<<<<<<<<<<<< - * """ - * Calculate the cosine of the incidence angle in parallel + * """Calculate the cosine of the incidence angle using OpenMP. + * Used for sensors thickness effect corrections */ values[3] = (PyObject *)((PyArrayObject *)Py_None); if (unlikely(__pyx_kwds)) { @@ -6880,12 +7147,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_11calc_cosa(PyObject *__pyx_sel case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_cosa", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_cosa", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_cosa", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_cosa", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (kw_args > 0) { @@ -6894,7 +7161,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_11calc_cosa(PyObject *__pyx_sel } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_cosa") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_cosa") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -6906,27 +7173,27 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_11calc_cosa(PyObject *__pyx_sel default: goto __pyx_L5_argtuple_error; } } - __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos1 = ((PyArrayObject *)values[1]); __pyx_v_pos2 = ((PyArrayObject *)values[2]); __pyx_v_pos3 = ((PyArrayObject *)values[3]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_cosa", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_cosa", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._geometry.calc_cosa", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(__pyx_self, __pyx_v_L, __pyx_v_pos1, __pyx_v_pos2, __pyx_v_pos3); - /* "pyFAI/ext/_geometry.pyx":446 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":459 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_cosa(double L, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -6947,9 +7214,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj __Pyx_memviewslice __pyx_v_c1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c2 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c3 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; + __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -6961,7 +7226,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj PyObject *__pyx_t_7 = NULL; __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_t_10 = NULL; + __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_11; Py_ssize_t __pyx_t_12; Py_ssize_t __pyx_t_13; @@ -6973,32 +7238,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_22 = NULL; + Py_ssize_t __pyx_t_23; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_cosa", 0); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - /* "pyFAI/ext/_geometry.pyx":459 - * @return: ndarray of double with same shape and size as pos1 + /* "pyFAI/ext/_geometry.pyx":472 + * :return: ndarray of double with same shape and size as pos1 * """ * cdef ssize_t size = pos1.size, i = 0 # <<<<<<<<<<<<<< * assert pos2.size == size, "pos2.size == size" * cdef: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; __pyx_v_i = 0; - /* "pyFAI/ext/_geometry.pyx":460 + /* "pyFAI/ext/_geometry.pyx":473 * """ * cdef ssize_t size = pos1.size, i = 0 * assert pos2.size == size, "pos2.size == size" # <<<<<<<<<<<<<< @@ -7007,35 +7268,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos2_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":462 + /* "pyFAI/ext/_geometry.pyx":475 * assert pos2.size == size, "pos2.size == size" * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -7048,52 +7309,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_c1 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_geometry.pyx":463 + /* "pyFAI/ext/_geometry.pyx":476 * cdef: * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + * double[::1] out = numpy.empty(size, dtype=numpy.float64) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -7106,88 +7367,81 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj } } if (__pyx_t_3) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_c2 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_geometry.pyx":465 + /* "pyFAI/ext/_geometry.pyx":478 * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< + * double[::1] out = numpy.empty(size, dtype=numpy.float64) # <<<<<<<<<<<<<< * * if pos3 is None: */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_10 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3); + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_out = __pyx_t_10; + __pyx_t_10.memview = NULL; + __pyx_t_10.data = NULL; - /* "pyFAI/ext/_geometry.pyx":467 - * numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + /* "pyFAI/ext/_geometry.pyx":480 + * double[::1] out = numpy.empty(size, dtype=numpy.float64) * * if pos3 is None: # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): @@ -7197,7 +7451,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj __pyx_t_11 = (__pyx_t_5 != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":468 + /* "pyFAI/ext/_geometry.pyx":481 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -7223,7 +7477,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) + #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7233,7 +7487,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":469 + /* "pyFAI/ext/_geometry.pyx":482 * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_cosa(c1[i], c2[i], L) # <<<<<<<<<<<<<< @@ -7243,7 +7497,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj __pyx_t_14 = __pyx_v_i; __pyx_t_15 = __pyx_v_i; __pyx_t_16 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_cosa((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_16)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_cosa((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_14)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_15)) ))), __pyx_v_L); } } } @@ -7257,7 +7511,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj #endif } - /* "pyFAI/ext/_geometry.pyx":468 + /* "pyFAI/ext/_geometry.pyx":481 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -7278,7 +7532,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":471 + /* "pyFAI/ext/_geometry.pyx":484 * out[i] = f_cosa(c1[i], c2[i], L) * else: * assert pos3.size == size, "pos3.size == size" # <<<<<<<<<<<<<< @@ -7287,35 +7541,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_11)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos3_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":472 + /* "pyFAI/ext/_geometry.pyx":485 * else: * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_cosa(c1[i], c2[i], L + c3[i]) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -7328,40 +7582,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj } } if (__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4); - if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_c3 = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL; - /* "pyFAI/ext/_geometry.pyx":473 + /* "pyFAI/ext/_geometry.pyx":486 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -7387,7 +7641,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) + #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7397,7 +7651,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj { __pyx_v_i = 0 + 1 * __pyx_t_12; - /* "pyFAI/ext/_geometry.pyx":474 + /* "pyFAI/ext/_geometry.pyx":487 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): * out[i] = f_cosa(c1[i], c2[i], L + c3[i]) # <<<<<<<<<<<<<< @@ -7408,7 +7662,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj __pyx_t_19 = __pyx_v_i; __pyx_t_20 = __pyx_v_i; __pyx_t_21 = __pyx_v_i; - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_f_5pyFAI_3ext_9_geometry_f_cosa((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) ))))); + *((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_out.data) + __pyx_t_21)) )) = __pyx_f_5pyFAI_3ext_9_geometry_f_cosa((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_18)) ))), (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_19)) ))), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_20)) ))))); } } } @@ -7422,7 +7676,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj #endif } - /* "pyFAI/ext/_geometry.pyx":473 + /* "pyFAI/ext/_geometry.pyx":486 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -7442,79 +7696,146 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj } __pyx_L3:; - /* "pyFAI/ext/_geometry.pyx":476 + /* "pyFAI/ext/_geometry.pyx":489 * out[i] = f_cosa(c1[i], c2[i], L + c3[i]) * * if pos1.ndim == 2: # <<<<<<<<<<<<<< - * return out.reshape(pos1.shape[0], pos1.shape[1]) + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: */ __pyx_t_11 = ((__pyx_v_pos1->nd == 2) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":477 + /* "pyFAI/ext/_geometry.pyx":490 * * if pos1.ndim == 2: - * return out.reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) # <<<<<<<<<<<<<< * else: - * return out + * return numpy.asarray(out) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_out), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; - __pyx_t_22 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_22 = 1; + __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_23 = PyTuple_New(2+__pyx_t_22); if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_23); - if (__pyx_t_7) { - PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + if (!__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + __pyx_t_22 = PyTuple_New(1+1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_22, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_22, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } - PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_3 = 0; - __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_22 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_22); + __pyx_t_3 = NULL; + __pyx_t_23 = 0; + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_23 = 1; + } + } + __pyx_t_7 = PyTuple_New(2+__pyx_t_23); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_3) { + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + } + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_23, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_23, __pyx_t_22); + __Pyx_GIVEREF(__pyx_t_22); + __pyx_t_1 = 0; + __pyx_t_22 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":479 - * return out.reshape(pos1.shape[0], pos1.shape[1]) + /* "pyFAI/ext/_geometry.pyx":492 + * return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) * else: - * return out # <<<<<<<<<<<<<< + * return numpy.asarray(out) # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_out)); - __pyx_r = ((PyObject *)__pyx_v_out); + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_out, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_22 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_22)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_22); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_22) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_22); __Pyx_GIVEREF(__pyx_t_22); __pyx_t_22 = NULL; + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":446 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":459 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_cosa(double L, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, @@ -7529,30 +7850,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_17, 1); - __Pyx_XDECREF(__pyx_t_23); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_XDECREF(__pyx_t_22); __Pyx_AddTraceback("pyFAI.ext._geometry.calc_cosa", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_c1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c2, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c3, 1); - __Pyx_XDECREF((PyObject *)__pyx_v_out); + __PYX_XDEC_MEMVIEW(&__pyx_v_out, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "pyFAI/ext/_geometry.pyx":484 - * @cython.boundscheck(False) - * @cython.wraparound(False) +/* "pyFAI/ext/_geometry.pyx":499 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_rad_azim(double L, # <<<<<<<<<<<<<< * double poni1, * double poni2, @@ -7560,7 +7875,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9_geometry_12calc_rad_azim[] = "\n\n raise KeyError when space is bad !\n "; +static char __pyx_doc_5pyFAI_3ext_9_geometry_12calc_rad_azim[] = "calc_rad_azim(double L, double poni1, double poni2, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None, space='2th', wavelength=None)\nCalculate the radial & azimutal position for each pixel from pos1, pos2, pos3. \n \n :param L: distance sample - PONI\n :param poni1: PONI coordinate along y axis\n :param poni2: PONI coordinate along x axis\n :param rot1: angle1\n :param rot2: angle2\n :param rot3: angle3\n :param pos1: numpy array with distances in meter along dim1 from PONI (Y)\n :param pos2: numpy array with distances in meter along dim2 from PONI (X)\n :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector\n :param space: can be \"2th\", \"q\" or \"r\" for radial units. Azimuthal units are radians \n :return: ndarray of double with same shape and size as pos1 + (2,), \n :raise: KeyError when space is bad !\n ValueError when wavelength is missing\n \n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9_geometry_13calc_rad_azim = {"calc_rad_azim", (PyCFunction)__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9_geometry_12calc_rad_azim}; static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_L; @@ -7584,7 +7899,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_L,&__pyx_n_s_poni1,&__pyx_n_s_poni2,&__pyx_n_s_rot1,&__pyx_n_s_rot2,&__pyx_n_s_rot3,&__pyx_n_s_pos1,&__pyx_n_s_pos2,&__pyx_n_s_pos3,&__pyx_n_s_space,&__pyx_n_s_wavelength,0}; PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0}; - /* "pyFAI/ext/_geometry.pyx":492 + /* "pyFAI/ext/_geometry.pyx":507 * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, * numpy.ndarray pos3=None, # <<<<<<<<<<<<<< @@ -7594,11 +7909,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx values[8] = (PyObject *)((PyArrayObject *)Py_None); values[9] = ((PyObject *)__pyx_kp_s_2th); - /* "pyFAI/ext/_geometry.pyx":494 + /* "pyFAI/ext/_geometry.pyx":509 * numpy.ndarray pos3=None, * space="2th", * wavelength=None): # <<<<<<<<<<<<<< - * """ + * """Calculate the radial & azimutal position for each pixel from pos1, pos2, pos3. * */ values[10] = ((PyObject *)Py_None); @@ -7628,37 +7943,37 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_poni1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_poni2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rot3)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 6: if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos1)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 7: if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 8: if (kw_args > 0) { @@ -7677,7 +7992,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_rad_azim") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "calc_rad_azim") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -7696,12 +8011,12 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx default: goto __pyx_L5_argtuple_error; } } - __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_poni1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_poni1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_poni2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_poni2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L3_error;} - __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_L = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_L == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_poni1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_poni1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_poni2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_poni2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot1 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rot1 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot2 = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_rot2 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_rot3 = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_rot3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_pos1 = ((PyArrayObject *)values[6]); __pyx_v_pos2 = ((PyArrayObject *)values[7]); __pyx_v_pos3 = ((PyArrayObject *)values[8]); @@ -7710,20 +8025,20 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9_geometry_13calc_rad_azim(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("calc_rad_azim", 0, 8, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._geometry.calc_rad_azim", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos1), __pyx_ptype_5numpy_ndarray, 0, "pos1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos2), __pyx_ptype_5numpy_ndarray, 0, "pos2", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos3), __pyx_ptype_5numpy_ndarray, 1, "pos3", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(__pyx_self, __pyx_v_L, __pyx_v_poni1, __pyx_v_poni2, __pyx_v_rot1, __pyx_v_rot2, __pyx_v_rot3, __pyx_v_pos1, __pyx_v_pos2, __pyx_v_pos3, __pyx_v_space, __pyx_v_wavelength); - /* "pyFAI/ext/_geometry.pyx":484 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":499 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_rad_azim(double L, # <<<<<<<<<<<<<< * double poni1, * double poni2, @@ -7751,13 +8066,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __Pyx_memviewslice __pyx_v_c1 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c2 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_c3 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_v_out = 0; + __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; double __pyx_v_t1; double __pyx_v_t2; double __pyx_v_t3; double __pyx_v_fwavelength; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; + PyObject *__pyx_v_nout = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -7769,7 +8083,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P PyObject *__pyx_t_7 = NULL; __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyArrayObject *__pyx_t_10 = NULL; + __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_11; double __pyx_t_12; Py_ssize_t __pyx_t_13; @@ -7781,13 +8095,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P Py_ssize_t __pyx_t_19; Py_ssize_t __pyx_t_20; Py_ssize_t __pyx_t_21; - long __pyx_t_22; + Py_ssize_t __pyx_t_22; Py_ssize_t __pyx_t_23; - long __pyx_t_24; + Py_ssize_t __pyx_t_24; Py_ssize_t __pyx_t_25; - long __pyx_t_26; + Py_ssize_t __pyx_t_26; Py_ssize_t __pyx_t_27; - long __pyx_t_28; + Py_ssize_t __pyx_t_28; __Pyx_memviewslice __pyx_t_29 = { 0, 0, { 0 }, { 0 }, { 0 } }; Py_ssize_t __pyx_t_30; Py_ssize_t __pyx_t_31; @@ -7799,13 +8113,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P Py_ssize_t __pyx_t_37; Py_ssize_t __pyx_t_38; Py_ssize_t __pyx_t_39; - long __pyx_t_40; + Py_ssize_t __pyx_t_40; Py_ssize_t __pyx_t_41; - long __pyx_t_42; + Py_ssize_t __pyx_t_42; Py_ssize_t __pyx_t_43; - long __pyx_t_44; + Py_ssize_t __pyx_t_44; Py_ssize_t __pyx_t_45; - long __pyx_t_46; + Py_ssize_t __pyx_t_46; PyObject *__pyx_t_47 = NULL; Py_ssize_t __pyx_t_48; PyObject *__pyx_t_49 = NULL; @@ -7813,26 +8127,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("calc_rad_azim", 0); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - /* "pyFAI/ext/_geometry.pyx":499 - * raise KeyError when space is bad ! + /* "pyFAI/ext/_geometry.pyx":527 + * * """ * cdef ssize_t size = pos1.size, i = 0 # <<<<<<<<<<<<<< * assert pos2.size == size, "pos2.size == size" * cdef: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; __pyx_v_i = 0; - /* "pyFAI/ext/_geometry.pyx":500 + /* "pyFAI/ext/_geometry.pyx":528 * """ * cdef ssize_t size = pos1.size, i = 0 * assert pos2.size == size, "pos2.size == size" # <<<<<<<<<<<<<< @@ -7841,23 +8151,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos2_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":502 + /* "pyFAI/ext/_geometry.pyx":530 * assert pos2.size == size, "pos2.size == size" * cdef: * double sinRot1 = sin(rot1) # <<<<<<<<<<<<<< @@ -7866,7 +8176,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_sinRot1 = sin(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":503 + /* "pyFAI/ext/_geometry.pyx":531 * cdef: * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) # <<<<<<<<<<<<<< @@ -7875,7 +8185,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_cosRot1 = cos(__pyx_v_rot1); - /* "pyFAI/ext/_geometry.pyx":504 + /* "pyFAI/ext/_geometry.pyx":532 * double sinRot1 = sin(rot1) * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) # <<<<<<<<<<<<<< @@ -7884,7 +8194,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_sinRot2 = sin(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":505 + /* "pyFAI/ext/_geometry.pyx":533 * double cosRot1 = cos(rot1) * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) # <<<<<<<<<<<<<< @@ -7893,7 +8203,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_cosRot2 = cos(__pyx_v_rot2); - /* "pyFAI/ext/_geometry.pyx":506 + /* "pyFAI/ext/_geometry.pyx":534 * double sinRot2 = sin(rot2) * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) # <<<<<<<<<<<<<< @@ -7902,7 +8212,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_sinRot3 = sin(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":507 + /* "pyFAI/ext/_geometry.pyx":535 * double cosRot2 = cos(rot2) * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) # <<<<<<<<<<<<<< @@ -7911,7 +8221,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_cosRot3 = cos(__pyx_v_rot3); - /* "pyFAI/ext/_geometry.pyx":508 + /* "pyFAI/ext/_geometry.pyx":536 * double sinRot3 = sin(rot3) * double cosRot3 = cos(rot3) * int cspace = 0 # <<<<<<<<<<<<<< @@ -7920,19 +8230,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_cspace = 0; - /* "pyFAI/ext/_geometry.pyx":509 + /* "pyFAI/ext/_geometry.pyx":537 * double cosRot3 = cos(rot3) * int cspace = 0 * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos1), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -7945,52 +8255,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P } } if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_c1 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/_geometry.pyx":510 + /* "pyFAI/ext/_geometry.pyx":538 * int cspace = 0 * double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * double[::1] c3 - * numpy.ndarray[numpy.float32_t, ndim = 2] out = numpy.empty((size, 2), + * float[:, ::1] out = numpy.empty((size, 2), dtype=numpy.float32) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos2), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -8003,54 +8313,54 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P } } if (__pyx_t_3) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_c2 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/_geometry.pyx":512 + /* "pyFAI/ext/_geometry.pyx":540 * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) * double[::1] c3 - * numpy.ndarray[numpy.float32_t, ndim = 2] out = numpy.empty((size, 2), # <<<<<<<<<<<<<< - * dtype=numpy.float32) + * float[:, ::1] out = numpy.empty((size, 2), dtype=numpy.float32) # <<<<<<<<<<<<<< * double t1, t2, t3, fwavelength + * */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); @@ -8058,66 +8368,43 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - - /* "pyFAI/ext/_geometry.pyx":513 - * double[::1] c3 - * numpy.ndarray[numpy.float32_t, ndim = 2] out = numpy.empty((size, 2), - * dtype=numpy.float32) # <<<<<<<<<<<<<< - * double t1, t2, t3, fwavelength - * - */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "pyFAI/ext/_geometry.pyx":512 - * double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) - * double[::1] c3 - * numpy.ndarray[numpy.float32_t, ndim = 2] out = numpy.empty((size, 2), # <<<<<<<<<<<<<< - * dtype=numpy.float32) - * double t1, t2, t3, fwavelength - */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_out.diminfo[1].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out.diminfo[1].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[1]; - } - } - __pyx_t_10 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_3); + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_out = __pyx_t_10; + __pyx_t_10.memview = NULL; + __pyx_t_10.data = NULL; - /* "pyFAI/ext/_geometry.pyx":516 + /* "pyFAI/ext/_geometry.pyx":543 * double t1, t2, t3, fwavelength * * if space == "2th": # <<<<<<<<<<<<<< * cspace = 1 * elif space == "q": */ - __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_space, __pyx_kp_s_2th, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_space, __pyx_kp_s_2th, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_5) { - /* "pyFAI/ext/_geometry.pyx":517 + /* "pyFAI/ext/_geometry.pyx":544 * * if space == "2th": * cspace = 1 # <<<<<<<<<<<<<< @@ -8128,17 +8415,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P goto __pyx_L3; } - /* "pyFAI/ext/_geometry.pyx":518 + /* "pyFAI/ext/_geometry.pyx":545 * if space == "2th": * cspace = 1 * elif space == "q": # <<<<<<<<<<<<<< * cspace = 2 * if not wavelength: */ - __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_space, __pyx_n_s_q, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_v_space, __pyx_n_s_q, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_5) { - /* "pyFAI/ext/_geometry.pyx":519 + /* "pyFAI/ext/_geometry.pyx":546 * cspace = 1 * elif space == "q": * cspace = 2 # <<<<<<<<<<<<<< @@ -8147,56 +8434,56 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_v_cspace = 2; - /* "pyFAI/ext/_geometry.pyx":520 + /* "pyFAI/ext/_geometry.pyx":547 * elif space == "q": * cspace = 2 * if not wavelength: # <<<<<<<<<<<<<< * raise ValueError("wavelength is needed for q calculation") * else: */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_wavelength); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_wavelength); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_11 = ((!__pyx_t_5) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":521 + /* "pyFAI/ext/_geometry.pyx":548 * cspace = 2 * if not wavelength: * raise ValueError("wavelength is needed for q calculation") # <<<<<<<<<<<<<< * else: * fwavelength = float(wavelength) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":523 + /* "pyFAI/ext/_geometry.pyx":550 * raise ValueError("wavelength is needed for q calculation") * else: * fwavelength = float(wavelength) # <<<<<<<<<<<<<< * elif space == "r": * cspace = 3 */ - __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_wavelength); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_wavelength); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_fwavelength = __pyx_t_12; } goto __pyx_L3; } - /* "pyFAI/ext/_geometry.pyx":524 + /* "pyFAI/ext/_geometry.pyx":551 * else: * fwavelength = float(wavelength) * elif space == "r": # <<<<<<<<<<<<<< * cspace = 3 * else: */ - __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_space, __pyx_n_s_r, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_space, __pyx_n_s_r, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_11) { - /* "pyFAI/ext/_geometry.pyx":525 + /* "pyFAI/ext/_geometry.pyx":552 * fwavelength = float(wavelength) * elif space == "r": * cspace = 3 # <<<<<<<<<<<<<< @@ -8208,30 +8495,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":527 + /* "pyFAI/ext/_geometry.pyx":554 * cspace = 3 * else: * raise KeyError("Not implemented space %s in cython" % space) # <<<<<<<<<<<<<< * * if pos3 is None: */ - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Not_implemented_space_s_in_cytho, __pyx_v_space); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Not_implemented_space_s_in_cytho, __pyx_v_space); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L3:; - /* "pyFAI/ext/_geometry.pyx":529 + /* "pyFAI/ext/_geometry.pyx":556 * raise KeyError("Not implemented space %s in cython" % space) * * if pos3 is None: # <<<<<<<<<<<<<< @@ -8242,7 +8529,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_5 = (__pyx_t_11 != 0); if (__pyx_t_5) { - /* "pyFAI/ext/_geometry.pyx":530 + /* "pyFAI/ext/_geometry.pyx":557 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -8258,14 +8545,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_2 = __pyx_v_size; if (1 == 0) abort(); { - Py_ssize_t __pyx_parallel_temp0 = 0xbad0bad0; - double __pyx_parallel_temp1 = __PYX_NAN(); - double __pyx_parallel_temp2 = __PYX_NAN(); - double __pyx_parallel_temp3 = __PYX_NAN(); - const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; - PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; - int __pyx_parallel_why; - __pyx_parallel_why = 0; #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely @@ -8276,28 +8555,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P if (__pyx_t_14 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_27, __pyx_t_23, __pyx_t_22, __pyx_t_25, __pyx_t_21, __pyx_t_28, __pyx_t_12, __pyx_t_19, __pyx_t_15, __pyx_t_17, __pyx_t_24, __pyx_t_16, __pyx_t_26, __pyx_t_18) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_27, __pyx_t_28, __pyx_t_20, __pyx_t_26, __pyx_t_21, __pyx_t_24, __pyx_t_23, __pyx_t_25, __pyx_t_15, __pyx_t_17, __pyx_t_19, __pyx_t_16, __pyx_t_18, __pyx_t_22) #endif /* _OPENMP */ { #ifdef _OPENMP - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - Py_BEGIN_ALLOW_THREADS - #endif /* _OPENMP */ - #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_t3) lastprivate(__pyx_v_t1) lastprivate(__pyx_v_t2) schedule(static) + #pragma omp for lastprivate(__pyx_v_t1) lastprivate(__pyx_v_t3) lastprivate(__pyx_v_t2) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_14; __pyx_t_13++){ - if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_13; /* Initialize private variables to invalid values */ - __pyx_v_t3 = ((double)__PYX_NAN()); __pyx_v_t1 = ((double)__PYX_NAN()); + __pyx_v_t3 = ((double)__PYX_NAN()); __pyx_v_t2 = ((double)__PYX_NAN()); - /* "pyFAI/ext/_geometry.pyx":531 + /* "pyFAI/ext/_geometry.pyx":558 * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): * t1 = f_t1(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -8308,7 +8580,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_16 = __pyx_v_i; __pyx_v_t1 = __pyx_f_5pyFAI_3ext_9_geometry_f_t1(((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_15)) ))) - __pyx_v_poni1), ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_16)) ))) - __pyx_v_poni2), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); - /* "pyFAI/ext/_geometry.pyx":532 + /* "pyFAI/ext/_geometry.pyx":559 * for i in prange(size, nogil=True, schedule="static"): * t1 = f_t1(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t2 = f_t2(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -8319,7 +8591,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_18 = __pyx_v_i; __pyx_v_t2 = __pyx_f_5pyFAI_3ext_9_geometry_f_t2(((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_17)) ))) - __pyx_v_poni1), ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_18)) ))) - __pyx_v_poni2), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); - /* "pyFAI/ext/_geometry.pyx":533 + /* "pyFAI/ext/_geometry.pyx":560 * t1 = f_t1(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t2 = f_t2(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t3 = f_t3(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -8330,7 +8602,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_20 = __pyx_v_i; __pyx_v_t3 = __pyx_f_5pyFAI_3ext_9_geometry_f_t3(((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_19)) ))) - __pyx_v_poni1), ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_20)) ))) - __pyx_v_poni2), __pyx_v_L, __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); - /* "pyFAI/ext/_geometry.pyx":538 + /* "pyFAI/ext/_geometry.pyx":565 * elif cspace == 2: * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) * elif cspace == 3: # <<<<<<<<<<<<<< @@ -8339,7 +8611,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ switch (__pyx_v_cspace) { - /* "pyFAI/ext/_geometry.pyx":534 + /* "pyFAI/ext/_geometry.pyx":561 * t2 = f_t2(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t3 = f_t3(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * if cspace == 1: # <<<<<<<<<<<<<< @@ -8348,7 +8620,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ case 1: - /* "pyFAI/ext/_geometry.pyx":535 + /* "pyFAI/ext/_geometry.pyx":562 * t3 = f_t3(c1[i] - poni1, c2[i] - poni2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * if cspace == 1: * out[i, 0] = atan2(sqrt(t1 * t1 + t2 * t2), t3) # <<<<<<<<<<<<<< @@ -8357,10 +8629,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_t_21 = __pyx_v_i; __pyx_t_22 = 0; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_22, __pyx_pybuffernd_out.diminfo[1].strides) = atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3); + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_21 * __pyx_v_out.strides[0]) )) + __pyx_t_22)) )) = atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3); break; - /* "pyFAI/ext/_geometry.pyx":536 + /* "pyFAI/ext/_geometry.pyx":563 * if cspace == 1: * out[i, 0] = atan2(sqrt(t1 * t1 + t2 * t2), t3) * elif cspace == 2: # <<<<<<<<<<<<<< @@ -8369,30 +8641,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ case 2: - /* "pyFAI/ext/_geometry.pyx":537 + /* "pyFAI/ext/_geometry.pyx":564 * out[i, 0] = atan2(sqrt(t1 * t1 + t2 * t2), t3) * elif cspace == 2: * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) # <<<<<<<<<<<<<< * elif cspace == 3: * out[i, 0] = sqrt(t1 * t1 + t2 * t2) */ - __pyx_t_12 = (4.0e-9 * M_PI); - if (unlikely(__pyx_v_fwavelength == 0)) { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L11_error;} - } __pyx_t_23 = __pyx_v_i; __pyx_t_24 = 0; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_24, __pyx_pybuffernd_out.diminfo[1].strides) = ((__pyx_t_12 / __pyx_v_fwavelength) * sin((atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3) / 2.0))); + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_23 * __pyx_v_out.strides[0]) )) + __pyx_t_24)) )) = (((4.0e-9 * M_PI) / __pyx_v_fwavelength) * sin((atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3) / 2.0))); break; - /* "pyFAI/ext/_geometry.pyx":538 + /* "pyFAI/ext/_geometry.pyx":565 * elif cspace == 2: * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) * elif cspace == 3: # <<<<<<<<<<<<<< @@ -8401,7 +8662,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ case 3: - /* "pyFAI/ext/_geometry.pyx":539 + /* "pyFAI/ext/_geometry.pyx":566 * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) * elif cspace == 3: * out[i, 0] = sqrt(t1 * t1 + t2 * t2) # <<<<<<<<<<<<<< @@ -8410,12 +8671,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_t_25 = __pyx_v_i; __pyx_t_26 = 0; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_out.diminfo[1].strides) = sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))); + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_25 * __pyx_v_out.strides[0]) )) + __pyx_t_26)) )) = sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))); break; default: break; } - /* "pyFAI/ext/_geometry.pyx":540 + /* "pyFAI/ext/_geometry.pyx":567 * elif cspace == 3: * out[i, 0] = sqrt(t1 * t1 + t2 * t2) * out[i, 1] = atan2(t1, t2) # <<<<<<<<<<<<<< @@ -8424,85 +8685,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_t_27 = __pyx_v_i; __pyx_t_28 = 1; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_out.diminfo[1].strides) = atan2(__pyx_v_t1, __pyx_v_t2); - goto __pyx_L14; - __pyx_L11_error:; - { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - #ifdef _OPENMP - #pragma omp flush(__pyx_parallel_exc_type) - #endif /* _OPENMP */ - if (!__pyx_parallel_exc_type) { - __Pyx_ErrFetch(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb); - __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno; - __Pyx_GOTREF(__pyx_parallel_exc_type); - } - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - } - __pyx_parallel_why = 4; - goto __pyx_L13; - __pyx_L13:; - #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates0) - #endif /* _OPENMP */ - { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_t3; - __pyx_parallel_temp2 = __pyx_v_t1; - __pyx_parallel_temp3 = __pyx_v_t2; - } - __pyx_L14:; - #ifdef _OPENMP - #pragma omp flush(__pyx_parallel_why) - #endif /* _OPENMP */ + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_27 * __pyx_v_out.strides[0]) )) + __pyx_t_28)) )) = atan2(__pyx_v_t1, __pyx_v_t2); } } - #ifdef _OPENMP - Py_END_ALLOW_THREADS - #else -{ -#ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - #endif /* _OPENMP */ - /* Clean up any temporaries */ - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - #ifndef _OPENMP -} -#endif /* _OPENMP */ - } - } - if (__pyx_parallel_exc_type) { - /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */ - __pyx_parallel_why = 4; - } - if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_t3 = __pyx_parallel_temp1; - __pyx_v_t1 = __pyx_parallel_temp2; - __pyx_v_t2 = __pyx_parallel_temp3; - switch (__pyx_parallel_why) { - case 3: goto __pyx_L6_return; - case 4: - { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - __Pyx_GIVEREF(__pyx_parallel_exc_type); - __Pyx_ErrRestore(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb); - __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno; - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif } - goto __pyx_L7_error; - } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) @@ -8513,7 +8699,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P #endif } - /* "pyFAI/ext/_geometry.pyx":530 + /* "pyFAI/ext/_geometry.pyx":557 * * if pos3 is None: * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -8527,18 +8713,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P #endif goto __pyx_L8; } - __pyx_L6_return: { - #ifdef WITH_THREAD - Py_BLOCK_THREADS - #endif - goto __pyx_L0; - } - __pyx_L7_error: { - #ifdef WITH_THREAD - Py_BLOCK_THREADS - #endif - goto __pyx_L1_error; - } __pyx_L8:; } } @@ -8546,7 +8720,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":542 + /* "pyFAI/ext/_geometry.pyx":569 * out[i, 1] = atan2(t1, t2) * else: * assert pos3.size == size, "pos3.size == size" # <<<<<<<<<<<<<< @@ -8555,35 +8729,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_pos3_size_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/_geometry.pyx":543 + /* "pyFAI/ext/_geometry.pyx":570 * else: * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) # <<<<<<<<<<<<<< * for i in prange(size, nogil=True, schedule="static"): * t1 = f_t1(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pos3), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -8596,40 +8770,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P } } if (__pyx_t_7) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_29 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4); - if (unlikely(!__pyx_t_29.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_29.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_c3 = __pyx_t_29; __pyx_t_29.memview = NULL; __pyx_t_29.data = NULL; - /* "pyFAI/ext/_geometry.pyx":544 + /* "pyFAI/ext/_geometry.pyx":571 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -8645,14 +8819,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_14 = __pyx_v_size; if (1 == 0) abort(); { - Py_ssize_t __pyx_parallel_temp0 = 0xbad0bad0; - double __pyx_parallel_temp1 = __PYX_NAN(); - double __pyx_parallel_temp2 = __PYX_NAN(); - double __pyx_parallel_temp3 = __PYX_NAN(); - const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; - PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; - int __pyx_parallel_why; - __pyx_parallel_why = 0; #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) #undef likely #undef unlikely @@ -8663,28 +8829,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_31, __pyx_t_37, __pyx_t_30, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_32, __pyx_t_42, __pyx_t_38, __pyx_t_40, __pyx_t_36, __pyx_t_12, __pyx_t_41, __pyx_t_46, __pyx_t_45, __pyx_t_44, __pyx_t_43, __pyx_t_33) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_30, __pyx_t_46, __pyx_t_39, __pyx_t_37, __pyx_t_38, __pyx_t_35, __pyx_t_36, __pyx_t_42, __pyx_t_34, __pyx_t_44, __pyx_t_32, __pyx_t_41, __pyx_t_40, __pyx_t_33, __pyx_t_45, __pyx_t_31, __pyx_t_43) #endif /* _OPENMP */ { #ifdef _OPENMP - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - Py_BEGIN_ALLOW_THREADS - #endif /* _OPENMP */ - #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_t3) lastprivate(__pyx_v_t1) lastprivate(__pyx_v_t2) schedule(static) + #pragma omp for lastprivate(__pyx_v_t1) lastprivate(__pyx_v_t3) lastprivate(__pyx_v_t2) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_2; __pyx_t_13++){ - if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_13; /* Initialize private variables to invalid values */ - __pyx_v_t3 = ((double)__PYX_NAN()); __pyx_v_t1 = ((double)__PYX_NAN()); + __pyx_v_t3 = ((double)__PYX_NAN()); __pyx_v_t2 = ((double)__PYX_NAN()); - /* "pyFAI/ext/_geometry.pyx":545 + /* "pyFAI/ext/_geometry.pyx":572 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): * t1 = f_t1(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -8696,7 +8855,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_32 = __pyx_v_i; __pyx_v_t1 = __pyx_f_5pyFAI_3ext_9_geometry_f_t1(((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_30)) ))) - __pyx_v_poni1), ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_31)) ))) - __pyx_v_poni2), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_32)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); - /* "pyFAI/ext/_geometry.pyx":546 + /* "pyFAI/ext/_geometry.pyx":573 * for i in prange(size, nogil=True, schedule="static"): * t1 = f_t1(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t2 = f_t2(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -8708,7 +8867,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_35 = __pyx_v_i; __pyx_v_t2 = __pyx_f_5pyFAI_3ext_9_geometry_f_t2(((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_33)) ))) - __pyx_v_poni1), ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_34)) ))) - __pyx_v_poni2), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_35)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); - /* "pyFAI/ext/_geometry.pyx":547 + /* "pyFAI/ext/_geometry.pyx":574 * t1 = f_t1(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t2 = f_t2(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t3 = f_t3(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) # <<<<<<<<<<<<<< @@ -8720,7 +8879,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __pyx_t_38 = __pyx_v_i; __pyx_v_t3 = __pyx_f_5pyFAI_3ext_9_geometry_f_t3(((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c1.data) + __pyx_t_36)) ))) - __pyx_v_poni1), ((*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c2.data) + __pyx_t_37)) ))) - __pyx_v_poni2), (__pyx_v_L + (*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_c3.data) + __pyx_t_38)) )))), __pyx_v_sinRot1, __pyx_v_cosRot1, __pyx_v_sinRot2, __pyx_v_cosRot2, __pyx_v_sinRot3, __pyx_v_cosRot3); - /* "pyFAI/ext/_geometry.pyx":552 + /* "pyFAI/ext/_geometry.pyx":579 * elif cspace == 2: * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) * elif cspace == 3: # <<<<<<<<<<<<<< @@ -8729,7 +8888,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ switch (__pyx_v_cspace) { - /* "pyFAI/ext/_geometry.pyx":548 + /* "pyFAI/ext/_geometry.pyx":575 * t2 = f_t2(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * t3 = f_t3(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * if cspace == 1: # <<<<<<<<<<<<<< @@ -8738,7 +8897,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ case 1: - /* "pyFAI/ext/_geometry.pyx":549 + /* "pyFAI/ext/_geometry.pyx":576 * t3 = f_t3(c1[i] - poni1, c2[i] - poni2, L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) * if cspace == 1: * out[i, 0] = atan2(sqrt(t1 * t1 + t2 * t2), t3) # <<<<<<<<<<<<<< @@ -8747,10 +8906,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_t_39 = __pyx_v_i; __pyx_t_40 = 0; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_out.diminfo[1].strides) = atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3); + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_39 * __pyx_v_out.strides[0]) )) + __pyx_t_40)) )) = atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3); break; - /* "pyFAI/ext/_geometry.pyx":550 + /* "pyFAI/ext/_geometry.pyx":577 * if cspace == 1: * out[i, 0] = atan2(sqrt(t1 * t1 + t2 * t2), t3) * elif cspace == 2: # <<<<<<<<<<<<<< @@ -8759,30 +8918,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ case 2: - /* "pyFAI/ext/_geometry.pyx":551 + /* "pyFAI/ext/_geometry.pyx":578 * out[i, 0] = atan2(sqrt(t1 * t1 + t2 * t2), t3) * elif cspace == 2: * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) # <<<<<<<<<<<<<< * elif cspace == 3: * out[i, 0] = sqrt(t1 * t1 + t2 * t2) */ - __pyx_t_12 = (4.0e-9 * M_PI); - if (unlikely(__pyx_v_fwavelength == 0)) { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L20_error;} - } __pyx_t_41 = __pyx_v_i; __pyx_t_42 = 0; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_42, __pyx_pybuffernd_out.diminfo[1].strides) = ((__pyx_t_12 / __pyx_v_fwavelength) * sin((atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3) / 2.0))); + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_41 * __pyx_v_out.strides[0]) )) + __pyx_t_42)) )) = (((4.0e-9 * M_PI) / __pyx_v_fwavelength) * sin((atan2(sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))), __pyx_v_t3) / 2.0))); break; - /* "pyFAI/ext/_geometry.pyx":552 + /* "pyFAI/ext/_geometry.pyx":579 * elif cspace == 2: * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) * elif cspace == 3: # <<<<<<<<<<<<<< @@ -8791,7 +8939,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ case 3: - /* "pyFAI/ext/_geometry.pyx":553 + /* "pyFAI/ext/_geometry.pyx":580 * out[i, 0] = 4.0e-9 * M_PI / fwavelength * sin(atan2(sqrt(t1 * t1 + t2 * t2), t3) / 2.0) * elif cspace == 3: * out[i, 0] = sqrt(t1 * t1 + t2 * t2) # <<<<<<<<<<<<<< @@ -8800,99 +8948,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P */ __pyx_t_43 = __pyx_v_i; __pyx_t_44 = 0; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_out.diminfo[1].strides) = sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))); + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_43 * __pyx_v_out.strides[0]) )) + __pyx_t_44)) )) = sqrt(((__pyx_v_t1 * __pyx_v_t1) + (__pyx_v_t2 * __pyx_v_t2))); break; default: break; } - /* "pyFAI/ext/_geometry.pyx":554 + /* "pyFAI/ext/_geometry.pyx":581 * elif cspace == 3: * out[i, 0] = sqrt(t1 * t1 + t2 * t2) * out[i, 1] = atan2(t1, t2) # <<<<<<<<<<<<<< * - * if pos1.ndim == 3: + * nout = numpy.asarray(out) */ __pyx_t_45 = __pyx_v_i; __pyx_t_46 = 1; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_out.diminfo[1].strides) = atan2(__pyx_v_t1, __pyx_v_t2); - goto __pyx_L23; - __pyx_L20_error:; - { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - #ifdef _OPENMP - #pragma omp flush(__pyx_parallel_exc_type) - #endif /* _OPENMP */ - if (!__pyx_parallel_exc_type) { - __Pyx_ErrFetch(&__pyx_parallel_exc_type, &__pyx_parallel_exc_value, &__pyx_parallel_exc_tb); - __pyx_parallel_filename = __pyx_filename; __pyx_parallel_lineno = __pyx_lineno; __pyx_parallel_clineno = __pyx_clineno; - __Pyx_GOTREF(__pyx_parallel_exc_type); - } - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - } - __pyx_parallel_why = 4; - goto __pyx_L22; - __pyx_L22:; - #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates1) - #endif /* _OPENMP */ - { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_t3; - __pyx_parallel_temp2 = __pyx_v_t1; - __pyx_parallel_temp3 = __pyx_v_t2; - } - __pyx_L23:; - #ifdef _OPENMP - #pragma omp flush(__pyx_parallel_why) - #endif /* _OPENMP */ + *((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_45 * __pyx_v_out.strides[0]) )) + __pyx_t_46)) )) = atan2(__pyx_v_t1, __pyx_v_t2); } } - #ifdef _OPENMP - Py_END_ALLOW_THREADS - #else -{ -#ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - #endif /* _OPENMP */ - /* Clean up any temporaries */ - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif - #ifndef _OPENMP -} -#endif /* _OPENMP */ - } - } - if (__pyx_parallel_exc_type) { - /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */ - __pyx_parallel_why = 4; - } - if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_t3 = __pyx_parallel_temp1; - __pyx_v_t1 = __pyx_parallel_temp2; - __pyx_v_t2 = __pyx_parallel_temp3; - switch (__pyx_parallel_why) { - case 3: goto __pyx_L15_return; - case 4: - { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); - #endif - __Pyx_GIVEREF(__pyx_parallel_exc_type); - __Pyx_ErrRestore(__pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb); - __pyx_filename = __pyx_parallel_filename; __pyx_lineno = __pyx_parallel_lineno; __pyx_clineno = __pyx_parallel_clineno; - #ifdef WITH_THREAD - PyGILState_Release(__pyx_gilstate_save); - #endif } - goto __pyx_L16_error; - } } } #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) @@ -8903,7 +8976,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P #endif } - /* "pyFAI/ext/_geometry.pyx":544 + /* "pyFAI/ext/_geometry.pyx":571 * assert pos3.size == size, "pos3.size == size" * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -8917,162 +8990,193 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P #endif goto __pyx_L17; } - __pyx_L15_return: { - #ifdef WITH_THREAD - Py_BLOCK_THREADS - #endif - goto __pyx_L0; - } - __pyx_L16_error: { - #ifdef WITH_THREAD - Py_BLOCK_THREADS - #endif - goto __pyx_L1_error; - } __pyx_L17:; } } } __pyx_L5:; - /* "pyFAI/ext/_geometry.pyx":556 + /* "pyFAI/ext/_geometry.pyx":583 * out[i, 1] = atan2(t1, t2) * + * nout = numpy.asarray(out) # <<<<<<<<<<<<<< + * if pos1.ndim == 3: + * return nout.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) + */ + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_out, 2, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_1) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_nout = __pyx_t_4; + __pyx_t_4 = 0; + + /* "pyFAI/ext/_geometry.pyx":584 + * + * nout = numpy.asarray(out) * if pos1.ndim == 3: # <<<<<<<<<<<<<< - * return out.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) + * return nout.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) * if pos1.ndim == 2: */ __pyx_t_5 = ((__pyx_v_pos1->nd == 3) != 0); if (__pyx_t_5) { - /* "pyFAI/ext/_geometry.pyx":557 - * + /* "pyFAI/ext/_geometry.pyx":585 + * nout = numpy.asarray(out) * if pos1.ndim == 3: - * return out.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) # <<<<<<<<<<<<<< + * return nout.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) # <<<<<<<<<<<<<< * if pos1.ndim == 2: - * return out.reshape(pos1.shape[0], pos1.shape[1], 2) + * return nout.reshape(pos1.shape[0], pos1.shape[1], 2) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_out), __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_nout, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[2])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __pyx_t_47 = NULL; __pyx_t_48 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_47 = PyMethod_GET_SELF(__pyx_t_6); + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_47 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_47)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_47); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); + __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_48 = 1; } } - __pyx_t_49 = PyTuple_New(4+__pyx_t_48); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_49 = PyTuple_New(4+__pyx_t_48); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_49); if (__pyx_t_47) { PyTuple_SET_ITEM(__pyx_t_49, 0, __pyx_t_47); __Pyx_GIVEREF(__pyx_t_47); __pyx_t_47 = NULL; } - PyTuple_SET_ITEM(__pyx_t_49, 0+__pyx_t_48, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_49, 1+__pyx_t_48, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_49, 2+__pyx_t_48, __pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_49, 0+__pyx_t_48, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_49, 1+__pyx_t_48, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_49, 2+__pyx_t_48, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_49, 3+__pyx_t_48, __pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); - __pyx_t_3 = 0; - __pyx_t_1 = 0; __pyx_t_7 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_49, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = 0; + __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_49, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_49); __pyx_t_49 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":558 + /* "pyFAI/ext/_geometry.pyx":586 * if pos1.ndim == 3: - * return out.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) + * return nout.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) * if pos1.ndim == 2: # <<<<<<<<<<<<<< - * return out.reshape(pos1.shape[0], pos1.shape[1], 2) + * return nout.reshape(pos1.shape[0], pos1.shape[1], 2) * else: */ __pyx_t_5 = ((__pyx_v_pos1->nd == 2) != 0); if (__pyx_t_5) { - /* "pyFAI/ext/_geometry.pyx":559 - * return out.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) + /* "pyFAI/ext/_geometry.pyx":587 + * return nout.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) * if pos1.ndim == 2: - * return out.reshape(pos1.shape[0], pos1.shape[1], 2) # <<<<<<<<<<<<<< + * return nout.reshape(pos1.shape[0], pos1.shape[1], 2) # <<<<<<<<<<<<<< * else: - * return out + * return nout */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_out), __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_49 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_nout, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_49 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[0])); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_49); - __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = NULL; + __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_pos1->dimensions[1])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = NULL; __pyx_t_48 = 0; - if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_1); + if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); + __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_48 = 1; } } - __pyx_t_3 = PyTuple_New(3+__pyx_t_48); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - if (__pyx_t_1) { - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; + __pyx_t_7 = PyTuple_New(3+__pyx_t_48); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_6) { + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL; } - PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_48, __pyx_t_49); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_48, __pyx_t_49); __Pyx_GIVEREF(__pyx_t_49); - PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_48, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_48, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_2); - PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_48, __pyx_int_2); + PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_48, __pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); __pyx_t_49 = 0; - __pyx_t_7 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_geometry.pyx":561 - * return out.reshape(pos1.shape[0], pos1.shape[1], 2) + /* "pyFAI/ext/_geometry.pyx":589 + * return nout.reshape(pos1.shape[0], pos1.shape[1], 2) * else: - * return out # <<<<<<<<<<<<<< + * return nout # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_out)); - __pyx_r = ((PyObject *)__pyx_v_out); + __Pyx_INCREF(__pyx_v_nout); + __pyx_r = __pyx_v_nout; goto __pyx_L0; } - /* "pyFAI/ext/_geometry.pyx":484 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":499 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_rad_azim(double L, # <<<<<<<<<<<<<< * double poni1, * double poni2, @@ -9087,23 +9191,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P __Pyx_XDECREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_29, 1); __Pyx_XDECREF(__pyx_t_47); __Pyx_XDECREF(__pyx_t_49); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("pyFAI.ext._geometry.calc_rad_azim", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; __PYX_XDEC_MEMVIEW(&__pyx_v_c1, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c2, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_c3, 1); - __Pyx_XDECREF((PyObject *)__pyx_v_out); + __PYX_XDEC_MEMVIEW(&__pyx_v_out, 1); + __Pyx_XDECREF(__pyx_v_nout); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; @@ -22419,8 +22518,8 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_18_11_2016, __pyx_k_18_11_2016, sizeof(__pyx_k_18_11_2016), 0, 0, 1, 0}, - {&__pyx_kp_s_2011_2015_ESRF, __pyx_k_2011_2015_ESRF, sizeof(__pyx_k_2011_2015_ESRF), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, + {&__pyx_kp_s_2011_2016_ESRF, __pyx_k_2011_2016_ESRF, sizeof(__pyx_k_2011_2016_ESRF), 0, 0, 1, 0}, {&__pyx_kp_s_2th, __pyx_k_2th, sizeof(__pyx_k_2th), 0, 0, 1, 0}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, @@ -22449,6 +22548,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1}, + {&__pyx_n_s_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 0, 0, 1, 1}, {&__pyx_n_s_ascontiguousarray, __pyx_k_ascontiguousarray, sizeof(__pyx_k_ascontiguousarray), 0, 0, 1, 1}, {&__pyx_n_s_author, __pyx_k_author, sizeof(__pyx_k_author), 0, 0, 1, 1}, {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1}, @@ -22502,6 +22602,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0}, {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0}, {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1}, + {&__pyx_n_s_nout, __pyx_k_nout, sizeof(__pyx_k_nout), 0, 0, 1, 1}, {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1}, {&__pyx_n_s_out, __pyx_k_out, sizeof(__pyx_k_out), 0, 0, 1, 1}, @@ -22521,6 +22622,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, {&__pyx_n_s_q, __pyx_k_q, sizeof(__pyx_k_q), 0, 0, 1, 1}, {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1}, + {&__pyx_n_s_r1, __pyx_k_r1, sizeof(__pyx_k_r1), 0, 0, 1, 1}, + {&__pyx_n_s_r2, __pyx_k_r2, sizeof(__pyx_k_r2), 0, 0, 1, 1}, + {&__pyx_n_s_r3, __pyx_k_r3, sizeof(__pyx_k_r3), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_ravel, __pyx_k_ravel, sizeof(__pyx_k_ravel), 0, 0, 1, 1}, {&__pyx_n_s_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 0, 0, 1, 1}, @@ -22555,8 +22659,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -22579,14 +22683,14 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "pyFAI/ext/_geometry.pyx":521 + /* "pyFAI/ext/_geometry.pyx":548 * cspace = 2 * if not wavelength: * raise ValueError("wavelength is needed for q calculation") # <<<<<<<<<<<<<< * else: * fwavelength = float(wavelength) */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_wavelength_is_needed_for_q_calcu); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_wavelength_is_needed_for_q_calcu); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); @@ -22777,89 +22881,89 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - /* "pyFAI/ext/_geometry.pyx":170 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":172 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_pos_zyx(double L, double poni1, double poni2, # <<<<<<<<<<<<<< * double rot1, double rot2, double rot3, * numpy.ndarray pos1 not None, */ - __pyx_tuple__19 = PyTuple_Pack(26, __pyx_n_s_L, __pyx_n_s_poni1, __pyx_n_s_poni2, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_p1, __pyx_n_s_p2, __pyx_n_s_p3, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_t1, __pyx_n_s_t2, __pyx_n_s_t3); if (unlikely(!__pyx_tuple__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__19 = PyTuple_Pack(29, __pyx_n_s_L, __pyx_n_s_poni1, __pyx_n_s_poni2, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_p1, __pyx_n_s_p2, __pyx_n_s_p3, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_t1, __pyx_n_s_t2, __pyx_n_s_t3, __pyx_n_s_r1, __pyx_n_s_r2, __pyx_n_s_r3); if (unlikely(!__pyx_tuple__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); - __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(9, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_pos_zyx, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(9, 0, 29, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_pos_zyx, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_geometry.pyx":242 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":248 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_tth(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_tuple__21 = PyTuple_Pack(19, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__21 = PyTuple_Pack(19, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_tth, 242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_tth, 248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_geometry.pyx":290 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":298 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_chi(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_tuple__23 = PyTuple_Pack(19, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__23 = PyTuple_Pack(19, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_chi, 290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_chi, 298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_geometry.pyx":344 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":353 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_q(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_tuple__25 = PyTuple_Pack(21, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_wavelength, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_ndim, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__25 = PyTuple_Pack(21, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_wavelength, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_ndim, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); - __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(8, 0, 21, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_q, 344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(8, 0, 21, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_q, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_geometry.pyx":399 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":410 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_r(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): */ - __pyx_tuple__27 = PyTuple_Pack(19, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__27 = PyTuple_Pack(19, __pyx_n_s_L, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); - __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_r, 399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(7, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_r, 410, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_geometry.pyx":446 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":459 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_cosa(double L, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_tuple__29 = PyTuple_Pack(10, __pyx_n_s_L, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__29 = PyTuple_Pack(10, __pyx_n_s_L, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); - __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(4, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_cosa, 446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(4, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_cosa, 459, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_geometry.pyx":484 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":499 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_rad_azim(double L, # <<<<<<<<<<<<<< * double poni1, * double poni2, */ - __pyx_tuple__31 = PyTuple_Pack(28, __pyx_n_s_L, __pyx_n_s_poni1, __pyx_n_s_poni2, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_space, __pyx_n_s_wavelength, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_cspace, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out, __pyx_n_s_t1, __pyx_n_s_t2, __pyx_n_s_t3, __pyx_n_s_fwavelength); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__31 = PyTuple_Pack(29, __pyx_n_s_L, __pyx_n_s_poni1, __pyx_n_s_poni2, __pyx_n_s_rot1, __pyx_n_s_rot2, __pyx_n_s_rot3, __pyx_n_s_pos1, __pyx_n_s_pos2, __pyx_n_s_pos3, __pyx_n_s_space, __pyx_n_s_wavelength, __pyx_n_s_size, __pyx_n_s_i, __pyx_n_s_sinRot1, __pyx_n_s_cosRot1, __pyx_n_s_sinRot2, __pyx_n_s_cosRot2, __pyx_n_s_sinRot3, __pyx_n_s_cosRot3, __pyx_n_s_cspace, __pyx_n_s_c1, __pyx_n_s_c2, __pyx_n_s_c3, __pyx_n_s_out, __pyx_n_s_t1, __pyx_n_s_t2, __pyx_n_s_t3, __pyx_n_s_fwavelength, __pyx_n_s_nout); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); - __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(11, 0, 28, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_rad_azim, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(11, 0, 29, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_rad_azim, 499, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -23074,7 +23178,7 @@ PyMODINIT_FUNC PyInit__geometry(void) * * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __license__ = "MIT" - * __date__ = "18/11/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -23082,32 +23186,32 @@ PyMODINIT_FUNC PyInit__geometry(void) * * __author__ = "Jerome Kieffer" * __license__ = "MIT" # <<<<<<<<<<<<<< - * __date__ = "18/11/2016" - * __copyright__ = "2011-2015, ESRF" + * __date__ = "01/12/2016" + * __copyright__ = "2011-2016, ESRF" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_geometry.pyx":31 * __author__ = "Jerome Kieffer" * __license__ = "MIT" - * __date__ = "18/11/2016" # <<<<<<<<<<<<<< - * __copyright__ = "2011-2015, ESRF" + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< + * __copyright__ = "2011-2016, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_18_11_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_geometry.pyx":32 * __license__ = "MIT" - * __date__ = "18/11/2016" - * __copyright__ = "2011-2015, ESRF" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" + * __copyright__ = "2011-2016, ESRF" # <<<<<<<<<<<<<< * __contact__ = "jerome.kieffer@esrf.fr" * */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_copyright, __pyx_kp_s_2011_2015_ESRF) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_copyright, __pyx_kp_s_2011_2016_ESRF) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_geometry.pyx":33 - * __date__ = "18/11/2016" - * __copyright__ = "2011-2015, ESRF" + * __date__ = "01/12/2016" + * __copyright__ = "2011-2016, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< * * @@ -23126,88 +23230,88 @@ PyMODINIT_FUNC PyInit__geometry(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_geometry.pyx":170 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":172 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_pos_zyx(double L, double poni1, double poni2, # <<<<<<<<<<<<<< * double rot1, double rot2, double rot3, * numpy.ndarray pos1 not None, */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_1calc_pos_zyx, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_1calc_pos_zyx, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_pos_zyx, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_pos_zyx, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_geometry.pyx":242 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":248 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_tth(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_3calc_tth, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_3calc_tth, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_tth, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_tth, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_geometry.pyx":290 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":298 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_chi(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_5calc_chi, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_5calc_chi, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_chi, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_chi, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_geometry.pyx":344 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":353 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_q(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_7calc_q, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_7calc_q, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_q, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_q, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_geometry.pyx":399 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":410 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_r(double L, double rot1, double rot2, double rot3, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, * numpy.ndarray pos3=None): */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_9calc_r, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_9calc_r, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_r, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_r, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_geometry.pyx":446 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":459 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_cosa(double L, # <<<<<<<<<<<<<< * numpy.ndarray pos1 not None, * numpy.ndarray pos2 not None, */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_11calc_cosa, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_11calc_cosa, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_cosa, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_cosa, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_geometry.pyx":484 - * @cython.boundscheck(False) - * @cython.wraparound(False) + /* "pyFAI/ext/_geometry.pyx":499 + * @cython.initializedcheck(False) + * @cython.cdivision(True) * def calc_rad_azim(double L, # <<<<<<<<<<<<<< * double poni1, * double poni2, */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_13calc_rad_azim, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9_geometry_13calc_rad_azim, NULL, __pyx_n_s_pyFAI_ext__geometry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_rad_azim, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_calc_rad_azim, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyFAI/ext/_geometry.pyx":1 @@ -23654,18 +23758,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { } #endif -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(PyObject_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { unsigned int n = 1; return *(unsigned char*)(&n) != 0; @@ -24215,11 +24307,6 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { __Pyx_ReleaseBuffer(info); } -static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_SetString(PyExc_ValueError, - "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); -} - static int __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, int ndim, @@ -24355,37 +24442,6 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice, } } -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_Restore(type, value, tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(type, value, tb); -#endif -} - static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); @@ -24506,6 +24562,37 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int #endif } +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyThreadState *tstate = PyThreadState_GET(); + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_Restore(type, value, tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(type, value, tb); +#endif +} + #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { @@ -24717,6 +24804,18 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(PyObject_TypeCheck(obj, type))) + return 1; + PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", + Py_TYPE(obj)->tp_name, type->tp_name); + return 0; +} + static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) { Py_ssize_t q = a / b; Py_ssize_t r = a - q*b; @@ -25257,6 +25356,17 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { return module; } +static PyObject *__pyx_memview_get_double(const char *itemp) { + return (PyObject *) PyFloat_FromDouble(*(double *) itemp); +} +static int __pyx_memview_set_double(const char *itemp, PyObject *obj) { + double value = __pyx_PyFloat_AsDouble(obj); + if ((value == (double)-1) && PyErr_Occurred()) + return 0; + *(double *) itemp = value; + return 1; +} + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value) { const Py_intptr_t neg_one = (Py_intptr_t) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; @@ -25283,6 +25393,17 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value) { } } +static PyObject *__pyx_memview_get_float(const char *itemp) { + return (PyObject *) PyFloat_FromDouble(*(float *) itemp); +} +static int __pyx_memview_set_float(const char *itemp, PyObject *obj) { + float value = __pyx_PyFloat_AsFloat(obj); + if ((value == (float)-1) && PyErr_Occurred()) + return 0; + *(float *) itemp = value; + return 1; +} + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { @@ -26259,6 +26380,28 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_dou return result; } +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj) { + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, + &__Pyx_TypeInfo_float, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); diff --git a/pyFAI/ext/_geometry.pyx b/pyFAI/ext/_geometry.pyx index 8c88445ed..51b74fc10 100644 --- a/pyFAI/ext/_geometry.pyx +++ b/pyFAI/ext/_geometry.pyx @@ -28,8 +28,8 @@ __author__ = "Jerome Kieffer" __license__ = "MIT" -__date__ = "18/11/2016" -__copyright__ = "2011-2015, ESRF" +__date__ = "01/12/2016" +__copyright__ = "2011-2016, ESRF" __contact__ = "jerome.kieffer@esrf.fr" @@ -42,11 +42,12 @@ from libc.math cimport sin, cos, atan2, sqrt, M_PI cdef inline double f_t1(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: """Calculate t2 (aka y) for 1 pixel - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param p3: distance sample - PONI - @param sinRot1,sinRot2,sinRot3: sine of the angles - @param cosRot1,cosRot2,cosRot3: cosine of the angles + + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param p3: distance sample - PONI + :param sinRot1,sinRot2,sinRot3: sine of the angles + :param cosRot1,cosRot2,cosRot3: cosine of the angles """ return p1 * cosRot2 * cosRot3 + \ p2 * (cosRot3 * sinRot1 * sinRot2 - cosRot1 * sinRot3) - \ @@ -56,11 +57,11 @@ cdef inline double f_t1(double p1, double p2, double p3, double sinRot1, double cdef inline double f_t2(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: """Calculate t2 (aka y) for 1 pixel - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param p3: distance sample - PONI - @param sinRot1,sinRot2,sinRot3: sine of the angles - @param cosRot1,cosRot2,cosRot3: cosine of the angles + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param p3: distance sample - PONI + :param sinRot1,sinRot2,sinRot3: sine of the angles + :param cosRot1,cosRot2,cosRot3: cosine of the angles """ return p1 * cosRot2 * sinRot3 + \ p2 * (cosRot1 * cosRot3 + sinRot1 * sinRot2 * sinRot3) - \ @@ -70,11 +71,11 @@ cdef inline double f_t2(double p1, double p2, double p3, double sinRot1, double cdef inline double f_t3(double p1, double p2, double p3, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: """Calculate t3 (aka -z) for 1 pixel - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param p3: distance sample - PONI - @param sinRot1,sinRot2,sinRot3: sine of the angles - @param cosRot1,cosRot2,cosRot3: cosine of the angles + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param p3: distance sample - PONI + :param sinRot1,sinRot2,sinRot3: sine of the angles + :param cosRot1,cosRot2,cosRot3: cosine of the angles """ return p1 * sinRot2 - p2 * cosRot2 * sinRot1 + p3 * cosRot1 * cosRot2 @@ -82,15 +83,14 @@ cdef inline double f_t3(double p1, double p2, double p3, double sinRot1, double @cython.cdivision(True) cdef inline double f_tth(double p1, double p2, double L, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: - """ - Calculate 2 theta for 1 pixel - - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param L: distance sample - PONI - @param sinRot1,sinRot2,sinRot3: sine of the angles - @param cosRot1,cosRot2,cosRot3: cosine of the angles - @return 2 theta + """Calculate 2 theta for 1 pixel + + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param L: distance sample - PONI + :param sinRot1,sinRot2,sinRot3: sine of the angles + :param cosRot1,cosRot2,cosRot3: cosine of the angles + :return 2 theta """ cdef: double t1 = f_t1(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) @@ -104,11 +104,11 @@ cdef inline double f_q(double p1, double p2, double L, double sinRot1, double co """ Calculate the scattering vector q for 1 pixel - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param L: distance sample - PONI - @param sinRot1,sinRot2,sinRot3: sine of the angles - @param cosRot1,cosRot2,cosRot3: cosine of the angles + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param L: distance sample - PONI + :param sinRot1,sinRot2,sinRot3: sine of the angles + :param cosRot1,cosRot2,cosRot3: cosine of the angles """ return 4.0e-9 * M_PI / wavelength * sin(f_tth(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) / 2.0) @@ -117,11 +117,11 @@ cdef inline double f_q(double p1, double p2, double L, double sinRot1, double co cdef inline double f_chi(double p1, double p2, double L, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: """ calculate chi for 1 pixel - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param L: distance sample - PONI - @param sinRot1,sinRot2,sinRot3: sine of the angles - @param cosRot1,cosRot2,cosRot3: cosine of the angles + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param L: distance sample - PONI + :param sinRot1,sinRot2,sinRot3: sine of the angles + :param cosRot1,cosRot2,cosRot3: cosine of the angles """ cdef: double t1 = f_t1(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) @@ -133,11 +133,11 @@ cdef inline double f_chi(double p1, double p2, double L, double sinRot1, double cdef inline double f_r(double p1, double p2, double L, double sinRot1, double cosRot1, double sinRot2, double cosRot2, double sinRot3, double cosRot3) nogil: """ calculate r for 1 pixel, radius from beam center to current - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param L: distance sample - PONI - @param sinRot1,sinRot2,sinRot3: sine of the angles - @param cosRot1,cosRot2,cosRot3: cosine of the angles + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param L: distance sample - PONI + :param sinRot1,sinRot2,sinRot3: sine of the angles + :param cosRot1,cosRot2,cosRot3: cosine of the angles """ cdef: double t1 = f_t1(p1, p2, L, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) @@ -153,9 +153,9 @@ cdef inline double f_cosa(double p1, double p2, double L) nogil: """ calculate cosine of the incidence angle for 1 pixel - @param p1:distances in meter along dim1 from PONI - @param p2: distances in meter along dim2 from PONI - @param L: distance sample - PONI + :param p1:distances in meter along dim1 from PONI + :param p2: distances in meter along dim2 from PONI + :param L: distance sample - PONI """ return L / sqrt((L * L) + (p1 * p1) + (p2 * p2)) @@ -167,6 +167,8 @@ cdef inline double f_cosa(double p1, double p2, double L) nogil: @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def calc_pos_zyx(double L, double poni1, double poni2, double rot1, double rot2, double rot3, numpy.ndarray pos1 not None, @@ -174,16 +176,16 @@ def calc_pos_zyx(double L, double poni1, double poni2, numpy.ndarray pos3=None): """Calculate the 3D coordinates in the sample's referential - @param L: distance sample - PONI - @param poni1: PONI coordinate along y axis - @param poni2: PONI coordinate along x axis - @param rot1: angle1 - @param rot2: angle2 - @param rot3: angle3 - @param pos1: numpy array with distances in meter along dim1 from PONI (Y) - @param pos2: numpy array with distances in meter along dim2 from PONI (X) - @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector - @return: 3-tuple of ndarray of double with same shape and size as pos1 + :param L: distance sample - PONI + :param poni1: PONI coordinate along y axis + :param poni2: PONI coordinate along x axis + :param rot1: angle1 + :param rot2: angle2 + :param rot3: angle3 + :param pos1: numpy array with distances in meter along dim1 from PONI (Y) + :param pos2: numpy array with distances in meter along dim2 from PONI (X) + :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector + :return: 3-tuple of ndarray of double with same shape and size as pos1 """ cdef: @@ -200,11 +202,9 @@ def calc_pos_zyx(double L, double poni1, double poni2, double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) double[::1] c3 - numpy.ndarray[numpy.float64_t, ndim = 1] t1, t2, t3 - - t1 = numpy.empty(size, dtype=numpy.float64) - t2 = numpy.empty(size, dtype=numpy.float64) - t3 = numpy.empty(size, dtype=numpy.float64) + double[::1] t1 = numpy.empty(size, dtype=numpy.float64) + double[::1] t2 = numpy.empty(size, dtype=numpy.float64) + double[::1] t3 = numpy.empty(size, dtype=numpy.float64) if pos3 is None: for i in prange(size, nogil=True, schedule="static"): @@ -224,21 +224,27 @@ def calc_pos_zyx(double L, double poni1, double poni2, t2[i] = f_t2(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) t3[i] = f_t3(p1, p2, p3, sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) + r1 = numpy.asarray(t1) + r2 = numpy.asarray(t2) + r3 = numpy.asarray(t3) + if pos1.ndim == 3: - return t3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - t1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ - t2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) + return r3.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + r1.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]),\ + r2.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2]) if pos1.ndim == 2: - return t3.reshape(pos1.shape[0], pos1.shape[1]),\ - t1.reshape(pos1.shape[0], pos1.shape[1]),\ - t2.reshape(pos1.shape[0], pos1.shape[1]) + return r3.reshape(pos1.shape[0], pos1.shape[1]),\ + r1.reshape(pos1.shape[0], pos1.shape[1]),\ + r2.reshape(pos1.shape[0], pos1.shape[1]) else: - return t3, t1, t2 + return r3, r1, r2 @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def calc_tth(double L, double rot1, double rot2, double rot3, numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, @@ -246,14 +252,14 @@ def calc_tth(double L, double rot1, double rot2, double rot3, """ Calculate the 2theta array (radial angle) in parallel - @param L: distance sample - PONI - @param rot1: angle1 - @param rot2: angle2 - @param rot3: angle3 - @param pos1: numpy array with distances in meter along dim1 from PONI (Y) - @param pos2: numpy array with distances in meter along dim2 from PONI (X) - @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector - @return: ndarray of double with same shape and size as pos1 + :param L: distance sample - PONI + :param rot1: angle1 + :param rot2: angle2 + :param rot3: angle3 + :param pos1: numpy array with distances in meter along dim1 from PONI (Y) + :param pos2: numpy array with distances in meter along dim2 from PONI (X) + :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector + :return: ndarray of double with same shape and size as pos1 """ cdef: double sinRot1 = sin(rot1) @@ -268,7 +274,7 @@ def calc_tth(double L, double rot1, double rot2, double rot3, double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) double[::1] c3 - numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + double[::1] out = numpy.empty(size, dtype=numpy.float64) if pos3 is None: for i in prange(size, nogil=True, schedule="static"): @@ -280,19 +286,20 @@ def calc_tth(double L, double rot1, double rot2, double rot3, out[i] = f_tth(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) if pos1.ndim == 2: - return out.reshape(pos1.shape[0], pos1.shape[1]) + return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) else: - return out + return numpy.asarray(out) @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def calc_chi(double L, double rot1, double rot2, double rot3, numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, numpy.ndarray pos3=None): - """ - Calculate the chi array (azimuthal angles) in parallel + """Calculate the chi array (azimuthal angles) using OpenMP X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) @@ -300,14 +307,14 @@ def calc_chi(double L, double rot1, double rot2, double rot3, tan(Chi) = X2 / X1 - @param L: distance sample - PONI - @param rot1: angle1 - @param rot2: angle2 - @param rot3: angle3 - @param pos1: numpy array with distances in meter along dim1 from PONI (Y) - @param pos2: numpy array with distances in meter along dim2 from PONI (X) - @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector - @return: ndarray of double with same shape and size as pos1 + :param L: distance sample - PONI + :param rot1: angle1 + :param rot2: angle2 + :param rot3: angle3 + :param pos1: numpy array with distances in meter along dim1 from PONI (Y) + :param pos2: numpy array with distances in meter along dim2 from PONI (X) + :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector + :return: ndarray of double with same shape and size as pos1 """ cdef: double sinRot1 = sin(rot1) @@ -322,7 +329,7 @@ def calc_chi(double L, double rot1, double rot2, double rot3, double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) double[::1] c3 - numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + double[::1] out = numpy.empty(size, dtype=numpy.float64) if pos3 is None: for i in prange(size, nogil=True, schedule="static"): @@ -334,19 +341,21 @@ def calc_chi(double L, double rot1, double rot2, double rot3, out[i] = f_chi(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) if pos1.ndim == 2: - return out.reshape(pos1.shape[0], pos1.shape[1]) + return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) else: - return out + return numpy.asarray(out) @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def calc_q(double L, double rot1, double rot2, double rot3, numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, double wavelength, pos3=None): """ - Calculate the q (scattering vector) array in parallel + Calculate the q (scattering vector) array using OpenMP X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) @@ -354,15 +363,15 @@ def calc_q(double L, double rot1, double rot2, double rot3, tan(Chi) = X2 / X1 - @param L: distance sample - PONI - @param rot1: angle1 - @param rot2: angle2 - @param rot3: angle3 - @param pos1: numpy array with distances in meter along dim1 from PONI (Y) - @param pos2: numpy array with distances in meter along dim2 from PONI (X) - @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector - @param wavelength: in meter to get q in nm-1 - @return: ndarray of double with same shape and size as pos1 + :param L: distance sample - PONI + :param rot1: angle1 + :param rot2: angle2 + :param rot3: angle3 + :param pos1: numpy array with distances in meter along dim1 from PONI (Y) + :param pos2: numpy array with distances in meter along dim2 from PONI (X) + :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector + :param wavelength: in meter to get q in nm-1 + :return: ndarray of double with same shape and size as pos1 """ cdef: double sinRot1 = sin(rot1) @@ -377,7 +386,7 @@ def calc_q(double L, double rot1, double rot2, double rot3, double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) double[::1] c3 - numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + double[::1] out = numpy.empty(size, dtype=numpy.float64) if pos3 is None: for i in prange(size, nogil=True, schedule="static"): @@ -389,27 +398,29 @@ def calc_q(double L, double rot1, double rot2, double rot3, out[i] = f_q(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3, wavelength) if pos1.ndim == 2: - return out.reshape(pos1.shape[0], pos1.shape[1]) + return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) else: - return out + return numpy.asarray(out) @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def calc_r(double L, double rot1, double rot2, double rot3, numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, numpy.ndarray pos3=None): """ Calculate the radius array (radial direction) in parallel - @param L: distance sample - PONI - @param rot1: angle1 - @param rot2: angle2 - @param rot3: angle3 - @param pos1: numpy array with distances in meter along dim1 from PONI (Y) - @param pos2: numpy array with distances in meter along dim2 from PONI (X) - @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector - @return: ndarray of double with same shape and size as pos1 + :param L: distance sample - PONI + :param rot1: angle1 + :param rot2: angle2 + :param rot3: angle3 + :param pos1: numpy array with distances in meter along dim1 from PONI (Y) + :param pos2: numpy array with distances in meter along dim2 from PONI (X) + :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector + :return: ndarray of double with same shape and size as pos1 """ cdef: double sinRot1 = sin(rot1) @@ -424,7 +435,7 @@ def calc_r(double L, double rot1, double rot2, double rot3, double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) double[::1] c3 - numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + double[::1] out = numpy.empty(size, dtype=numpy.float64) if pos3 is None: for i in prange(size, nogil=True, schedule="static"): @@ -436,25 +447,27 @@ def calc_r(double L, double rot1, double rot2, double rot3, out[i] = f_r(c1[i], c2[i], L + c3[i], sinRot1, cosRot1, sinRot2, cosRot2, sinRot3, cosRot3) if pos1.ndim == 2: - return out.reshape(pos1.shape[0], pos1.shape[1]) + return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) else: - return out + return numpy.asarray(out) @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def calc_cosa(double L, numpy.ndarray pos1 not None, numpy.ndarray pos2 not None, numpy.ndarray pos3=None): - """ - Calculate the cosine of the incidence angle in parallel - - @param L: distance sa - PONI - @param pos1: numpy array with distances in meter along dim1 from PONI (Y) - @param pos2: numpy array with distances in meter along dim2 from PONI (X) - @param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector - @return: ndarray of double with same shape and size as pos1 + """Calculate the cosine of the incidence angle using OpenMP. + Used for sensors thickness effect corrections + + :param L: distance sample - PONI + :param pos1: numpy array with distances in meter along dim1 from PONI (Y) + :param pos2: numpy array with distances in meter along dim2 from PONI (X) + :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector + :return: ndarray of double with same shape and size as pos1 """ cdef ssize_t size = pos1.size, i = 0 assert pos2.size == size, "pos2.size == size" @@ -462,7 +475,7 @@ def calc_cosa(double L, double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) double[::1] c3 - numpy.ndarray[numpy.float64_t, ndim = 1] out = numpy.empty(size, dtype=numpy.float64) + double[::1] out = numpy.empty(size, dtype=numpy.float64) if pos3 is None: for i in prange(size, nogil=True, schedule="static"): @@ -474,13 +487,15 @@ def calc_cosa(double L, out[i] = f_cosa(c1[i], c2[i], L + c3[i]) if pos1.ndim == 2: - return out.reshape(pos1.shape[0], pos1.shape[1]) + return numpy.asarray(out).reshape(pos1.shape[0], pos1.shape[1]) else: - return out + return numpy.asarray(out) @cython.boundscheck(False) @cython.wraparound(False) +@cython.initializedcheck(False) +@cython.cdivision(True) def calc_rad_azim(double L, double poni1, double poni2, @@ -492,9 +507,22 @@ def calc_rad_azim(double L, numpy.ndarray pos3=None, space="2th", wavelength=None): - """ - - raise KeyError when space is bad ! + """Calculate the radial & azimutal position for each pixel from pos1, pos2, pos3. + + :param L: distance sample - PONI + :param poni1: PONI coordinate along y axis + :param poni2: PONI coordinate along x axis + :param rot1: angle1 + :param rot2: angle2 + :param rot3: angle3 + :param pos1: numpy array with distances in meter along dim1 from PONI (Y) + :param pos2: numpy array with distances in meter along dim2 from PONI (X) + :param pos3: numpy array with distances in meter along Sample->PONI (Z), positive behind the detector + :param space: can be "2th", "q" or "r" for radial units. Azimuthal units are radians + :return: ndarray of double with same shape and size as pos1 + (2,), + :raise: KeyError when space is bad ! + ValueError when wavelength is missing + """ cdef ssize_t size = pos1.size, i = 0 assert pos2.size == size, "pos2.size == size" @@ -509,8 +537,7 @@ def calc_rad_azim(double L, double[::1] c1 = numpy.ascontiguousarray(pos1.ravel(), dtype=numpy.float64) double[::1] c2 = numpy.ascontiguousarray(pos2.ravel(), dtype=numpy.float64) double[::1] c3 - numpy.ndarray[numpy.float32_t, ndim = 2] out = numpy.empty((size, 2), - dtype=numpy.float32) + float[:, ::1] out = numpy.empty((size, 2), dtype=numpy.float32) double t1, t2, t3, fwavelength if space == "2th": @@ -553,9 +580,10 @@ def calc_rad_azim(double L, out[i, 0] = sqrt(t1 * t1 + t2 * t2) out[i, 1] = atan2(t1, t2) + nout = numpy.asarray(out) if pos1.ndim == 3: - return out.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) + return nout.reshape(pos1.shape[0], pos1.shape[1], pos1.shape[2], 2) if pos1.ndim == 2: - return out.reshape(pos1.shape[0], pos1.shape[1], 2) + return nout.reshape(pos1.shape[0], pos1.shape[1], 2) else: - return out + return nout diff --git a/pyFAI/ext/_tree.c b/pyFAI/ext/_tree.c index b37836bdb..f6b7f648b 100644 --- a/pyFAI/ext/_tree.c +++ b/pyFAI/ext/_tree.c @@ -829,12 +829,17 @@ static char __pyx_k_update[] = "update"; static char __pyx_k_contact[] = "__contact__"; static char __pyx_k_license[] = "__license__"; static char __pyx_k_previous[] = "previous"; +static char __pyx_k_type_str[] = "type: str"; static char __pyx_k_add_child[] = "add_child"; static char __pyx_k_copyright[] = "__copyright__"; static char __pyx_k_has_child[] = "has_child"; -static char __pyx_k_31_05_2016[] = "31/05/2016"; +static char __pyx_k_label_str[] = "label: str"; +static char __pyx_k_order_int[] = "order: 'int'"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; +static char __pyx_k_extra_object[] = "extra: object"; +static char __pyx_k_children_list[] = "children: list"; static char __pyx_k_2011_2015_ESRF[] = "2011-2015, ESRF"; static char __pyx_k_Jerome_Kieffer[] = "Jerome Kieffer"; static char __pyx_k_pyFAI_ext__tree[] = "pyFAI.ext._tree"; @@ -844,9 +849,10 @@ static char __pyx_k_jerome_kieffer_esrf_fr[] = "jerome.kieffer@esrf.fr"; static char __pyx_k_Previous_does_not_exist[] = "Previous does not exist"; static char __pyx_k_TreeItem_s_s_with_children[] = "TreeItem %s->%s with children: "; static char __pyx_k_Root_TreeItem_s_with_children_s[] = "Root TreeItem %s with children: %s"; +static char __pyx_k_parent_pyFAI_ext__tree_TreeItem[] = "parent: pyFAI.ext._tree.TreeItem"; static PyObject *__pyx_kp_s_; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_2011_2015_ESRF; -static PyObject *__pyx_kp_s_31_05_2016; static PyObject *__pyx_n_s_IndexError; static PyObject *__pyx_kp_s_Jerome_Kieffer; static PyObject *__pyx_n_s_MIT; @@ -893,7 +899,7 @@ static PyObject *__pyx_int_1; static PyObject *__pyx_tuple__3; static PyObject *__pyx_tuple__4; -/* "pyFAI/ext/_tree.pyx":57 +/* "pyFAI/ext/_tree.pyx":59 * cdef public object extra * * def __init__(self, str label=None, TreeItem parent=None): # <<<<<<<<<<<<<< @@ -940,7 +946,7 @@ static int __pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_1__init__(PyObject *__pyx_v_sel } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -955,14 +961,14 @@ static int __pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_1__init__(PyObject *__pyx_v_sel } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext._tree.TreeItem.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), (&PyString_Type), 1, "label", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parent), __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem, 1, "parent", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), (&PyString_Type), 1, "label", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parent), __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem, 1, "parent", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self), __pyx_v_label, __pyx_v_parent); /* function exit code */ @@ -984,14 +990,14 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "pyFAI/ext/_tree.pyx":58 + /* "pyFAI/ext/_tree.pyx":60 * * def __init__(self, str label=None, TreeItem parent=None): * self.children = [] # <<<<<<<<<<<<<< * self.parent = parent * self.label = label or "" */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->children); @@ -999,7 +1005,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA __pyx_v_self->children = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_tree.pyx":59 + /* "pyFAI/ext/_tree.pyx":61 * def __init__(self, str label=None, TreeItem parent=None): * self.children = [] * self.parent = parent # <<<<<<<<<<<<<< @@ -1012,14 +1018,14 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA __Pyx_DECREF(((PyObject *)__pyx_v_self->parent)); __pyx_v_self->parent = __pyx_v_parent; - /* "pyFAI/ext/_tree.pyx":60 + /* "pyFAI/ext/_tree.pyx":62 * self.children = [] * self.parent = parent * self.label = label or "" # <<<<<<<<<<<<<< * if parent: * parent.add_child(self) */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_label); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_label); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_2) { } else { __Pyx_INCREF(__pyx_v_label); @@ -1035,28 +1041,28 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA __pyx_v_self->label = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_tree.pyx":61 + /* "pyFAI/ext/_tree.pyx":63 * self.parent = parent * self.label = label or "" * if parent: # <<<<<<<<<<<<<< * parent.add_child(self) * self.order = parent.order + 1 */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_parent)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_parent)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_2) { - /* "pyFAI/ext/_tree.pyx":62 + /* "pyFAI/ext/_tree.pyx":64 * self.label = label or "" * if parent: * parent.add_child(self) # <<<<<<<<<<<<<< * self.order = parent.order + 1 * else: */ - __pyx_t_1 = ((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_parent->__pyx_vtab)->add_child(__pyx_v_parent, __pyx_v_self, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_parent->__pyx_vtab)->add_child(__pyx_v_parent, __pyx_v_self, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_tree.pyx":63 + /* "pyFAI/ext/_tree.pyx":65 * if parent: * parent.add_child(self) * self.order = parent.order + 1 # <<<<<<<<<<<<<< @@ -1068,7 +1074,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA } /*else*/ { - /* "pyFAI/ext/_tree.pyx":65 + /* "pyFAI/ext/_tree.pyx":67 * self.order = parent.order + 1 * else: * self.order = 0 # <<<<<<<<<<<<<< @@ -1079,7 +1085,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA } __pyx_L5:; - /* "pyFAI/ext/_tree.pyx":66 + /* "pyFAI/ext/_tree.pyx":68 * else: * self.order = 0 * self.extra = None # <<<<<<<<<<<<<< @@ -1092,7 +1098,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA __Pyx_DECREF(__pyx_v_self->extra); __pyx_v_self->extra = Py_None; - /* "pyFAI/ext/_tree.pyx":57 + /* "pyFAI/ext/_tree.pyx":59 * cdef public object extra * * def __init__(self, str label=None, TreeItem parent=None): # <<<<<<<<<<<<<< @@ -1112,7 +1118,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem___init__(struct __pyx_obj_5pyFA return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":68 +/* "pyFAI/ext/_tree.pyx":70 * self.extra = None * * cpdef add_child(self, TreeItem child): # <<<<<<<<<<<<<< @@ -1138,7 +1144,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(struct __pyx_obj if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_child); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_child); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_3add_child)) { __Pyx_XDECREF(__pyx_r); @@ -1154,16 +1160,16 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(struct __pyx_obj } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_child)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_child)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_child)); PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_child)); __Pyx_GIVEREF(((PyObject *)__pyx_v_child)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -1176,7 +1182,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(struct __pyx_obj __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":69 + /* "pyFAI/ext/_tree.pyx":71 * * cpdef add_child(self, TreeItem child): * self.children.append(child) # <<<<<<<<<<<<<< @@ -1185,11 +1191,11 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(struct __pyx_obj */ if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_self->children, ((PyObject *)__pyx_v_child)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_self->children, ((PyObject *)__pyx_v_child)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/_tree.pyx":70 + /* "pyFAI/ext/_tree.pyx":72 * cpdef add_child(self, TreeItem child): * self.children.append(child) * child.parent = self # <<<<<<<<<<<<<< @@ -1202,7 +1208,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(struct __pyx_obj __Pyx_DECREF(((PyObject *)__pyx_v_child->parent)); __pyx_v_child->parent = __pyx_v_self; - /* "pyFAI/ext/_tree.pyx":68 + /* "pyFAI/ext/_tree.pyx":70 * self.extra = None * * cpdef add_child(self, TreeItem child): # <<<<<<<<<<<<<< @@ -1229,6 +1235,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(struct __pyx_obj /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_3add_child(PyObject *__pyx_v_self, PyObject *__pyx_v_child); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_2add_child[] = "TreeItem.add_child(self, TreeItem child)"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_3add_child(PyObject *__pyx_v_self, PyObject *__pyx_v_child) { CYTHON_UNUSED int __pyx_lineno = 0; CYTHON_UNUSED const char *__pyx_filename = NULL; @@ -1236,7 +1243,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_3add_child(PyObject *__py PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("add_child (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child), __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem, 1, "child", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child), __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem, 1, "child", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_2add_child(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self), ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_child)); /* function exit code */ @@ -1257,7 +1264,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_2add_child(struct __pyx_o int __pyx_clineno = 0; __Pyx_RefNannySetupContext("add_child", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(__pyx_v_self, __pyx_v_child, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_add_child(__pyx_v_self, __pyx_v_child, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1274,7 +1281,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_2add_child(struct __pyx_o return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":72 +/* "pyFAI/ext/_tree.pyx":74 * child.parent = self * * cpdef update(self, TreeItem new_root): # <<<<<<<<<<<<<< @@ -1303,7 +1310,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(struct __pyx_obj_5p if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_update); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_update); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_5update)) { __Pyx_XDECREF(__pyx_r); @@ -1319,16 +1326,16 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(struct __pyx_obj_5p } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_new_root)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_new_root)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_new_root)); PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_new_root)); __Pyx_GIVEREF(((PyObject *)__pyx_v_new_root)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -1341,7 +1348,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(struct __pyx_obj_5p __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":76 + /* "pyFAI/ext/_tree.pyx":78 * Add new children in tree * """ * for new_child in new_root.children: # <<<<<<<<<<<<<< @@ -1350,75 +1357,75 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(struct __pyx_obj_5p */ if (unlikely(__pyx_v_new_root->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = __pyx_v_new_root->children; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; for (;;) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_new_child, __pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_tree.pyx":77 + /* "pyFAI/ext/_tree.pyx":79 * """ * for new_child in new_root.children: * child = self.get(new_child.label) # <<<<<<<<<<<<<< * if child: * child.update(new_child) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_new_child, __pyx_n_s_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_new_child, __pyx_n_s_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->__pyx_vtab)->get(__pyx_v_self, ((PyObject*)__pyx_t_2), 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->__pyx_vtab)->get(__pyx_v_self, ((PyObject*)__pyx_t_2), 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_child, ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_3)); __pyx_t_3 = 0; - /* "pyFAI/ext/_tree.pyx":78 + /* "pyFAI/ext/_tree.pyx":80 * for new_child in new_root.children: * child = self.get(new_child.label) * if child: # <<<<<<<<<<<<<< * child.update(new_child) * else: */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_child)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_child)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_7) { - /* "pyFAI/ext/_tree.pyx":79 + /* "pyFAI/ext/_tree.pyx":81 * child = self.get(new_child.label) * if child: * child.update(new_child) # <<<<<<<<<<<<<< * else: * self.add_child(new_child) */ - if (!(likely(((__pyx_v_new_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_new_child, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = ((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_child->__pyx_vtab)->update(__pyx_v_child, ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_new_child), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_v_new_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_new_child, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = ((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_child->__pyx_vtab)->update(__pyx_v_child, ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_new_child), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5; } /*else*/ { - /* "pyFAI/ext/_tree.pyx":81 + /* "pyFAI/ext/_tree.pyx":83 * child.update(new_child) * else: * self.add_child(new_child) # <<<<<<<<<<<<<< * * cpdef bint has_child(self, str label): */ - if (!(likely(((__pyx_v_new_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_new_child, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = ((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->__pyx_vtab)->add_child(__pyx_v_self, ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_new_child), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_v_new_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_new_child, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = ((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->__pyx_vtab)->add_child(__pyx_v_self, ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_new_child), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L5:; - /* "pyFAI/ext/_tree.pyx":76 + /* "pyFAI/ext/_tree.pyx":78 * Add new children in tree * """ * for new_child in new_root.children: # <<<<<<<<<<<<<< @@ -1428,7 +1435,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(struct __pyx_obj_5p } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_tree.pyx":72 + /* "pyFAI/ext/_tree.pyx":74 * child.parent = self * * cpdef update(self, TreeItem new_root): # <<<<<<<<<<<<<< @@ -1457,7 +1464,7 @@ static PyObject *__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(struct __pyx_obj_5p /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_5update(PyObject *__pyx_v_self, PyObject *__pyx_v_new_root); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_4update[] = "\n Add new children in tree\n "; +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_4update[] = "TreeItem.update(self, TreeItem new_root)\n\n Add new children in tree\n "; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_5update(PyObject *__pyx_v_self, PyObject *__pyx_v_new_root) { CYTHON_UNUSED int __pyx_lineno = 0; CYTHON_UNUSED const char *__pyx_filename = NULL; @@ -1465,7 +1472,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_5update(PyObject *__pyx_v PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new_root), __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem, 1, "new_root", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new_root), __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem, 1, "new_root", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4update(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self), ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_new_root)); /* function exit code */ @@ -1486,7 +1493,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4update(struct __pyx_obj_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("update", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(__pyx_v_self, __pyx_v_new_root, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_update(__pyx_v_self, __pyx_v_new_root, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1503,7 +1510,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4update(struct __pyx_obj_ return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":83 +/* "pyFAI/ext/_tree.pyx":85 * self.add_child(new_child) * * cpdef bint has_child(self, str label): # <<<<<<<<<<<<<< @@ -1531,7 +1538,7 @@ static int __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_has_child(struct __pyx_obj_5pyFA if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_has_child); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_has_child); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_7has_child)) { __Pyx_INCREF(__pyx_t_1); @@ -1546,21 +1553,21 @@ static int __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_has_child(struct __pyx_obj_5pyFA } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_label); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_label); __Pyx_GIVEREF(__pyx_v_label); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -1569,41 +1576,41 @@ static int __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_has_child(struct __pyx_obj_5pyFA __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":84 + /* "pyFAI/ext/_tree.pyx":86 * * cpdef bint has_child(self, str label): * return label in [i.label for i in self.children] # <<<<<<<<<<<<<< * * cpdef TreeItem get(self, str label): */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_2 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_label, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_label, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_6; goto __pyx_L0; - /* "pyFAI/ext/_tree.pyx":83 + /* "pyFAI/ext/_tree.pyx":85 * self.add_child(new_child) * * cpdef bint has_child(self, str label): # <<<<<<<<<<<<<< @@ -1628,6 +1635,7 @@ static int __pyx_f_5pyFAI_3ext_5_tree_8TreeItem_has_child(struct __pyx_obj_5pyFA /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_7has_child(PyObject *__pyx_v_self, PyObject *__pyx_v_label); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_6has_child[] = "TreeItem.has_child(self, str label) -> bool"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_7has_child(PyObject *__pyx_v_self, PyObject *__pyx_v_label) { CYTHON_UNUSED int __pyx_lineno = 0; CYTHON_UNUSED const char *__pyx_filename = NULL; @@ -1635,7 +1643,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_7has_child(PyObject *__py PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("has_child (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), (&PyString_Type), 1, "label", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), (&PyString_Type), 1, "label", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_6has_child(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self), ((PyObject*)__pyx_v_label)); /* function exit code */ @@ -1656,7 +1664,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_6has_child(struct __pyx_o int __pyx_clineno = 0; __Pyx_RefNannySetupContext("has_child", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_has_child(__pyx_v_self, __pyx_v_label, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_has_child(__pyx_v_self, __pyx_v_label, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1673,7 +1681,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_6has_child(struct __pyx_o return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":86 +/* "pyFAI/ext/_tree.pyx":88 * return label in [i.label for i in self.children] * * cpdef TreeItem get(self, str label): # <<<<<<<<<<<<<< @@ -1701,7 +1709,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_9get)) { __Pyx_XDECREF(((PyObject *)__pyx_r)); @@ -1717,21 +1725,21 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_label); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_label); __Pyx_GIVEREF(__pyx_v_label); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -1740,7 +1748,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":87 + /* "pyFAI/ext/_tree.pyx":89 * * cpdef TreeItem get(self, str label): * for i in self.children: # <<<<<<<<<<<<<< @@ -1749,33 +1757,33 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ */ if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; for (;;) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_tree.pyx":88 + /* "pyFAI/ext/_tree.pyx":90 * cpdef TreeItem get(self, str label): * for i in self.children: * if i.label == label: # <<<<<<<<<<<<<< * return i * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_v_label, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_v_label, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_7) { - /* "pyFAI/ext/_tree.pyx":89 + /* "pyFAI/ext/_tree.pyx":91 * for i in self.children: * if i.label == label: * return i # <<<<<<<<<<<<<< @@ -1783,14 +1791,14 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ * def __repr__(self): */ __Pyx_XDECREF(((PyObject *)__pyx_r)); - if (!(likely(((__pyx_v_i) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_i, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_v_i) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_i, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_INCREF(__pyx_v_i); __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_i); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":87 + /* "pyFAI/ext/_tree.pyx":89 * * cpdef TreeItem get(self, str label): * for i in self.children: # <<<<<<<<<<<<<< @@ -1800,7 +1808,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_tree.pyx":86 + /* "pyFAI/ext/_tree.pyx":88 * return label in [i.label for i in self.children] * * cpdef TreeItem get(self, str label): # <<<<<<<<<<<<<< @@ -1828,6 +1836,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_9get(PyObject *__pyx_v_self, PyObject *__pyx_v_label); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_8get[] = "TreeItem.get(self, str label) -> TreeItem"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_9get(PyObject *__pyx_v_self, PyObject *__pyx_v_label) { CYTHON_UNUSED int __pyx_lineno = 0; CYTHON_UNUSED const char *__pyx_filename = NULL; @@ -1835,7 +1844,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_9get(PyObject *__pyx_v_se PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), (&PyString_Type), 1, "label", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), (&PyString_Type), 1, "label", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_8get(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self), ((PyObject*)__pyx_v_label)); /* function exit code */ @@ -1856,7 +1865,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_8get(struct __pyx_obj_5py int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_get(__pyx_v_self, __pyx_v_label, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_get(__pyx_v_self, __pyx_v_label, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -1873,7 +1882,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_8get(struct __pyx_obj_5py return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":91 +/* "pyFAI/ext/_tree.pyx":93 * return i * * def __repr__(self): # <<<<<<<<<<<<<< @@ -1909,17 +1918,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); - /* "pyFAI/ext/_tree.pyx":92 + /* "pyFAI/ext/_tree.pyx":94 * * def __repr__(self): * if self.parent: # <<<<<<<<<<<<<< * return "TreeItem %s->%s with children: " % (self.parent.label, self.label) + ", ".join([i.label for i in self.children]) * else: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->parent)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->parent)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_1) { - /* "pyFAI/ext/_tree.pyx":93 + /* "pyFAI/ext/_tree.pyx":95 * def __repr__(self): * if self.parent: * return "TreeItem %s->%s with children: " % (self.parent.label, self.label) + ", ".join([i.label for i in self.children]) # <<<<<<<<<<<<<< @@ -1927,7 +1936,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o * return "Root TreeItem %s with children: %s" % (self.label, ", ".join([i.label for i in self.children])) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_self->parent->label); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->parent->label); @@ -1935,35 +1944,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o __Pyx_INCREF(__pyx_v_self->label); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->label); __Pyx_GIVEREF(__pyx_v_self->label); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_TreeItem_s_s_with_children, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_TreeItem_s_s_with_children, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_4 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -1973,7 +1982,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o } /*else*/ { - /* "pyFAI/ext/_tree.pyx":95 + /* "pyFAI/ext/_tree.pyx":97 * return "TreeItem %s->%s with children: " % (self.parent.label, self.label) + ", ".join([i.label for i in self.children]) * else: * return "Root TreeItem %s with children: %s" % (self.label, ", ".join([i.label for i in self.children])) # <<<<<<<<<<<<<< @@ -1981,32 +1990,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o * def sort(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_4 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_label); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_self->label); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->label); @@ -2014,7 +2023,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Root_TreeItem_s_with_children_s, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Root_TreeItem_s_with_children_s, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; @@ -2022,7 +2031,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":91 + /* "pyFAI/ext/_tree.pyx":93 * return i * * def __repr__(self): # <<<<<<<<<<<<<< @@ -2045,7 +2054,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":97 +/* "pyFAI/ext/_tree.pyx":99 * return "Root TreeItem %s with children: %s" % (self.label, ", ".join([i.label for i in self.children])) * * def sort(self): # <<<<<<<<<<<<<< @@ -2055,6 +2064,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_10__repr__(struct __pyx_o /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_13sort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_12sort[] = "TreeItem.sort(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_13sort(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -2066,7 +2076,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_13sort(PyObject *__pyx_v_ return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":100 +/* "pyFAI/ext/_tree.pyx":102 * for child in self.children: * child.sort() * self.children.sort(key=lambda x: x.label) # <<<<<<<<<<<<<< @@ -2097,7 +2107,7 @@ static PyObject *__pyx_lambda_funcdef_lambda1(CYTHON_UNUSED PyObject *__pyx_self int __pyx_clineno = 0; __Pyx_RefNannySetupContext("lambda1", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_label); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_label); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2114,7 +2124,7 @@ static PyObject *__pyx_lambda_funcdef_lambda1(CYTHON_UNUSED PyObject *__pyx_self return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":97 +/* "pyFAI/ext/_tree.pyx":99 * return "Root TreeItem %s with children: %s" % (self.label, ", ".join([i.label for i in self.children])) * * def sort(self): # <<<<<<<<<<<<<< @@ -2136,7 +2146,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_12sort(struct __pyx_obj_5 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("sort", 0); - /* "pyFAI/ext/_tree.pyx":98 + /* "pyFAI/ext/_tree.pyx":100 * * def sort(self): * for child in self.children: # <<<<<<<<<<<<<< @@ -2145,27 +2155,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_12sort(struct __pyx_obj_5 */ if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/_tree.pyx":99 + /* "pyFAI/ext/_tree.pyx":101 * def sort(self): * for child in self.children: * child.sort() # <<<<<<<<<<<<<< * self.children.sort(key=lambda x: x.label) * */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_sort); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_sort); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -2178,16 +2188,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_12sort(struct __pyx_obj_5 } } if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/_tree.pyx":98 + /* "pyFAI/ext/_tree.pyx":100 * * def sort(self): * for child in self.children: # <<<<<<<<<<<<<< @@ -2197,28 +2207,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_12sort(struct __pyx_obj_5 } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/_tree.pyx":100 + /* "pyFAI/ext/_tree.pyx":102 * for child in self.children: * child.sort() * self.children.sort(key=lambda x: x.label) # <<<<<<<<<<<<<< * * cpdef TreeItem next(self): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->children, __pyx_n_s_sort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->children, __pyx_n_s_sort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_5_tree_8TreeItem_4sort_lambda1, 0, __pyx_n_s_sort_locals_lambda, NULL, __pyx_n_s_pyFAI_ext__tree, __pyx_d, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_5_tree_8TreeItem_4sort_lambda1, 0, __pyx_n_s_sort_locals_lambda, NULL, __pyx_n_s_pyFAI_ext__tree, __pyx_d, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_key, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_key, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/_tree.pyx":97 + /* "pyFAI/ext/_tree.pyx":99 * return "Root TreeItem %s with children: %s" % (self.label, ", ".join([i.label for i in self.children])) * * def sort(self): # <<<<<<<<<<<<<< @@ -2243,7 +2253,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_12sort(struct __pyx_obj_5 return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":102 +/* "pyFAI/ext/_tree.pyx":104 * self.children.sort(key=lambda x: x.label) * * cpdef TreeItem next(self): # <<<<<<<<<<<<<< @@ -2273,7 +2283,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_next); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_next); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_15next)) { __Pyx_XDECREF(((PyObject *)__pyx_r)); @@ -2289,14 +2299,14 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2305,7 +2315,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":104 + /* "pyFAI/ext/_tree.pyx":106 * cpdef TreeItem next(self): * cdef int idx * if self.parent is None: # <<<<<<<<<<<<<< @@ -2316,28 +2326,28 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __pyx_t_6 = (__pyx_t_5 != 0); if (__pyx_t_6) { - /* "pyFAI/ext/_tree.pyx":105 + /* "pyFAI/ext/_tree.pyx":107 * cdef int idx * if self.parent is None: * raise IndexError("Next does not exist") # <<<<<<<<<<<<<< * idx = self.parent.children.index(self) * if idx < len(self.parent.children) - 1: */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "pyFAI/ext/_tree.pyx":106 + /* "pyFAI/ext/_tree.pyx":108 * if self.parent is None: * raise IndexError("Next does not exist") * idx = self.parent.children.index(self) # <<<<<<<<<<<<<< * if idx < len(self.parent.children) - 1: * return self.parent.children[idx + 1] */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->parent->children, __pyx_n_s_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->parent->children, __pyx_n_s_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -2350,25 +2360,25 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_idx = __pyx_t_7; - /* "pyFAI/ext/_tree.pyx":107 + /* "pyFAI/ext/_tree.pyx":109 * raise IndexError("Next does not exist") * idx = self.parent.children.index(self) * if idx < len(self.parent.children) - 1: # <<<<<<<<<<<<<< @@ -2379,14 +2389,14 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_8 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = ((__pyx_v_idx < (__pyx_t_8 - 1)) != 0); if (__pyx_t_6) { - /* "pyFAI/ext/_tree.pyx":108 + /* "pyFAI/ext/_tree.pyx":110 * idx = self.parent.children.index(self) * if idx < len(self.parent.children) - 1: * return self.parent.children[idx + 1] # <<<<<<<<<<<<<< @@ -2396,19 +2406,19 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_XDECREF(((PyObject *)__pyx_r)); if (unlikely(__pyx_v_self->parent->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_9 = (__pyx_v_idx + 1); - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->parent->children, __pyx_t_9, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->parent->children, __pyx_t_9, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_tree.pyx":110 + /* "pyFAI/ext/_tree.pyx":112 * return self.parent.children[idx + 1] * else: * return self.parent.next().children[0] # <<<<<<<<<<<<<< @@ -2416,22 +2426,22 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ * cpdef TreeItem previous(self): */ __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->parent->__pyx_vtab)->next(__pyx_v_self->parent, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->parent->__pyx_vtab)->next(__pyx_v_self->parent, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (unlikely(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1)->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = __Pyx_GetItemInt_List(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1)->children, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_2 = __Pyx_GetItemInt_List(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1)->children, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":102 + /* "pyFAI/ext/_tree.pyx":104 * self.children.sort(key=lambda x: x.label) * * cpdef TreeItem next(self): # <<<<<<<<<<<<<< @@ -2455,6 +2465,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_15next(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_14next[] = "TreeItem.next(self) -> TreeItem"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_15next(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -2475,7 +2486,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_14next(struct __pyx_obj_5 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("next", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_next(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_next(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2492,7 +2503,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_14next(struct __pyx_obj_5 return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":112 +/* "pyFAI/ext/_tree.pyx":114 * return self.parent.next().children[0] * * cpdef TreeItem previous(self): # <<<<<<<<<<<<<< @@ -2521,7 +2532,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_previous); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_previous); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_17previous)) { __Pyx_XDECREF(((PyObject *)__pyx_r)); @@ -2537,14 +2548,14 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2553,7 +2564,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":114 + /* "pyFAI/ext/_tree.pyx":116 * cpdef TreeItem previous(self): * cdef int idx * if self.parent is None: # <<<<<<<<<<<<<< @@ -2564,28 +2575,28 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __pyx_t_6 = (__pyx_t_5 != 0); if (__pyx_t_6) { - /* "pyFAI/ext/_tree.pyx":115 + /* "pyFAI/ext/_tree.pyx":117 * cdef int idx * if self.parent is None: * raise IndexError("Previous does not exist") # <<<<<<<<<<<<<< * idx = self.parent.children.index(self) * if idx > 0: */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "pyFAI/ext/_tree.pyx":116 + /* "pyFAI/ext/_tree.pyx":118 * if self.parent is None: * raise IndexError("Previous does not exist") * idx = self.parent.children.index(self) # <<<<<<<<<<<<<< * if idx > 0: * return self.parent.children[idx - 1] */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->parent->children, __pyx_n_s_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->parent->children, __pyx_n_s_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -2598,25 +2609,25 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_idx = __pyx_t_7; - /* "pyFAI/ext/_tree.pyx":117 + /* "pyFAI/ext/_tree.pyx":119 * raise IndexError("Previous does not exist") * idx = self.parent.children.index(self) * if idx > 0: # <<<<<<<<<<<<<< @@ -2626,7 +2637,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __pyx_t_6 = ((__pyx_v_idx > 0) != 0); if (__pyx_t_6) { - /* "pyFAI/ext/_tree.pyx":118 + /* "pyFAI/ext/_tree.pyx":120 * idx = self.parent.children.index(self) * if idx > 0: * return self.parent.children[idx - 1] # <<<<<<<<<<<<<< @@ -2636,19 +2647,19 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_XDECREF(((PyObject *)__pyx_r)); if (unlikely(__pyx_v_self->parent->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_8 = (__pyx_v_idx - 1); - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->parent->children, __pyx_t_8, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->parent->children, __pyx_t_8, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_tree.pyx":120 + /* "pyFAI/ext/_tree.pyx":122 * return self.parent.children[idx - 1] * else: * return self.parent.previous().children[-1] # <<<<<<<<<<<<<< @@ -2656,22 +2667,22 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ * cpdef TreeItem first(self): */ __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->parent->__pyx_vtab)->previous(__pyx_v_self->parent, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5pyFAI_3ext_5_tree_TreeItem *)__pyx_v_self->parent->__pyx_vtab)->previous(__pyx_v_self->parent, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (unlikely(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1)->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = __Pyx_GetItemInt_List(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1)->children, -1, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_2 = __Pyx_GetItemInt_List(((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1)->children, -1, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":112 + /* "pyFAI/ext/_tree.pyx":114 * return self.parent.next().children[0] * * cpdef TreeItem previous(self): # <<<<<<<<<<<<<< @@ -2695,6 +2706,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_17previous(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_16previous[] = "TreeItem.previous(self) -> TreeItem"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_17previous(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -2715,7 +2727,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_16previous(struct __pyx_o int __pyx_clineno = 0; __Pyx_RefNannySetupContext("previous", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_previous(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_previous(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2732,7 +2744,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_16previous(struct __pyx_o return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":122 +/* "pyFAI/ext/_tree.pyx":124 * return self.parent.previous().children[-1] * * cpdef TreeItem first(self): # <<<<<<<<<<<<<< @@ -2757,7 +2769,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_first); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_first); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_19first)) { __Pyx_XDECREF(((PyObject *)__pyx_r)); @@ -2773,14 +2785,14 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2789,7 +2801,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":123 + /* "pyFAI/ext/_tree.pyx":125 * * cpdef TreeItem first(self): * if self.children: # <<<<<<<<<<<<<< @@ -2799,7 +2811,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __pyx_t_5 = (__pyx_v_self->children != Py_None) && (PyList_GET_SIZE(__pyx_v_self->children) != 0); if (__pyx_t_5) { - /* "pyFAI/ext/_tree.pyx":124 + /* "pyFAI/ext/_tree.pyx":126 * cpdef TreeItem first(self): * if self.children: * return self.children[0].first() # <<<<<<<<<<<<<< @@ -2809,11 +2821,11 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_XDECREF(((PyObject *)__pyx_r)); if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->children, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->children, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_first); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_first); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -2827,21 +2839,21 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_tree.pyx":126 + /* "pyFAI/ext/_tree.pyx":128 * return self.children[0].first() * else: * return self # <<<<<<<<<<<<<< @@ -2854,7 +2866,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":122 + /* "pyFAI/ext/_tree.pyx":124 * return self.parent.previous().children[-1] * * cpdef TreeItem first(self): # <<<<<<<<<<<<<< @@ -2878,6 +2890,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_19first(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_18first[] = "TreeItem.first(self) -> TreeItem"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_19first(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -2898,7 +2911,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_18first(struct __pyx_obj_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("first", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_first(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_first(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -2915,7 +2928,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_18first(struct __pyx_obj_ return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":128 +/* "pyFAI/ext/_tree.pyx":130 * return self * * cpdef TreeItem last(self): # <<<<<<<<<<<<<< @@ -2940,7 +2953,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ if (unlikely(__pyx_skip_dispatch)) ; /* Check if overridden in Python */ else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_last); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_last); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_21last)) { __Pyx_XDECREF(((PyObject *)__pyx_r)); @@ -2956,14 +2969,14 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2972,7 +2985,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "pyFAI/ext/_tree.pyx":129 + /* "pyFAI/ext/_tree.pyx":131 * * cpdef TreeItem last(self): * if self.children: # <<<<<<<<<<<<<< @@ -2982,7 +2995,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __pyx_t_5 = (__pyx_v_self->children != Py_None) && (PyList_GET_SIZE(__pyx_v_self->children) != 0); if (__pyx_t_5) { - /* "pyFAI/ext/_tree.pyx":130 + /* "pyFAI/ext/_tree.pyx":132 * cpdef TreeItem last(self): * if self.children: * return self.children[-1].last() # <<<<<<<<<<<<<< @@ -2992,11 +3005,11 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ __Pyx_XDECREF(((PyObject *)__pyx_r)); if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->children, -1, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->children, -1, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_last); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_last); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -3010,21 +3023,21 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ } } if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; } /*else*/ { - /* "pyFAI/ext/_tree.pyx":132 + /* "pyFAI/ext/_tree.pyx":134 * return self.children[-1].last() * else: * return self # <<<<<<<<<<<<<< @@ -3037,7 +3050,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":128 + /* "pyFAI/ext/_tree.pyx":130 * return self * * cpdef TreeItem last(self): # <<<<<<<<<<<<<< @@ -3061,6 +3074,7 @@ static struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *__pyx_f_5pyFAI_3ext_5_tree_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_21last(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_20last[] = "TreeItem.last(self) -> TreeItem"; static PyObject *__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_21last(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -3081,7 +3095,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_20last(struct __pyx_obj_5 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("last", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_last(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((PyObject *)__pyx_f_5pyFAI_3ext_5_tree_8TreeItem_last(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -3098,7 +3112,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_20last(struct __pyx_obj_5 return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":135 +/* "pyFAI/ext/_tree.pyx":137 * * property size: * def __get__(self): # <<<<<<<<<<<<<< @@ -3136,7 +3150,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "pyFAI/ext/_tree.pyx":136 + /* "pyFAI/ext/_tree.pyx":138 * property size: * def __get__(self): * cdef int s = 0 # <<<<<<<<<<<<<< @@ -3145,7 +3159,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py */ __pyx_v_s = 0; - /* "pyFAI/ext/_tree.pyx":138 + /* "pyFAI/ext/_tree.pyx":140 * cdef int s = 0 * cdef TreeItem child * if self.children: # <<<<<<<<<<<<<< @@ -3155,7 +3169,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py __pyx_t_1 = (__pyx_v_self->children != Py_None) && (PyList_GET_SIZE(__pyx_v_self->children) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_tree.pyx":139 + /* "pyFAI/ext/_tree.pyx":141 * cdef TreeItem child * if self.children: * for child in self.children: # <<<<<<<<<<<<<< @@ -3164,40 +3178,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py */ if (unlikely(__pyx_v_self->children == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_2 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; for (;;) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_child, ((struct __pyx_obj_5pyFAI_3ext_5_tree_TreeItem *)__pyx_t_4)); __pyx_t_4 = 0; - /* "pyFAI/ext/_tree.pyx":140 + /* "pyFAI/ext/_tree.pyx":142 * if self.children: * for child in self.children: * s += child.size # <<<<<<<<<<<<<< * return s * else: */ - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_child), __pyx_n_s_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_child), __pyx_n_s_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_s = __pyx_t_7; - /* "pyFAI/ext/_tree.pyx":139 + /* "pyFAI/ext/_tree.pyx":141 * cdef TreeItem child * if self.children: * for child in self.children: # <<<<<<<<<<<<<< @@ -3207,7 +3221,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/_tree.pyx":141 + /* "pyFAI/ext/_tree.pyx":143 * for child in self.children: * s += child.size * return s # <<<<<<<<<<<<<< @@ -3215,7 +3229,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py * return 1 */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -3223,7 +3237,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py } /*else*/ { - /* "pyFAI/ext/_tree.pyx":143 + /* "pyFAI/ext/_tree.pyx":145 * return s * else: * return 1 # <<<<<<<<<<<<<< @@ -3236,7 +3250,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":135 + /* "pyFAI/ext/_tree.pyx":137 * * property size: * def __get__(self): # <<<<<<<<<<<<<< @@ -3259,7 +3273,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4size___get__(struct __py return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":146 +/* "pyFAI/ext/_tree.pyx":148 * * property name: * def __get__(self): # <<<<<<<<<<<<<< @@ -3293,7 +3307,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "pyFAI/ext/_tree.pyx":147 + /* "pyFAI/ext/_tree.pyx":149 * property name: * def __get__(self): * if self.order <= 1: # <<<<<<<<<<<<<< @@ -3303,7 +3317,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py __pyx_t_1 = ((__pyx_v_self->order <= 1) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_tree.pyx":148 + /* "pyFAI/ext/_tree.pyx":150 * def __get__(self): * if self.order <= 1: * return self.label or "" # <<<<<<<<<<<<<< @@ -3311,7 +3325,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py * return self.parent.name + ":" + self.label */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->label); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->label); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_1) { } else { __Pyx_INCREF(__pyx_v_self->label); @@ -3326,18 +3340,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":149 + /* "pyFAI/ext/_tree.pyx":151 * if self.order <= 1: * return self.label or "" * if self.parent.type == "file": # <<<<<<<<<<<<<< * return self.parent.name + ":" + self.label * elif self.parent.type == "group": */ - __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->parent->type, __pyx_n_s_file, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->parent->type, __pyx_n_s_file, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = (__pyx_t_1 != 0); if (__pyx_t_3) { - /* "pyFAI/ext/_tree.pyx":150 + /* "pyFAI/ext/_tree.pyx":152 * return self.label or "" * if self.parent.type == "file": * return self.parent.name + ":" + self.label # <<<<<<<<<<<<<< @@ -3345,12 +3359,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py * return self.parent.name + "/" + self.label */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_v_self->label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_v_self->label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_2; @@ -3358,18 +3372,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":151 + /* "pyFAI/ext/_tree.pyx":153 * if self.parent.type == "file": * return self.parent.name + ":" + self.label * elif self.parent.type == "group": # <<<<<<<<<<<<<< * return self.parent.name + "/" + self.label * else: */ - __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->parent->type, __pyx_n_s_group, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->parent->type, __pyx_n_s_group, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = (__pyx_t_3 != 0); if (__pyx_t_1) { - /* "pyFAI/ext/_tree.pyx":152 + /* "pyFAI/ext/_tree.pyx":154 * return self.parent.name + ":" + self.label * elif self.parent.type == "group": * return self.parent.name + "/" + self.label # <<<<<<<<<<<<<< @@ -3377,12 +3391,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py * return self.parent.name + os.sep + self.label */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_v_self->label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_v_self->label); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_2; @@ -3391,24 +3405,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py } /*else*/ { - /* "pyFAI/ext/_tree.pyx":154 + /* "pyFAI/ext/_tree.pyx":156 * return self.parent.name + "/" + self.label * else: * return self.parent.name + os.sep + self.label # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sep); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sep); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_self->label); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_self->label); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_5; @@ -3416,7 +3430,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py goto __pyx_L0; } - /* "pyFAI/ext/_tree.pyx":146 + /* "pyFAI/ext/_tree.pyx":148 * * property name: * def __get__(self): # <<<<<<<<<<<<<< @@ -3437,8 +3451,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4name___get__(struct __py return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":50 - * add a next/previous method +/* "pyFAI/ext/_tree.pyx":52 + * * """ * cdef public list children # <<<<<<<<<<<<<< * cdef public TreeItem parent @@ -3495,7 +3509,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_8children_2__set__(struct __pyx const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(PyList_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyList_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -3545,7 +3559,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_8children_4__del__(struct __pyx return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":51 +/* "pyFAI/ext/_tree.pyx":53 * """ * cdef public list children * cdef public TreeItem parent # <<<<<<<<<<<<<< @@ -3603,7 +3617,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_6parent_2__set__(struct __pyx_o const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5pyFAI_3ext_5_tree_TreeItem))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -3653,7 +3667,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_6parent_4__del__(struct __pyx_o return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":52 +/* "pyFAI/ext/_tree.pyx":54 * cdef public list children * cdef public TreeItem parent * cdef public str label # <<<<<<<<<<<<<< @@ -3711,7 +3725,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_5label_2__set__(struct __pyx_ob const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -3761,7 +3775,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_5label_4__del__(struct __pyx_ob return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":53 +/* "pyFAI/ext/_tree.pyx":55 * cdef public TreeItem parent * cdef public str label * cdef public int order # <<<<<<<<<<<<<< @@ -3791,7 +3805,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_5order___get__(struct __p int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->order); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->order); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -3829,7 +3843,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_5order_2__set__(struct __pyx_ob const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 0); - __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_self->order = __pyx_t_1; /* function exit code */ @@ -3843,7 +3857,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_5order_2__set__(struct __pyx_ob return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":54 +/* "pyFAI/ext/_tree.pyx":56 * cdef public str label * cdef public int order * cdef public str type #can by "dir", "file", "group" or "dataset" # <<<<<<<<<<<<<< @@ -3901,7 +3915,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4type_2__set__(struct __pyx_obj const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); @@ -3951,7 +3965,7 @@ static int __pyx_pf_5pyFAI_3ext_5_tree_8TreeItem_4type_4__del__(struct __pyx_obj return __pyx_r; } -/* "pyFAI/ext/_tree.pyx":55 +/* "pyFAI/ext/_tree.pyx":57 * cdef public int order * cdef public str type #can by "dir", "file", "group" or "dataset" * cdef public object extra # <<<<<<<<<<<<<< @@ -4200,27 +4214,27 @@ static int __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_extra(PyObject *o, PyObjec } static PyMethodDef __pyx_methods_5pyFAI_3ext_5_tree_TreeItem[] = { - {"add_child", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_3add_child, METH_O, 0}, + {"add_child", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_3add_child, METH_O, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_2add_child}, {"update", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_5update, METH_O, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_4update}, - {"has_child", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_7has_child, METH_O, 0}, - {"get", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_9get, METH_O, 0}, - {"sort", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_13sort, METH_NOARGS, 0}, - {"next", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_15next, METH_NOARGS, 0}, - {"previous", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_17previous, METH_NOARGS, 0}, - {"first", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_19first, METH_NOARGS, 0}, - {"last", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_21last, METH_NOARGS, 0}, + {"has_child", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_7has_child, METH_O, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_6has_child}, + {"get", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_9get, METH_O, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_8get}, + {"sort", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_13sort, METH_NOARGS, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_12sort}, + {"next", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_15next, METH_NOARGS, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_14next}, + {"previous", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_17previous, METH_NOARGS, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_16previous}, + {"first", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_19first, METH_NOARGS, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_18first}, + {"last", (PyCFunction)__pyx_pw_5pyFAI_3ext_5_tree_8TreeItem_21last, METH_NOARGS, __pyx_doc_5pyFAI_3ext_5_tree_8TreeItem_20last}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_5pyFAI_3ext_5_tree_TreeItem[] = { {(char *)"size", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_size, 0, 0, 0}, {(char *)"name", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_name, 0, 0, 0}, - {(char *)"children", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_children, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_children, 0, 0}, - {(char *)"parent", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_parent, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_parent, 0, 0}, - {(char *)"label", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_label, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_label, 0, 0}, - {(char *)"order", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_order, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_order, 0, 0}, - {(char *)"type", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_type, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_type, 0, 0}, - {(char *)"extra", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_extra, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_extra, 0, 0}, + {(char *)"children", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_children, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_children, __pyx_k_children_list, 0}, + {(char *)"parent", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_parent, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_parent, __pyx_k_parent_pyFAI_ext__tree_TreeItem, 0}, + {(char *)"label", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_label, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_label, __pyx_k_label_str, 0}, + {(char *)"order", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_order, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_order, __pyx_k_order_int, 0}, + {(char *)"type", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_type, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_type, __pyx_k_type_str, 0}, + {(char *)"extra", __pyx_getprop_5pyFAI_3ext_5_tree_8TreeItem_extra, __pyx_setprop_5pyFAI_3ext_5_tree_8TreeItem_extra, __pyx_k_extra_object, 0}, {0, 0, 0, 0, 0} }; @@ -4249,7 +4263,7 @@ static PyTypeObject __pyx_type_5pyFAI_3ext_5_tree_TreeItem = { 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "\n Node of a tree ...\n\n Contains:\n self.order: depth from root\n add name: reconstitute the full name\n add comment field for dirname and filenames\n add reorder command which will sort all sub-trees\n add size property which calculate the size of the subtree\n add a next/previous method\n ", /*tp_doc*/ + "TreeItem(str label=None, TreeItem parent=None)\n\n Node of a tree ...\n\n Each node contains:\n \n * children: list \n * parent: TreeItem parent\n * label: str \n * order: int\n * type: str can be \"dir\", \"file\", \"group\" or \"dataset\"\n * extra: any object\n\n ", /*tp_doc*/ __pyx_tp_traverse_5pyFAI_3ext_5_tree_TreeItem, /*tp_traverse*/ __pyx_tp_clear_5pyFAI_3ext_5_tree_TreeItem, /*tp_clear*/ 0, /*tp_richcompare*/ @@ -4305,8 +4319,8 @@ static struct PyModuleDef __pyx_moduledef = { static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_2011_2015_ESRF, __pyx_k_2011_2015_ESRF, sizeof(__pyx_k_2011_2015_ESRF), 0, 0, 1, 0}, - {&__pyx_kp_s_31_05_2016, __pyx_k_31_05_2016, sizeof(__pyx_k_31_05_2016), 0, 0, 1, 0}, {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, {&__pyx_kp_s_Jerome_Kieffer, __pyx_k_Jerome_Kieffer, sizeof(__pyx_k_Jerome_Kieffer), 0, 0, 1, 0}, {&__pyx_n_s_MIT, __pyx_k_MIT, sizeof(__pyx_k_MIT), 0, 0, 1, 1}, @@ -4352,7 +4366,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -4362,25 +4376,25 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "pyFAI/ext/_tree.pyx":105 + /* "pyFAI/ext/_tree.pyx":107 * cdef int idx * if self.parent is None: * raise IndexError("Next does not exist") # <<<<<<<<<<<<<< * idx = self.parent.children.index(self) * if idx < len(self.parent.children) - 1: */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Next_does_not_exist); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Next_does_not_exist); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "pyFAI/ext/_tree.pyx":115 + /* "pyFAI/ext/_tree.pyx":117 * cdef int idx * if self.parent is None: * raise IndexError("Previous does not exist") # <<<<<<<<<<<<<< * idx = self.parent.children.index(self) * if idx > 0: */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Previous_does_not_exist); if (unlikely(!__pyx_tuple__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Previous_does_not_exist); if (unlikely(!__pyx_tuple__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); __Pyx_RefNannyFinishContext(); @@ -4502,7 +4516,7 @@ PyMODINIT_FUNC PyInit__tree(void) * * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __license__ = "MIT" - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -4510,7 +4524,7 @@ PyMODINIT_FUNC PyInit__tree(void) * * __author__ = "Jerome Kieffer" * __license__ = "MIT" # <<<<<<<<<<<<<< - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -4518,15 +4532,15 @@ PyMODINIT_FUNC PyInit__tree(void) /* "pyFAI/ext/_tree.pyx":31 * __author__ = "Jerome Kieffer" * __license__ = "MIT" - * __date__ = "31/05/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __copyright__ = "2011-2015, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_31_05_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_tree.pyx":32 * __license__ = "MIT" - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" # <<<<<<<<<<<<<< * __contact__ = "jerome.kieffer@esrf.fr" * @@ -4534,7 +4548,7 @@ PyMODINIT_FUNC PyInit__tree(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_copyright, __pyx_kp_s_2011_2015_ESRF) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/_tree.pyx":33 - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< * diff --git a/pyFAI/ext/_tree.pyx b/pyFAI/ext/_tree.pyx index 038fdd57a..3eb89482c 100644 --- a/pyFAI/ext/_tree.pyx +++ b/pyFAI/ext/_tree.pyx @@ -28,7 +28,7 @@ __author__ = "Jerome Kieffer" __license__ = "MIT" -__date__ = "31/05/2016" +__date__ = "01/12/2016" __copyright__ = "2011-2015, ESRF" __contact__ = "jerome.kieffer@esrf.fr" @@ -39,13 +39,15 @@ cdef class TreeItem(object): """ Node of a tree ... - Contains: - self.order: depth from root - add name: reconstitute the full name - add comment field for dirname and filenames - add reorder command which will sort all sub-trees - add size property which calculate the size of the subtree - add a next/previous method + Each node contains: + + * children: list + * parent: TreeItem parent + * label: str + * order: int + * type: str can be "dir", "file", "group" or "dataset" + * extra: any object + """ cdef public list children cdef public TreeItem parent diff --git a/pyFAI/ext/bilinear.c b/pyFAI/ext/bilinear.c index b6f5f2426..5c1eb359f 100644 --- a/pyFAI/ext/bilinear.c +++ b/pyFAI/ext/bilinear.c @@ -447,7 +447,7 @@ static const char *__pyx_f[] = { "pyFAI/ext/bilinear.pyx", "pyFAI/ext/bilinear.pxi", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; #define IS_UNSIGNED(type) (((type) -1) > 0) @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -758,7 +758,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -767,7 +767,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -776,7 +776,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -785,7 +785,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -834,7 +834,7 @@ struct __pyx_defaults7 { __Pyx_memviewslice __pyx_arg_d3; }; -/* "bilinear.pxi":26 +/* "pyFAI/ext/bilinear.pxi":26 * from libc.math cimport floor, ceil * * cdef class Bilinear: # <<<<<<<<<<<<<< @@ -929,7 +929,7 @@ struct __pyx_memoryviewslice_obj { -/* "bilinear.pxi":26 +/* "pyFAI/ext/bilinear.pxi":26 * from libc.math cimport floor, ceil * * cdef class Bilinear: # <<<<<<<<<<<<<< @@ -1888,7 +1888,7 @@ static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_copyright[] = "__copyright__"; static char __pyx_k_enumerate[] = "enumerate"; static char __pyx_k_getLogger[] = "getLogger"; -static char __pyx_k_27_09_2016[] = "27/09/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_decorators[] = "decorators"; @@ -1954,8 +1954,8 @@ static char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_2011_2015_ESRF; -static PyObject *__pyx_kp_s_27_09_2016; static PyObject *__pyx_n_s_A0; static PyObject *__pyx_n_s_A1; static PyObject *__pyx_n_s_A2; @@ -2172,7 +2172,7 @@ static PyObject *__pyx_codeobj__36; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_1calc_cartesian_positions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_8bilinear_calc_cartesian_positions[] = "\n Calculate the Cartesian position for array of position (d1, d2)\n with pixel coordinated stored in array pos\n This is bilinear interpolation\n\n @param d1: position in dim1\n @param d2: position in dim2\n @param pos: array with position of pixels corners\n @return 3-tuple of position.\n "; +static char __pyx_doc_5pyFAI_3ext_8bilinear_calc_cartesian_positions[] = "calc_cartesian_positions(signatures, args, kwargs, defaults)\n\n Calculate the Cartesian position for array of position (d1, d2)\n with pixel coordinated stored in array pos\n This is bilinear interpolation\n\n :param d1: position in dim1\n :param d2: position in dim2\n :param pos: array with position of pixels corners\n :return 3-tuple of position.\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_8bilinear_1calc_cartesian_positions = {"calc_cartesian_positions", (PyCFunction)__pyx_pw_5pyFAI_3ext_8bilinear_1calc_cartesian_positions, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_8bilinear_calc_cartesian_positions}; static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_1calc_cartesian_positions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_signatures = 0; @@ -3309,12 +3309,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON __pyx_t_3 = __pyx_v_size; if (1 == 0) abort(); { - float __pyx_parallel_temp0 = __PYX_NAN(); + int __pyx_parallel_temp0 = 0xbad0bad0; float __pyx_parallel_temp1 = __PYX_NAN(); - float __pyx_parallel_temp2 = __PYX_NAN(); + int __pyx_parallel_temp2 = 0xbad0bad0; float __pyx_parallel_temp3 = __PYX_NAN(); - int __pyx_parallel_temp4 = 0xbad0bad0; - int __pyx_parallel_temp5 = 0xbad0bad0; + float __pyx_parallel_temp4 = __PYX_NAN(); + float __pyx_parallel_temp5 = __PYX_NAN(); float __pyx_parallel_temp6 = __PYX_NAN(); float __pyx_parallel_temp7 = __PYX_NAN(); float __pyx_parallel_temp8 = __PYX_NAN(); @@ -3342,7 +3342,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_40, __pyx_t_72, __pyx_t_29, __pyx_t_56, __pyx_t_64, __pyx_t_30, __pyx_t_33, __pyx_t_70, __pyx_t_20, __pyx_t_22, __pyx_t_65, __pyx_t_32, __pyx_t_46, __pyx_t_58, __pyx_t_21, __pyx_t_59, __pyx_t_39, __pyx_t_43, __pyx_t_41, __pyx_t_9, __pyx_t_47, __pyx_t_51, __pyx_t_17, __pyx_t_73, __pyx_t_62, __pyx_t_23, __pyx_t_69, __pyx_t_68, __pyx_t_67, __pyx_t_53, __pyx_t_38, __pyx_t_45, __pyx_t_16, __pyx_t_48, __pyx_t_27, __pyx_t_24, __pyx_t_61, __pyx_t_37, __pyx_t_63, __pyx_t_74, __pyx_t_25, __pyx_t_55, __pyx_t_35, __pyx_t_36, __pyx_t_44, __pyx_t_50, __pyx_t_19, __pyx_t_52, __pyx_t_57, __pyx_t_54, __pyx_t_42, __pyx_t_31, __pyx_t_60, __pyx_t_71, __pyx_t_18, __pyx_t_26, __pyx_t_28, __pyx_t_66, __pyx_t_49) firstprivate(__pyx_t_6, __pyx_t_1, __pyx_t_5, __pyx_t_4, __pyx_t_2) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_30, __pyx_t_9, __pyx_t_32, __pyx_t_16, __pyx_t_72, __pyx_t_24, __pyx_t_53, __pyx_t_61, __pyx_t_42, __pyx_t_34, __pyx_t_59, __pyx_t_47, __pyx_t_37, __pyx_t_70, __pyx_t_26, __pyx_t_56, __pyx_t_48, __pyx_t_64, __pyx_t_67, __pyx_t_36, __pyx_t_52, __pyx_t_69, __pyx_t_65, __pyx_t_60, __pyx_t_28, __pyx_t_55, __pyx_t_66, __pyx_t_44, __pyx_t_29, __pyx_t_27, __pyx_t_68, __pyx_t_25, __pyx_t_51, __pyx_t_49, __pyx_t_39, __pyx_t_33, __pyx_t_40, __pyx_t_19, __pyx_t_22, __pyx_t_62, __pyx_t_18, __pyx_t_74, __pyx_t_54, __pyx_t_20, __pyx_t_31, __pyx_t_45, __pyx_t_17, __pyx_t_58, __pyx_t_21, __pyx_t_38, __pyx_t_35, __pyx_t_41, __pyx_t_23, __pyx_t_73, __pyx_t_50, __pyx_t_46, __pyx_t_63, __pyx_t_71, __pyx_t_57, __pyx_t_43) firstprivate(__pyx_t_5, __pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_1) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -3352,31 +3352,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_B0) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_p2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_A1) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_C1) lastprivate(__pyx_v_f1) lastprivate(__pyx_v_C2) lastprivate(__pyx_v_delta2) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_C0) lastprivate(__pyx_v_A0) lastprivate(__pyx_v_D2) schedule(static) + #pragma omp for lastprivate(__pyx_v_p2) lastprivate(__pyx_v_D2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_A1) lastprivate(__pyx_v_A0) lastprivate(__pyx_v_delta2) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_f1) lastprivate(__pyx_v_C2) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_C0) lastprivate(__pyx_v_B0) lastprivate(__pyx_v_C1) schedule(static) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_B0 = ((float)__PYX_NAN()); - __pyx_v_B1 = ((float)__PYX_NAN()); - __pyx_v_A2 = ((float)__PYX_NAN()); - __pyx_v_D0 = ((float)__PYX_NAN()); __pyx_v_p2 = ((int)0xbad0bad0); + __pyx_v_D2 = ((float)__PYX_NAN()); __pyx_v_p1 = ((int)0xbad0bad0); - __pyx_v_D1 = ((float)__PYX_NAN()); __pyx_v_A1 = ((float)__PYX_NAN()); + __pyx_v_A0 = ((float)__PYX_NAN()); + __pyx_v_delta2 = ((float)__PYX_NAN()); + __pyx_v_f2 = ((float)__PYX_NAN()); + __pyx_v_delta1 = ((float)__PYX_NAN()); + __pyx_v_D1 = ((float)__PYX_NAN()); __pyx_v_B2 = ((float)__PYX_NAN()); - __pyx_v_C1 = ((float)__PYX_NAN()); + __pyx_v_B1 = ((float)__PYX_NAN()); __pyx_v_f1 = ((float)__PYX_NAN()); __pyx_v_C2 = ((float)__PYX_NAN()); - __pyx_v_delta2 = ((float)__PYX_NAN()); - __pyx_v_delta1 = ((float)__PYX_NAN()); - __pyx_v_f2 = ((float)__PYX_NAN()); + __pyx_v_D0 = ((float)__PYX_NAN()); + __pyx_v_A2 = ((float)__PYX_NAN()); __pyx_v_C0 = ((float)__PYX_NAN()); - __pyx_v_A0 = ((float)__PYX_NAN()); - __pyx_v_D2 = ((float)__PYX_NAN()); + __pyx_v_B0 = ((float)__PYX_NAN()); + __pyx_v_C1 = ((float)__PYX_NAN()); /* "pyFAI/ext/bilinear.pyx":76 * @@ -4029,25 +4029,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON #pragma omp critical(__pyx_parallel_lastprivates0) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_B0; - __pyx_parallel_temp1 = __pyx_v_B1; - __pyx_parallel_temp2 = __pyx_v_A2; - __pyx_parallel_temp3 = __pyx_v_D0; - __pyx_parallel_temp4 = __pyx_v_p2; - __pyx_parallel_temp5 = __pyx_v_p1; - __pyx_parallel_temp6 = __pyx_v_D1; - __pyx_parallel_temp7 = __pyx_v_A1; - __pyx_parallel_temp8 = __pyx_v_B2; - __pyx_parallel_temp9 = __pyx_v_C1; - __pyx_parallel_temp10 = __pyx_v_f1; - __pyx_parallel_temp11 = __pyx_v_C2; - __pyx_parallel_temp12 = __pyx_v_delta2; + __pyx_parallel_temp0 = __pyx_v_p2; + __pyx_parallel_temp1 = __pyx_v_D2; + __pyx_parallel_temp2 = __pyx_v_p1; + __pyx_parallel_temp3 = __pyx_v_A1; + __pyx_parallel_temp4 = __pyx_v_A0; + __pyx_parallel_temp5 = __pyx_v_delta2; + __pyx_parallel_temp6 = __pyx_v_f2; + __pyx_parallel_temp7 = __pyx_v_delta1; + __pyx_parallel_temp8 = __pyx_v_D1; + __pyx_parallel_temp9 = __pyx_v_B2; + __pyx_parallel_temp10 = __pyx_v_B1; + __pyx_parallel_temp11 = __pyx_v_f1; + __pyx_parallel_temp12 = __pyx_v_C2; __pyx_parallel_temp13 = __pyx_v_i; - __pyx_parallel_temp14 = __pyx_v_delta1; - __pyx_parallel_temp15 = __pyx_v_f2; + __pyx_parallel_temp14 = __pyx_v_D0; + __pyx_parallel_temp15 = __pyx_v_A2; __pyx_parallel_temp16 = __pyx_v_C0; - __pyx_parallel_temp17 = __pyx_v_A0; - __pyx_parallel_temp18 = __pyx_v_D2; + __pyx_parallel_temp17 = __pyx_v_B0; + __pyx_parallel_temp18 = __pyx_v_C1; } __pyx_L39:; #ifdef _OPENMP @@ -4064,16 +4064,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON #endif #endif /* _OPENMP */ /* Clean up any temporaries */ - __Pyx_XDECREF(__pyx_t_6); - __pyx_t_6 = NULL; - __Pyx_XDECREF(__pyx_t_1); - __pyx_t_1 = NULL; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = NULL; - __Pyx_XDECREF(__pyx_t_4); - __pyx_t_4 = NULL; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = NULL; + __Pyx_XDECREF(__pyx_t_4); + __pyx_t_4 = NULL; + __Pyx_XDECREF(__pyx_t_6); + __pyx_t_6 = NULL; + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -4087,25 +4087,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_B0 = __pyx_parallel_temp0; - __pyx_v_B1 = __pyx_parallel_temp1; - __pyx_v_A2 = __pyx_parallel_temp2; - __pyx_v_D0 = __pyx_parallel_temp3; - __pyx_v_p2 = __pyx_parallel_temp4; - __pyx_v_p1 = __pyx_parallel_temp5; - __pyx_v_D1 = __pyx_parallel_temp6; - __pyx_v_A1 = __pyx_parallel_temp7; - __pyx_v_B2 = __pyx_parallel_temp8; - __pyx_v_C1 = __pyx_parallel_temp9; - __pyx_v_f1 = __pyx_parallel_temp10; - __pyx_v_C2 = __pyx_parallel_temp11; - __pyx_v_delta2 = __pyx_parallel_temp12; + __pyx_v_p2 = __pyx_parallel_temp0; + __pyx_v_D2 = __pyx_parallel_temp1; + __pyx_v_p1 = __pyx_parallel_temp2; + __pyx_v_A1 = __pyx_parallel_temp3; + __pyx_v_A0 = __pyx_parallel_temp4; + __pyx_v_delta2 = __pyx_parallel_temp5; + __pyx_v_f2 = __pyx_parallel_temp6; + __pyx_v_delta1 = __pyx_parallel_temp7; + __pyx_v_D1 = __pyx_parallel_temp8; + __pyx_v_B2 = __pyx_parallel_temp9; + __pyx_v_B1 = __pyx_parallel_temp10; + __pyx_v_f1 = __pyx_parallel_temp11; + __pyx_v_C2 = __pyx_parallel_temp12; __pyx_v_i = __pyx_parallel_temp13; - __pyx_v_delta1 = __pyx_parallel_temp14; - __pyx_v_f2 = __pyx_parallel_temp15; + __pyx_v_D0 = __pyx_parallel_temp14; + __pyx_v_A2 = __pyx_parallel_temp15; __pyx_v_C0 = __pyx_parallel_temp16; - __pyx_v_A0 = __pyx_parallel_temp17; - __pyx_v_D2 = __pyx_parallel_temp18; + __pyx_v_B0 = __pyx_parallel_temp17; + __pyx_v_C1 = __pyx_parallel_temp18; switch (__pyx_parallel_why) { case 3: goto __pyx_L4_return; case 4: @@ -4754,7 +4754,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON __pyx_t_3 = __pyx_v_size; if (1 == 0) abort(); { - float __pyx_parallel_temp0 = __PYX_NAN(); + int __pyx_parallel_temp0 = 0xbad0bad0; float __pyx_parallel_temp1 = __PYX_NAN(); float __pyx_parallel_temp2 = __PYX_NAN(); float __pyx_parallel_temp3 = __PYX_NAN(); @@ -4764,10 +4764,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON int __pyx_parallel_temp7 = 0xbad0bad0; float __pyx_parallel_temp8 = __PYX_NAN(); float __pyx_parallel_temp9 = __PYX_NAN(); - float __pyx_parallel_temp10 = __PYX_NAN(); - int __pyx_parallel_temp11 = 0xbad0bad0; + int __pyx_parallel_temp10 = 0xbad0bad0; + float __pyx_parallel_temp11 = __PYX_NAN(); float __pyx_parallel_temp12 = __PYX_NAN(); - int __pyx_parallel_temp13 = 0xbad0bad0; + float __pyx_parallel_temp13 = __PYX_NAN(); float __pyx_parallel_temp14 = __PYX_NAN(); float __pyx_parallel_temp15 = __PYX_NAN(); float __pyx_parallel_temp16 = __PYX_NAN(); @@ -4787,7 +4787,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_40, __pyx_t_72, __pyx_t_29, __pyx_t_56, __pyx_t_64, __pyx_t_30, __pyx_t_33, __pyx_t_70, __pyx_t_20, __pyx_t_22, __pyx_t_65, __pyx_t_32, __pyx_t_46, __pyx_t_58, __pyx_t_21, __pyx_t_59, __pyx_t_39, __pyx_t_43, __pyx_t_41, __pyx_t_9, __pyx_t_47, __pyx_t_51, __pyx_t_17, __pyx_t_73, __pyx_t_62, __pyx_t_23, __pyx_t_69, __pyx_t_68, __pyx_t_67, __pyx_t_53, __pyx_t_38, __pyx_t_45, __pyx_t_16, __pyx_t_48, __pyx_t_27, __pyx_t_24, __pyx_t_61, __pyx_t_37, __pyx_t_63, __pyx_t_74, __pyx_t_25, __pyx_t_55, __pyx_t_35, __pyx_t_36, __pyx_t_44, __pyx_t_50, __pyx_t_19, __pyx_t_52, __pyx_t_57, __pyx_t_54, __pyx_t_42, __pyx_t_31, __pyx_t_60, __pyx_t_71, __pyx_t_18, __pyx_t_26, __pyx_t_28, __pyx_t_66, __pyx_t_49) firstprivate(__pyx_t_6, __pyx_t_1, __pyx_t_5, __pyx_t_4, __pyx_t_2) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_30, __pyx_t_9, __pyx_t_32, __pyx_t_16, __pyx_t_72, __pyx_t_24, __pyx_t_53, __pyx_t_61, __pyx_t_42, __pyx_t_34, __pyx_t_59, __pyx_t_47, __pyx_t_37, __pyx_t_70, __pyx_t_26, __pyx_t_56, __pyx_t_48, __pyx_t_64, __pyx_t_67, __pyx_t_36, __pyx_t_52, __pyx_t_69, __pyx_t_65, __pyx_t_60, __pyx_t_28, __pyx_t_55, __pyx_t_66, __pyx_t_44, __pyx_t_29, __pyx_t_27, __pyx_t_68, __pyx_t_25, __pyx_t_51, __pyx_t_49, __pyx_t_39, __pyx_t_33, __pyx_t_40, __pyx_t_19, __pyx_t_22, __pyx_t_62, __pyx_t_18, __pyx_t_74, __pyx_t_54, __pyx_t_20, __pyx_t_31, __pyx_t_45, __pyx_t_17, __pyx_t_58, __pyx_t_21, __pyx_t_38, __pyx_t_35, __pyx_t_41, __pyx_t_23, __pyx_t_73, __pyx_t_50, __pyx_t_46, __pyx_t_63, __pyx_t_71, __pyx_t_57, __pyx_t_43) firstprivate(__pyx_t_5, __pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_1) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4797,31 +4797,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_C2) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_D2) lastprivate(__pyx_v_f1) lastprivate(__pyx_v_p2) lastprivate(__pyx_v_A1) lastprivate(__pyx_v_C0) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_C1) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_B0) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_delta2) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_A0) schedule(static) + #pragma omp for lastprivate(__pyx_v_p2) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_delta2) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_f1) lastprivate(__pyx_v_D2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_C0) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_A1) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_C2) lastprivate(__pyx_v_A0) lastprivate(__pyx_v_B0) lastprivate(__pyx_v_C1) schedule(static) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_delta1 = ((float)__PYX_NAN()); - __pyx_v_D1 = ((float)__PYX_NAN()); - __pyx_v_D0 = ((float)__PYX_NAN()); - __pyx_v_C2 = ((float)__PYX_NAN()); + __pyx_v_p2 = ((int)0xbad0bad0); + __pyx_v_B1 = ((float)__PYX_NAN()); + __pyx_v_delta2 = ((float)__PYX_NAN()); + __pyx_v_A2 = ((float)__PYX_NAN()); __pyx_v_B2 = ((float)__PYX_NAN()); - __pyx_v_D2 = ((float)__PYX_NAN()); __pyx_v_f1 = ((float)__PYX_NAN()); - __pyx_v_p2 = ((int)0xbad0bad0); - __pyx_v_A1 = ((float)__PYX_NAN()); - __pyx_v_C0 = ((float)__PYX_NAN()); - __pyx_v_f2 = ((float)__PYX_NAN()); + __pyx_v_D2 = ((float)__PYX_NAN()); __pyx_v_p1 = ((int)0xbad0bad0); - __pyx_v_C1 = ((float)__PYX_NAN()); - __pyx_v_B0 = ((float)__PYX_NAN()); - __pyx_v_A2 = ((float)__PYX_NAN()); - __pyx_v_delta2 = ((float)__PYX_NAN()); - __pyx_v_B1 = ((float)__PYX_NAN()); + __pyx_v_f2 = ((float)__PYX_NAN()); + __pyx_v_C0 = ((float)__PYX_NAN()); + __pyx_v_A1 = ((float)__PYX_NAN()); + __pyx_v_D1 = ((float)__PYX_NAN()); + __pyx_v_delta1 = ((float)__PYX_NAN()); + __pyx_v_D0 = ((float)__PYX_NAN()); + __pyx_v_C2 = ((float)__PYX_NAN()); __pyx_v_A0 = ((float)__PYX_NAN()); + __pyx_v_B0 = ((float)__PYX_NAN()); + __pyx_v_C1 = ((float)__PYX_NAN()); /* "pyFAI/ext/bilinear.pyx":76 * @@ -5474,25 +5474,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON #pragma omp critical(__pyx_parallel_lastprivates1) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_delta1; - __pyx_parallel_temp1 = __pyx_v_D1; - __pyx_parallel_temp2 = __pyx_v_D0; - __pyx_parallel_temp3 = __pyx_v_C2; + __pyx_parallel_temp0 = __pyx_v_p2; + __pyx_parallel_temp1 = __pyx_v_B1; + __pyx_parallel_temp2 = __pyx_v_delta2; + __pyx_parallel_temp3 = __pyx_v_A2; __pyx_parallel_temp4 = __pyx_v_B2; - __pyx_parallel_temp5 = __pyx_v_D2; - __pyx_parallel_temp6 = __pyx_v_f1; - __pyx_parallel_temp7 = __pyx_v_p2; - __pyx_parallel_temp8 = __pyx_v_A1; + __pyx_parallel_temp5 = __pyx_v_f1; + __pyx_parallel_temp6 = __pyx_v_D2; + __pyx_parallel_temp7 = __pyx_v_p1; + __pyx_parallel_temp8 = __pyx_v_f2; __pyx_parallel_temp9 = __pyx_v_C0; - __pyx_parallel_temp10 = __pyx_v_f2; - __pyx_parallel_temp11 = __pyx_v_p1; - __pyx_parallel_temp12 = __pyx_v_C1; - __pyx_parallel_temp13 = __pyx_v_i; - __pyx_parallel_temp14 = __pyx_v_B0; - __pyx_parallel_temp15 = __pyx_v_A2; - __pyx_parallel_temp16 = __pyx_v_delta2; - __pyx_parallel_temp17 = __pyx_v_B1; - __pyx_parallel_temp18 = __pyx_v_A0; + __pyx_parallel_temp10 = __pyx_v_i; + __pyx_parallel_temp11 = __pyx_v_A1; + __pyx_parallel_temp12 = __pyx_v_D1; + __pyx_parallel_temp13 = __pyx_v_delta1; + __pyx_parallel_temp14 = __pyx_v_D0; + __pyx_parallel_temp15 = __pyx_v_C2; + __pyx_parallel_temp16 = __pyx_v_A0; + __pyx_parallel_temp17 = __pyx_v_B0; + __pyx_parallel_temp18 = __pyx_v_C1; } __pyx_L39:; #ifdef _OPENMP @@ -5509,16 +5509,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON #endif #endif /* _OPENMP */ /* Clean up any temporaries */ - __Pyx_XDECREF(__pyx_t_6); - __pyx_t_6 = NULL; - __Pyx_XDECREF(__pyx_t_1); - __pyx_t_1 = NULL; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = NULL; - __Pyx_XDECREF(__pyx_t_4); - __pyx_t_4 = NULL; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = NULL; + __Pyx_XDECREF(__pyx_t_4); + __pyx_t_4 = NULL; + __Pyx_XDECREF(__pyx_t_6); + __pyx_t_6 = NULL; + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -5532,25 +5532,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_delta1 = __pyx_parallel_temp0; - __pyx_v_D1 = __pyx_parallel_temp1; - __pyx_v_D0 = __pyx_parallel_temp2; - __pyx_v_C2 = __pyx_parallel_temp3; + __pyx_v_p2 = __pyx_parallel_temp0; + __pyx_v_B1 = __pyx_parallel_temp1; + __pyx_v_delta2 = __pyx_parallel_temp2; + __pyx_v_A2 = __pyx_parallel_temp3; __pyx_v_B2 = __pyx_parallel_temp4; - __pyx_v_D2 = __pyx_parallel_temp5; - __pyx_v_f1 = __pyx_parallel_temp6; - __pyx_v_p2 = __pyx_parallel_temp7; - __pyx_v_A1 = __pyx_parallel_temp8; + __pyx_v_f1 = __pyx_parallel_temp5; + __pyx_v_D2 = __pyx_parallel_temp6; + __pyx_v_p1 = __pyx_parallel_temp7; + __pyx_v_f2 = __pyx_parallel_temp8; __pyx_v_C0 = __pyx_parallel_temp9; - __pyx_v_f2 = __pyx_parallel_temp10; - __pyx_v_p1 = __pyx_parallel_temp11; - __pyx_v_C1 = __pyx_parallel_temp12; - __pyx_v_i = __pyx_parallel_temp13; - __pyx_v_B0 = __pyx_parallel_temp14; - __pyx_v_A2 = __pyx_parallel_temp15; - __pyx_v_delta2 = __pyx_parallel_temp16; - __pyx_v_B1 = __pyx_parallel_temp17; - __pyx_v_A0 = __pyx_parallel_temp18; + __pyx_v_i = __pyx_parallel_temp10; + __pyx_v_A1 = __pyx_parallel_temp11; + __pyx_v_D1 = __pyx_parallel_temp12; + __pyx_v_delta1 = __pyx_parallel_temp13; + __pyx_v_D0 = __pyx_parallel_temp14; + __pyx_v_C2 = __pyx_parallel_temp15; + __pyx_v_A0 = __pyx_parallel_temp16; + __pyx_v_B0 = __pyx_parallel_temp17; + __pyx_v_C1 = __pyx_parallel_temp18; switch (__pyx_parallel_why) { case 3: goto __pyx_L4_return; case 4: @@ -5716,7 +5716,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_3convert_corner_2D_to_4D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_8bilinear_2convert_corner_2D_to_4D[] = "\n Convert 2 (or 3) arrays of corner position into a 4D array of pixel corner coordinates\n\n @param ndim: 2d or 3D output\n @param d1: 2D position in dim1 (shape +1)\n @param d2: 2D position in dim2 (shape +1)\n @param d3: 2D position in dim3 (z) (shape +1)\n @return: pos 4D array with position of pixels corners\n "; +static char __pyx_doc_5pyFAI_3ext_8bilinear_2convert_corner_2D_to_4D[] = "convert_corner_2D_to_4D(signatures, args, kwargs, defaults)\n\n Convert 2 (or 3) arrays of corner position into a 4D array of pixel corner coordinates\n\n :param ndim: 2d or 3D output\n :param d1: 2D position in dim1 (shape +1)\n :param d2: 2D position in dim2 (shape +1)\n :param d3: 2D position in dim3 (z) (shape +1)\n :return: pos 4D array with position of pixels corners\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_8bilinear_3convert_corner_2D_to_4D = {"convert_corner_2D_to_4D", (PyCFunction)__pyx_pw_5pyFAI_3ext_8bilinear_3convert_corner_2D_to_4D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_8bilinear_2convert_corner_2D_to_4D}; static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_3convert_corner_2D_to_4D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_signatures = 0; @@ -6744,7 +6744,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_10convert_corner_2D_to_4D(CYTHON if (__pyx_t_9 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_35, __pyx_t_42, __pyx_t_56, __pyx_t_17, __pyx_t_16, __pyx_t_14, __pyx_t_24, __pyx_t_27, __pyx_t_53, __pyx_t_37, __pyx_t_39, __pyx_t_32, __pyx_t_21, __pyx_t_51, __pyx_t_47, __pyx_t_34, __pyx_t_44, __pyx_t_43, __pyx_t_15, __pyx_t_54, __pyx_t_50, __pyx_t_31, __pyx_t_36, __pyx_t_52, __pyx_t_38, __pyx_t_58, __pyx_t_55, __pyx_t_22, __pyx_t_30, __pyx_t_29, __pyx_t_11, __pyx_t_45, __pyx_t_40, __pyx_t_10, __pyx_t_49, __pyx_t_25, __pyx_t_33, __pyx_t_12, __pyx_t_19, __pyx_t_23, __pyx_t_57, __pyx_t_48, __pyx_t_28, __pyx_t_13, __pyx_t_18, __pyx_t_26, __pyx_t_20, __pyx_t_41, __pyx_t_59, __pyx_t_46) + #pragma omp parallel private(__pyx_t_32, __pyx_t_17, __pyx_t_47, __pyx_t_43, __pyx_t_56, __pyx_t_22, __pyx_t_31, __pyx_t_36, __pyx_t_42, __pyx_t_52, __pyx_t_48, __pyx_t_55, __pyx_t_16, __pyx_t_59, __pyx_t_24, __pyx_t_30, __pyx_t_39, __pyx_t_58, __pyx_t_13, __pyx_t_51, __pyx_t_44, __pyx_t_34, __pyx_t_40, __pyx_t_28, __pyx_t_45, __pyx_t_25, __pyx_t_35, __pyx_t_33, __pyx_t_14, __pyx_t_19, __pyx_t_57, __pyx_t_38, __pyx_t_18, __pyx_t_12, __pyx_t_26, __pyx_t_54, __pyx_t_20, __pyx_t_41, __pyx_t_29, __pyx_t_11, __pyx_t_21, __pyx_t_46, __pyx_t_49, __pyx_t_23, __pyx_t_10, __pyx_t_15, __pyx_t_50, __pyx_t_37, __pyx_t_27, __pyx_t_53) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -6994,7 +6994,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_10convert_corner_2D_to_4D(CYTHON if (__pyx_t_7 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_68, __pyx_t_80, __pyx_t_70, __pyx_t_64, __pyx_t_67, __pyx_t_83, __pyx_t_82, __pyx_t_75, __pyx_t_65, __pyx_t_77, __pyx_t_79, __pyx_t_76, __pyx_t_81, __pyx_t_84, __pyx_t_74, __pyx_t_73, __pyx_t_63, __pyx_t_11, __pyx_t_78, __pyx_t_10, __pyx_t_85, __pyx_t_72, __pyx_t_71, __pyx_t_62, __pyx_t_69, __pyx_t_66) + #pragma omp parallel private(__pyx_t_79, __pyx_t_68, __pyx_t_80, __pyx_t_70, __pyx_t_62, __pyx_t_64, __pyx_t_73, __pyx_t_65, __pyx_t_84, __pyx_t_69, __pyx_t_78, __pyx_t_77, __pyx_t_85, __pyx_t_74, __pyx_t_63, __pyx_t_72, __pyx_t_81, __pyx_t_66, __pyx_t_11, __pyx_t_82, __pyx_t_10, __pyx_t_71, __pyx_t_76, __pyx_t_67, __pyx_t_83, __pyx_t_75) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7541,7 +7541,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_12convert_corner_2D_to_4D(CYTHON if (__pyx_t_9 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_35, __pyx_t_42, __pyx_t_56, __pyx_t_17, __pyx_t_16, __pyx_t_14, __pyx_t_24, __pyx_t_27, __pyx_t_53, __pyx_t_37, __pyx_t_39, __pyx_t_32, __pyx_t_21, __pyx_t_51, __pyx_t_47, __pyx_t_34, __pyx_t_44, __pyx_t_43, __pyx_t_15, __pyx_t_54, __pyx_t_50, __pyx_t_31, __pyx_t_36, __pyx_t_52, __pyx_t_38, __pyx_t_58, __pyx_t_55, __pyx_t_22, __pyx_t_30, __pyx_t_29, __pyx_t_11, __pyx_t_45, __pyx_t_40, __pyx_t_10, __pyx_t_49, __pyx_t_25, __pyx_t_33, __pyx_t_12, __pyx_t_19, __pyx_t_23, __pyx_t_57, __pyx_t_48, __pyx_t_28, __pyx_t_13, __pyx_t_18, __pyx_t_26, __pyx_t_20, __pyx_t_41, __pyx_t_59, __pyx_t_46) + #pragma omp parallel private(__pyx_t_32, __pyx_t_17, __pyx_t_47, __pyx_t_43, __pyx_t_56, __pyx_t_22, __pyx_t_31, __pyx_t_36, __pyx_t_42, __pyx_t_52, __pyx_t_48, __pyx_t_55, __pyx_t_16, __pyx_t_59, __pyx_t_24, __pyx_t_30, __pyx_t_39, __pyx_t_58, __pyx_t_13, __pyx_t_51, __pyx_t_44, __pyx_t_34, __pyx_t_40, __pyx_t_28, __pyx_t_45, __pyx_t_25, __pyx_t_35, __pyx_t_33, __pyx_t_14, __pyx_t_19, __pyx_t_57, __pyx_t_38, __pyx_t_18, __pyx_t_12, __pyx_t_26, __pyx_t_54, __pyx_t_20, __pyx_t_41, __pyx_t_29, __pyx_t_11, __pyx_t_21, __pyx_t_46, __pyx_t_49, __pyx_t_23, __pyx_t_10, __pyx_t_15, __pyx_t_50, __pyx_t_37, __pyx_t_27, __pyx_t_53) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7791,7 +7791,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_12convert_corner_2D_to_4D(CYTHON if (__pyx_t_7 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_68, __pyx_t_80, __pyx_t_70, __pyx_t_64, __pyx_t_67, __pyx_t_83, __pyx_t_82, __pyx_t_75, __pyx_t_65, __pyx_t_77, __pyx_t_79, __pyx_t_76, __pyx_t_81, __pyx_t_84, __pyx_t_74, __pyx_t_73, __pyx_t_63, __pyx_t_11, __pyx_t_78, __pyx_t_10, __pyx_t_85, __pyx_t_72, __pyx_t_71, __pyx_t_62, __pyx_t_69, __pyx_t_66) + #pragma omp parallel private(__pyx_t_79, __pyx_t_68, __pyx_t_80, __pyx_t_70, __pyx_t_62, __pyx_t_64, __pyx_t_73, __pyx_t_65, __pyx_t_84, __pyx_t_69, __pyx_t_78, __pyx_t_77, __pyx_t_85, __pyx_t_74, __pyx_t_63, __pyx_t_72, __pyx_t_81, __pyx_t_66, __pyx_t_11, __pyx_t_82, __pyx_t_10, __pyx_t_71, __pyx_t_76, __pyx_t_67, __pyx_t_83, __pyx_t_75) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7954,7 +7954,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_12convert_corner_2D_to_4D(CYTHON return __pyx_r; } -/* "bilinear.pxi":39 +/* "pyFAI/ext/bilinear.pxi":39 * cdef size_t c_local_maxi(self, size_t) nogil * * def __cinit__(self, data not None): # <<<<<<<<<<<<<< @@ -8038,7 +8038,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "bilinear.pxi":40 + /* "pyFAI/ext/bilinear.pxi":40 * * def __cinit__(self, data not None): * assert data.ndim == 2 # <<<<<<<<<<<<<< @@ -8060,7 +8060,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 } #endif - /* "bilinear.pxi":41 + /* "pyFAI/ext/bilinear.pxi":41 * def __cinit__(self, data not None): * assert data.ndim == 2 * self.height = data.shape[0] # <<<<<<<<<<<<<< @@ -8076,7 +8076,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_self->height = __pyx_t_4; - /* "bilinear.pxi":42 + /* "pyFAI/ext/bilinear.pxi":42 * assert data.ndim == 2 * self.height = data.shape[0] * self.width = data.shape[1] # <<<<<<<<<<<<<< @@ -8092,7 +8092,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->width = __pyx_t_4; - /* "bilinear.pxi":43 + /* "pyFAI/ext/bilinear.pxi":43 * self.height = data.shape[0] * self.width = data.shape[1] * self.maxi = data.max() # <<<<<<<<<<<<<< @@ -8123,7 +8123,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->maxi = __pyx_t_6; - /* "bilinear.pxi":44 + /* "pyFAI/ext/bilinear.pxi":44 * self.width = data.shape[1] * self.maxi = data.max() * self.mini = data.min() # <<<<<<<<<<<<<< @@ -8154,7 +8154,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->mini = __pyx_t_6; - /* "bilinear.pxi":45 + /* "pyFAI/ext/bilinear.pxi":45 * self.maxi = data.max() * self.mini = data.min() * self.data = numpy.ascontiguousarray(data, dtype=numpy.float32) # <<<<<<<<<<<<<< @@ -8193,7 +8193,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "bilinear.pxi":39 + /* "pyFAI/ext/bilinear.pxi":39 * cdef size_t c_local_maxi(self, size_t) nogil * * def __cinit__(self, data not None): # <<<<<<<<<<<<<< @@ -8218,7 +8218,7 @@ static int __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear___cinit__(struct __pyx_obj_5 return __pyx_r; } -/* "bilinear.pxi":47 +/* "pyFAI/ext/bilinear.pxi":47 * self.data = numpy.ascontiguousarray(data, dtype=numpy.float32) * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8245,7 +8245,7 @@ static void __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_2__dealloc__(struct __pyx_o int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "bilinear.pxi":48 + /* "pyFAI/ext/bilinear.pxi":48 * * def __dealloc__(self): * self.data = None # <<<<<<<<<<<<<< @@ -8259,7 +8259,7 @@ static void __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_2__dealloc__(struct __pyx_o __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "bilinear.pxi":47 + /* "pyFAI/ext/bilinear.pxi":47 * self.data = numpy.ascontiguousarray(data, dtype=numpy.float32) * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -8276,7 +8276,7 @@ static void __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_2__dealloc__(struct __pyx_o __Pyx_RefNannyFinishContext(); } -/* "bilinear.pxi":52 +/* "pyFAI/ext/bilinear.pxi":52 * @cython.boundscheck(False) * @cython.wraparound(False) * def f_cy(self, x): # <<<<<<<<<<<<<< @@ -8286,7 +8286,7 @@ static void __pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_2__dealloc__(struct __pyx_o /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_5f_cy(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy[] = "\n Function f((y,x)) where f is a continuous function (y,x) are pixel coordinates\n @param x: 2-tuple of float\n @return: Interpolated signal from the image (negative for minimizer)\n\n "; +static char __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy[] = "Bilinear.f_cy(self, x)\n\n Function f((y,x)) where f is a continuous function (y,x) are pixel coordinates\n @param x: 2-tuple of float\n @return: Interpolated signal from the image (negative for minimizer)\n\n "; static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_5f_cy(PyObject *__pyx_v_self, PyObject *__pyx_v_x) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -8339,7 +8339,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj int __pyx_clineno = 0; __Pyx_RefNannySetupContext("f_cy", 0); - /* "bilinear.pxi":60 + /* "pyFAI/ext/bilinear.pxi":60 * """ * cdef: * float d0 = x[0] # <<<<<<<<<<<<<< @@ -8352,7 +8352,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_d0 = __pyx_t_2; - /* "bilinear.pxi":61 + /* "pyFAI/ext/bilinear.pxi":61 * cdef: * float d0 = x[0] * float d1 = x[1] # <<<<<<<<<<<<<< @@ -8365,7 +8365,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_d1 = __pyx_t_2; - /* "bilinear.pxi":64 + /* "pyFAI/ext/bilinear.pxi":64 * int i0, i1, j0, j1 * float x0, x1, y0, y1, res * with nogil: # <<<<<<<<<<<<<< @@ -8379,7 +8379,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj #endif /*try:*/ { - /* "bilinear.pxi":65 + /* "pyFAI/ext/bilinear.pxi":65 * float x0, x1, y0, y1, res * with nogil: * x0 = floor(d0) # <<<<<<<<<<<<<< @@ -8388,7 +8388,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_x0 = floor(__pyx_v_d0); - /* "bilinear.pxi":66 + /* "pyFAI/ext/bilinear.pxi":66 * with nogil: * x0 = floor(d0) * x1 = ceil(d0) # <<<<<<<<<<<<<< @@ -8397,7 +8397,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_x1 = ceil(__pyx_v_d0); - /* "bilinear.pxi":67 + /* "pyFAI/ext/bilinear.pxi":67 * x0 = floor(d0) * x1 = ceil(d0) * y0 = floor(d1) # <<<<<<<<<<<<<< @@ -8406,7 +8406,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_y0 = floor(__pyx_v_d1); - /* "bilinear.pxi":68 + /* "pyFAI/ext/bilinear.pxi":68 * x1 = ceil(d0) * y0 = floor(d1) * y1 = ceil(d1) # <<<<<<<<<<<<<< @@ -8415,7 +8415,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_y1 = ceil(__pyx_v_d1); - /* "bilinear.pxi":69 + /* "pyFAI/ext/bilinear.pxi":69 * y0 = floor(d1) * y1 = ceil(d1) * i0 = < int > x0 # <<<<<<<<<<<<<< @@ -8424,7 +8424,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_i0 = ((int)__pyx_v_x0); - /* "bilinear.pxi":70 + /* "pyFAI/ext/bilinear.pxi":70 * y1 = ceil(d1) * i0 = < int > x0 * i1 = < int > x1 # <<<<<<<<<<<<<< @@ -8433,7 +8433,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_i1 = ((int)__pyx_v_x1); - /* "bilinear.pxi":71 + /* "pyFAI/ext/bilinear.pxi":71 * i0 = < int > x0 * i1 = < int > x1 * j0 = < int > y0 # <<<<<<<<<<<<<< @@ -8442,7 +8442,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_j0 = ((int)__pyx_v_y0); - /* "bilinear.pxi":72 + /* "pyFAI/ext/bilinear.pxi":72 * i1 = < int > x1 * j0 = < int > y0 * j1 = < int > y1 # <<<<<<<<<<<<<< @@ -8451,7 +8451,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj */ __pyx_v_j1 = ((int)__pyx_v_y1); - /* "bilinear.pxi":73 + /* "pyFAI/ext/bilinear.pxi":73 * j0 = < int > y0 * j1 = < int > y1 * if d0 < 0: # <<<<<<<<<<<<<< @@ -8461,7 +8461,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_3 = ((__pyx_v_d0 < 0.0) != 0); if (__pyx_t_3) { - /* "bilinear.pxi":74 + /* "pyFAI/ext/bilinear.pxi":74 * j1 = < int > y1 * if d0 < 0: * res = self.mini + d0 # <<<<<<<<<<<<<< @@ -8472,7 +8472,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj goto __pyx_L6; } - /* "bilinear.pxi":75 + /* "pyFAI/ext/bilinear.pxi":75 * if d0 < 0: * res = self.mini + d0 * elif d1 < 0: # <<<<<<<<<<<<<< @@ -8482,7 +8482,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_3 = ((__pyx_v_d1 < 0.0) != 0); if (__pyx_t_3) { - /* "bilinear.pxi":76 + /* "pyFAI/ext/bilinear.pxi":76 * res = self.mini + d0 * elif d1 < 0: * res = self.mini + d1 # <<<<<<<<<<<<<< @@ -8493,7 +8493,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj goto __pyx_L6; } - /* "bilinear.pxi":77 + /* "pyFAI/ext/bilinear.pxi":77 * elif d1 < 0: * res = self.mini + d1 * elif d0 > (self.height - 1): # <<<<<<<<<<<<<< @@ -8503,7 +8503,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_3 = ((__pyx_v_d0 > (__pyx_v_self->height - 1)) != 0); if (__pyx_t_3) { - /* "bilinear.pxi":78 + /* "pyFAI/ext/bilinear.pxi":78 * res = self.mini + d1 * elif d0 > (self.height - 1): * res = self.mini - d0 + self.height - 1 # <<<<<<<<<<<<<< @@ -8514,7 +8514,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj goto __pyx_L6; } - /* "bilinear.pxi":79 + /* "pyFAI/ext/bilinear.pxi":79 * elif d0 > (self.height - 1): * res = self.mini - d0 + self.height - 1 * elif d1 > self.width - 1: # <<<<<<<<<<<<<< @@ -8524,7 +8524,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_3 = ((__pyx_v_d1 > (__pyx_v_self->width - 1)) != 0); if (__pyx_t_3) { - /* "bilinear.pxi":80 + /* "pyFAI/ext/bilinear.pxi":80 * res = self.mini - d0 + self.height - 1 * elif d1 > self.width - 1: * res = self.mini - d1 + self.width - 1 # <<<<<<<<<<<<<< @@ -8535,7 +8535,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj goto __pyx_L6; } - /* "bilinear.pxi":81 + /* "pyFAI/ext/bilinear.pxi":81 * elif d1 > self.width - 1: * res = self.mini - d1 + self.width - 1 * elif (i0 == i1) and (j0 == j1): # <<<<<<<<<<<<<< @@ -8553,7 +8553,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_L7_bool_binop_done:; if (__pyx_t_3) { - /* "bilinear.pxi":82 + /* "pyFAI/ext/bilinear.pxi":82 * res = self.mini - d1 + self.width - 1 * elif (i0 == i1) and (j0 == j1): * res = self.data[i0, j0] # <<<<<<<<<<<<<< @@ -8567,7 +8567,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj goto __pyx_L6; } - /* "bilinear.pxi":83 + /* "pyFAI/ext/bilinear.pxi":83 * elif (i0 == i1) and (j0 == j1): * res = self.data[i0, j0] * elif i0 == i1: # <<<<<<<<<<<<<< @@ -8577,7 +8577,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_3 = ((__pyx_v_i0 == __pyx_v_i1) != 0); if (__pyx_t_3) { - /* "bilinear.pxi":84 + /* "pyFAI/ext/bilinear.pxi":84 * res = self.data[i0, j0] * elif i0 == i1: * res = (self.data[i0, j0] * (y1 - d1)) + (self.data[i0, j1] * (d1 - y0)) # <<<<<<<<<<<<<< @@ -8594,7 +8594,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj goto __pyx_L6; } - /* "bilinear.pxi":85 + /* "pyFAI/ext/bilinear.pxi":85 * elif i0 == i1: * res = (self.data[i0, j0] * (y1 - d1)) + (self.data[i0, j1] * (d1 - y0)) * elif j0 == j1: # <<<<<<<<<<<<<< @@ -8604,7 +8604,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_3 = ((__pyx_v_j0 == __pyx_v_j1) != 0); if (__pyx_t_3) { - /* "bilinear.pxi":86 + /* "pyFAI/ext/bilinear.pxi":86 * res = (self.data[i0, j0] * (y1 - d1)) + (self.data[i0, j1] * (d1 - y0)) * elif j0 == j1: * res = (self.data[i0, j0] * (x1 - d0)) + (self.data[i1, j0] * (d0 - x0)) # <<<<<<<<<<<<<< @@ -8622,7 +8622,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj } /*else*/ { - /* "bilinear.pxi":88 + /* "pyFAI/ext/bilinear.pxi":88 * res = (self.data[i0, j0] * (x1 - d0)) + (self.data[i1, j0] * (d0 - x0)) * else: * res = (self.data[i0, j0] * (x1 - d0) * (y1 - d1)) \ # <<<<<<<<<<<<<< @@ -8633,7 +8633,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_15 = __pyx_v_i0; __pyx_t_16 = __pyx_v_j0; - /* "bilinear.pxi":89 + /* "pyFAI/ext/bilinear.pxi":89 * else: * res = (self.data[i0, j0] * (x1 - d0) * (y1 - d1)) \ * + (self.data[i1, j0] * (d0 - x0) * (y1 - d1)) \ # <<<<<<<<<<<<<< @@ -8644,7 +8644,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_17 = __pyx_v_i1; __pyx_t_18 = __pyx_v_j0; - /* "bilinear.pxi":90 + /* "pyFAI/ext/bilinear.pxi":90 * res = (self.data[i0, j0] * (x1 - d0) * (y1 - d1)) \ * + (self.data[i1, j0] * (d0 - x0) * (y1 - d1)) \ * + (self.data[i0, j1] * (x1 - d0) * (d1 - y0)) \ # <<<<<<<<<<<<<< @@ -8655,7 +8655,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_19 = __pyx_v_i0; __pyx_t_20 = __pyx_v_j1; - /* "bilinear.pxi":91 + /* "pyFAI/ext/bilinear.pxi":91 * + (self.data[i1, j0] * (d0 - x0) * (y1 - d1)) \ * + (self.data[i0, j1] * (x1 - d0) * (d1 - y0)) \ * + (self.data[i1, j1] * (d0 - x0) * (d1 - y0)) # <<<<<<<<<<<<<< @@ -8670,7 +8670,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_L6:; } - /* "bilinear.pxi":64 + /* "pyFAI/ext/bilinear.pxi":64 * int i0, i1, j0, j1 * float x0, x1, y0, y1, res * with nogil: # <<<<<<<<<<<<<< @@ -8694,7 +8694,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj } } - /* "bilinear.pxi":92 + /* "pyFAI/ext/bilinear.pxi":92 * + (self.data[i0, j1] * (x1 - d0) * (d1 - y0)) \ * + (self.data[i1, j1] * (d0 - x0) * (d1 - y0)) * return - res # <<<<<<<<<<<<<< @@ -8708,7 +8708,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj __pyx_t_1 = 0; goto __pyx_L0; - /* "bilinear.pxi":52 + /* "pyFAI/ext/bilinear.pxi":52 * @cython.boundscheck(False) * @cython.wraparound(False) * def f_cy(self, x): # <<<<<<<<<<<<<< @@ -8727,7 +8727,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj return __pyx_r; } -/* "bilinear.pxi":97 +/* "pyFAI/ext/bilinear.pxi":97 * @cython.wraparound(False) * @cython.cdivision(True) * def local_maxi(self, x): # <<<<<<<<<<<<<< @@ -8737,7 +8737,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy(struct __pyx_obj /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_7local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi[] = "\n Return the local maximum ... with sub-pixel refinement\n\n @param x: 2-tuple of integers\n @param w: half with of the window: 1 or 2 are advised\n @return: 2-tuple of float with the nearest local maximum\n\n\n Sub-pixel refinement:\n Second order Taylor expansion of the function; first derivative is null\n delta = x-i = -Inverse[Hessian].gradient\n\n if Hessian is singular or |delta|>1: use a center of mass.\n\n "; +static char __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi[] = "Bilinear.local_maxi(self, x)\n\n Return the local maximum ... with sub-pixel refinement\n\n @param x: 2-tuple of integers\n @param w: half with of the window: 1 or 2 are advised\n @return: 2-tuple of float with the nearest local maximum\n\n\n Sub-pixel refinement:\n Second order Taylor expansion of the function; first derivative is null\n delta = x-i = -Inverse[Hessian].gradient\n\n if Hessian is singular or |delta|>1: use a center of mass.\n\n "; static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_7local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_v_x) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -8811,7 +8811,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p int __pyx_clineno = 0; __Pyx_RefNannySetupContext("local_maxi", 0); - /* "bilinear.pxi":116 + /* "pyFAI/ext/bilinear.pxi":116 * int res, current0, current1 * int i0, i1 * float tmp, sum0 = 0, sum1 = 0, sum = 0 # <<<<<<<<<<<<<< @@ -8822,7 +8822,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_v_sum1 = 0.0; __pyx_v_sum = 0.0; - /* "bilinear.pxi":120 + /* "pyFAI/ext/bilinear.pxi":120 * float d00, d11, d01, denom, delta0, delta1 * * res = self.c_local_maxi(round(x[0]) * self.width + round(x[1])) # <<<<<<<<<<<<<< @@ -8863,7 +8863,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_res = ((struct __pyx_vtabstruct_5pyFAI_3ext_8bilinear_Bilinear *)__pyx_v_self->__pyx_vtab)->c_local_maxi(__pyx_v_self, __pyx_t_4); - /* "bilinear.pxi":122 + /* "pyFAI/ext/bilinear.pxi":122 * res = self.c_local_maxi(round(x[0]) * self.width + round(x[1])) * * current0 = res // self.width # <<<<<<<<<<<<<< @@ -8872,7 +8872,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_current0 = (__pyx_v_res / __pyx_v_self->width); - /* "bilinear.pxi":123 + /* "pyFAI/ext/bilinear.pxi":123 * * current0 = res // self.width * current1 = res % self.width # <<<<<<<<<<<<<< @@ -8881,7 +8881,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_current1 = (__pyx_v_res % __pyx_v_self->width); - /* "bilinear.pxi":124 + /* "pyFAI/ext/bilinear.pxi":124 * current0 = res // self.width * current1 = res % self.width * if (current0 > 0) and (current0 < self.height - 1) and (current1 > 0) and (current1 < self.width - 1): # <<<<<<<<<<<<<< @@ -8911,7 +8911,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_L4_bool_binop_done:; if (__pyx_t_5) { - /* "bilinear.pxi":126 + /* "pyFAI/ext/bilinear.pxi":126 * if (current0 > 0) and (current0 < self.height - 1) and (current1 > 0) and (current1 < self.width - 1): * # Use second order polynomial Taylor expansion * a00 = self.data[current0 - 1, current1 - 1] # <<<<<<<<<<<<<< @@ -8923,7 +8923,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_8 = (__pyx_v_current1 - 1); __pyx_v_a00 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_7 * __pyx_v_self->data.strides[0]) )) + __pyx_t_8)) ))); - /* "bilinear.pxi":127 + /* "pyFAI/ext/bilinear.pxi":127 * # Use second order polynomial Taylor expansion * a00 = self.data[current0 - 1, current1 - 1] * a01 = self.data[current0 - 1, current1 ] # <<<<<<<<<<<<<< @@ -8935,7 +8935,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_10 = __pyx_v_current1; __pyx_v_a01 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_9 * __pyx_v_self->data.strides[0]) )) + __pyx_t_10)) ))); - /* "bilinear.pxi":128 + /* "pyFAI/ext/bilinear.pxi":128 * a00 = self.data[current0 - 1, current1 - 1] * a01 = self.data[current0 - 1, current1 ] * a02 = self.data[current0 - 1, current1 + 1] # <<<<<<<<<<<<<< @@ -8947,7 +8947,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_12 = (__pyx_v_current1 + 1); __pyx_v_a02 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_11 * __pyx_v_self->data.strides[0]) )) + __pyx_t_12)) ))); - /* "bilinear.pxi":129 + /* "pyFAI/ext/bilinear.pxi":129 * a01 = self.data[current0 - 1, current1 ] * a02 = self.data[current0 - 1, current1 + 1] * a10 = self.data[current0 , current1 - 1] # <<<<<<<<<<<<<< @@ -8959,7 +8959,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_14 = (__pyx_v_current1 - 1); __pyx_v_a10 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_13 * __pyx_v_self->data.strides[0]) )) + __pyx_t_14)) ))); - /* "bilinear.pxi":130 + /* "pyFAI/ext/bilinear.pxi":130 * a02 = self.data[current0 - 1, current1 + 1] * a10 = self.data[current0 , current1 - 1] * a11 = self.data[current0 , current1 ] # <<<<<<<<<<<<<< @@ -8971,7 +8971,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_16 = __pyx_v_current1; __pyx_v_a11 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_15 * __pyx_v_self->data.strides[0]) )) + __pyx_t_16)) ))); - /* "bilinear.pxi":131 + /* "pyFAI/ext/bilinear.pxi":131 * a10 = self.data[current0 , current1 - 1] * a11 = self.data[current0 , current1 ] * a12 = self.data[current0 , current1 + 1] # <<<<<<<<<<<<<< @@ -8983,7 +8983,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_18 = (__pyx_v_current1 + 1); __pyx_v_a12 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_17 * __pyx_v_self->data.strides[0]) )) + __pyx_t_18)) ))); - /* "bilinear.pxi":132 + /* "pyFAI/ext/bilinear.pxi":132 * a11 = self.data[current0 , current1 ] * a12 = self.data[current0 , current1 + 1] * a20 = self.data[current0 + 1, current1 - 1] # <<<<<<<<<<<<<< @@ -8995,7 +8995,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_20 = (__pyx_v_current1 - 1); __pyx_v_a20 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_19 * __pyx_v_self->data.strides[0]) )) + __pyx_t_20)) ))); - /* "bilinear.pxi":133 + /* "pyFAI/ext/bilinear.pxi":133 * a12 = self.data[current0 , current1 + 1] * a20 = self.data[current0 + 1, current1 - 1] * a21 = self.data[current0 + 1, current1 ] # <<<<<<<<<<<<<< @@ -9007,7 +9007,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_22 = __pyx_v_current1; __pyx_v_a21 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_21 * __pyx_v_self->data.strides[0]) )) + __pyx_t_22)) ))); - /* "bilinear.pxi":134 + /* "pyFAI/ext/bilinear.pxi":134 * a20 = self.data[current0 + 1, current1 - 1] * a21 = self.data[current0 + 1, current1 ] * a22 = self.data[current0 + 1, current1 - 1] # <<<<<<<<<<<<<< @@ -9019,7 +9019,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_24 = (__pyx_v_current1 - 1); __pyx_v_a22 = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_23 * __pyx_v_self->data.strides[0]) )) + __pyx_t_24)) ))); - /* "bilinear.pxi":135 + /* "pyFAI/ext/bilinear.pxi":135 * a21 = self.data[current0 + 1, current1 ] * a22 = self.data[current0 + 1, current1 - 1] * d00 = a12 - 2.0 * a11 + a10 # <<<<<<<<<<<<<< @@ -9028,7 +9028,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_d00 = ((__pyx_v_a12 - (2.0 * __pyx_v_a11)) + __pyx_v_a10); - /* "bilinear.pxi":136 + /* "pyFAI/ext/bilinear.pxi":136 * a22 = self.data[current0 + 1, current1 - 1] * d00 = a12 - 2.0 * a11 + a10 * d11 = a21 - 2.0 * a11 + a01 # <<<<<<<<<<<<<< @@ -9037,7 +9037,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_d11 = ((__pyx_v_a21 - (2.0 * __pyx_v_a11)) + __pyx_v_a01); - /* "bilinear.pxi":137 + /* "pyFAI/ext/bilinear.pxi":137 * d00 = a12 - 2.0 * a11 + a10 * d11 = a21 - 2.0 * a11 + a01 * d01 = (a00 - a02 - a20 + a22) / 4.0 # <<<<<<<<<<<<<< @@ -9046,7 +9046,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_d01 = ((((__pyx_v_a00 - __pyx_v_a02) - __pyx_v_a20) + __pyx_v_a22) / 4.0); - /* "bilinear.pxi":138 + /* "pyFAI/ext/bilinear.pxi":138 * d11 = a21 - 2.0 * a11 + a01 * d01 = (a00 - a02 - a20 + a22) / 4.0 * denom = 2.0 * (d00 * d11 - d01 * d01) # <<<<<<<<<<<<<< @@ -9055,7 +9055,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_denom = (2.0 * ((__pyx_v_d00 * __pyx_v_d11) - (__pyx_v_d01 * __pyx_v_d01))); - /* "bilinear.pxi":139 + /* "pyFAI/ext/bilinear.pxi":139 * d01 = (a00 - a02 - a20 + a22) / 4.0 * denom = 2.0 * (d00 * d11 - d01 * d01) * if abs(denom) < 1e-10: # <<<<<<<<<<<<<< @@ -9065,7 +9065,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_5 = ((fabsf(__pyx_v_denom) < 1e-10) != 0); if (__pyx_t_5) { - /* "bilinear.pxi":140 + /* "pyFAI/ext/bilinear.pxi":140 * denom = 2.0 * (d00 * d11 - d01 * d01) * if abs(denom) < 1e-10: * logger.debug("Singular determinant, Hessian undefined") # <<<<<<<<<<<<<< @@ -9085,7 +9085,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p } /*else*/ { - /* "bilinear.pxi":142 + /* "pyFAI/ext/bilinear.pxi":142 * logger.debug("Singular determinant, Hessian undefined") * else: * delta0 = ((a12 - a10) * d01 + (a01 - a21) * d11) / denom # <<<<<<<<<<<<<< @@ -9094,7 +9094,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_delta0 = ((((__pyx_v_a12 - __pyx_v_a10) * __pyx_v_d01) + ((__pyx_v_a01 - __pyx_v_a21) * __pyx_v_d11)) / __pyx_v_denom); - /* "bilinear.pxi":143 + /* "pyFAI/ext/bilinear.pxi":143 * else: * delta0 = ((a12 - a10) * d01 + (a01 - a21) * d11) / denom * delta1 = ((a10 - a12) * d00 + (a21 - a01) * d01) / denom # <<<<<<<<<<<<<< @@ -9103,7 +9103,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_delta1 = ((((__pyx_v_a10 - __pyx_v_a12) * __pyx_v_d00) + ((__pyx_v_a21 - __pyx_v_a01) * __pyx_v_d01)) / __pyx_v_denom); - /* "bilinear.pxi":144 + /* "pyFAI/ext/bilinear.pxi":144 * delta0 = ((a12 - a10) * d01 + (a01 - a21) * d11) / denom * delta1 = ((a10 - a12) * d00 + (a21 - a01) * d01) / denom * if abs(delta0) <= 1.0 and abs(delta1) <= 1.0: # <<<<<<<<<<<<<< @@ -9121,7 +9121,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_L10_bool_binop_done:; if (__pyx_t_5) { - /* "bilinear.pxi":146 + /* "pyFAI/ext/bilinear.pxi":146 * if abs(delta0) <= 1.0 and abs(delta1) <= 1.0: * # Result is OK if lower than 0.5. * return (delta0 + float(current0), delta1 + float(current1)) # <<<<<<<<<<<<<< @@ -9147,7 +9147,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p } /*else*/ { - /* "bilinear.pxi":148 + /* "pyFAI/ext/bilinear.pxi":148 * return (delta0 + float(current0), delta1 + float(current1)) * else: * logger.debug("Failed to find root using second order expansion") # <<<<<<<<<<<<<< @@ -9167,7 +9167,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p } __pyx_L8:; - /* "bilinear.pxi":150 + /* "pyFAI/ext/bilinear.pxi":150 * logger.debug("Failed to find root using second order expansion") * # refinement of the position by a simple center of mass of the last valid region used * for i0 in range(current0 - 1, current0 + 2): # <<<<<<<<<<<<<< @@ -9178,7 +9178,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p for (__pyx_t_26 = (__pyx_v_current0 - 1); __pyx_t_26 < __pyx_t_25; __pyx_t_26+=1) { __pyx_v_i0 = __pyx_t_26; - /* "bilinear.pxi":151 + /* "pyFAI/ext/bilinear.pxi":151 * # refinement of the position by a simple center of mass of the last valid region used * for i0 in range(current0 - 1, current0 + 2): * for i1 in range(current1 - 1, current1 + 2): # <<<<<<<<<<<<<< @@ -9189,7 +9189,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p for (__pyx_t_28 = (__pyx_v_current1 - 1); __pyx_t_28 < __pyx_t_27; __pyx_t_28+=1) { __pyx_v_i1 = __pyx_t_28; - /* "bilinear.pxi":152 + /* "pyFAI/ext/bilinear.pxi":152 * for i0 in range(current0 - 1, current0 + 2): * for i1 in range(current1 - 1, current1 + 2): * tmp = self.data[i0, i1] # <<<<<<<<<<<<<< @@ -9201,7 +9201,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_30 = __pyx_v_i1; __pyx_v_tmp = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_29 * __pyx_v_self->data.strides[0]) )) + __pyx_t_30)) ))); - /* "bilinear.pxi":153 + /* "pyFAI/ext/bilinear.pxi":153 * for i1 in range(current1 - 1, current1 + 2): * tmp = self.data[i0, i1] * sum0 += tmp * i0 # <<<<<<<<<<<<<< @@ -9210,7 +9210,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_sum0 = (__pyx_v_sum0 + (__pyx_v_tmp * __pyx_v_i0)); - /* "bilinear.pxi":154 + /* "pyFAI/ext/bilinear.pxi":154 * tmp = self.data[i0, i1] * sum0 += tmp * i0 * sum1 += tmp * i1 # <<<<<<<<<<<<<< @@ -9219,7 +9219,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p */ __pyx_v_sum1 = (__pyx_v_sum1 + (__pyx_v_tmp * __pyx_v_i1)); - /* "bilinear.pxi":155 + /* "pyFAI/ext/bilinear.pxi":155 * sum0 += tmp * i0 * sum1 += tmp * i1 * sum += tmp # <<<<<<<<<<<<<< @@ -9230,7 +9230,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p } } - /* "bilinear.pxi":156 + /* "pyFAI/ext/bilinear.pxi":156 * sum1 += tmp * i1 * sum += tmp * if sum > 0: # <<<<<<<<<<<<<< @@ -9240,7 +9240,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_5 = ((__pyx_v_sum > 0.0) != 0); if (__pyx_t_5) { - /* "bilinear.pxi":157 + /* "pyFAI/ext/bilinear.pxi":157 * sum += tmp * if sum > 0: * return (sum0 / sum, sum1 / sum) # <<<<<<<<<<<<<< @@ -9268,7 +9268,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p } __pyx_L3:; - /* "bilinear.pxi":159 + /* "pyFAI/ext/bilinear.pxi":159 * return (sum0 / sum, sum1 / sum) * * return (float(current0), float(current1)) # <<<<<<<<<<<<<< @@ -9292,7 +9292,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p __pyx_t_3 = 0; goto __pyx_L0; - /* "bilinear.pxi":97 + /* "pyFAI/ext/bilinear.pxi":97 * @cython.wraparound(False) * @cython.cdivision(True) * def local_maxi(self, x): # <<<<<<<<<<<<<< @@ -9313,7 +9313,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi(struct __p return __pyx_r; } -/* "bilinear.pxi":161 +/* "pyFAI/ext/bilinear.pxi":161 * return (float(current0), float(current1)) * * cpdef size_t cp_local_maxi(self, size_t x): # <<<<<<<<<<<<<< @@ -9381,7 +9381,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_cp_local_maxi(struct __pyx __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "bilinear.pxi":162 + /* "pyFAI/ext/bilinear.pxi":162 * * cpdef size_t cp_local_maxi(self, size_t x): * return self.c_local_maxi(x) # <<<<<<<<<<<<<< @@ -9391,7 +9391,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_cp_local_maxi(struct __pyx __pyx_r = ((struct __pyx_vtabstruct_5pyFAI_3ext_8bilinear_Bilinear *)__pyx_v_self->__pyx_vtab)->c_local_maxi(__pyx_v_self, __pyx_v_x); goto __pyx_L0; - /* "bilinear.pxi":161 + /* "pyFAI/ext/bilinear.pxi":161 * return (float(current0), float(current1)) * * cpdef size_t cp_local_maxi(self, size_t x): # <<<<<<<<<<<<<< @@ -9416,6 +9416,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_cp_local_maxi(struct __pyx /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_9cp_local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_8cp_local_maxi[] = "Bilinear.cp_local_maxi(self, size_t x) -> size_t"; static PyObject *__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_9cp_local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) { size_t __pyx_v_x; int __pyx_lineno = 0; @@ -9466,7 +9467,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_8cp_local_maxi(struct return __pyx_r; } -/* "bilinear.pxi":167 +/* "pyFAI/ext/bilinear.pxi":167 * @cython.wraparound(False) * @cython.cdivision(True) * cdef size_t c_local_maxi(self, size_t x) nogil: # <<<<<<<<<<<<<< @@ -9509,7 +9510,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "bilinear.pxi":177 + /* "pyFAI/ext/bilinear.pxi":177 * """ * cdef: * int current0 = x // self.width # <<<<<<<<<<<<<< @@ -9518,7 +9519,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ */ __pyx_v_current0 = (__pyx_v_x / __pyx_v_self->width); - /* "bilinear.pxi":178 + /* "pyFAI/ext/bilinear.pxi":178 * cdef: * int current0 = x // self.width * int current1 = x % self.width # <<<<<<<<<<<<<< @@ -9527,7 +9528,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ */ __pyx_v_current1 = (__pyx_v_x % __pyx_v_self->width); - /* "bilinear.pxi":182 + /* "pyFAI/ext/bilinear.pxi":182 * float tmp, value, old_value * * value = self.data[current0, current1] # <<<<<<<<<<<<<< @@ -9539,7 +9540,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_t_2 = __pyx_v_current1; __pyx_v_value = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_1 * __pyx_v_self->data.strides[0]) )) + __pyx_t_2)) ))); - /* "bilinear.pxi":183 + /* "pyFAI/ext/bilinear.pxi":183 * * value = self.data[current0, current1] * old_value = value - 1.0 # <<<<<<<<<<<<<< @@ -9548,7 +9549,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ */ __pyx_v_old_value = (__pyx_v_value - 1.0); - /* "bilinear.pxi":184 + /* "pyFAI/ext/bilinear.pxi":184 * value = self.data[current0, current1] * old_value = value - 1.0 * new0, new1 = current0, current1 # <<<<<<<<<<<<<< @@ -9560,7 +9561,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_v_new0 = __pyx_t_3; __pyx_v_new1 = __pyx_t_4; - /* "bilinear.pxi":186 + /* "pyFAI/ext/bilinear.pxi":186 * new0, new1 = current0, current1 * * while value > old_value: # <<<<<<<<<<<<<< @@ -9571,7 +9572,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_t_5 = ((__pyx_v_value > __pyx_v_old_value) != 0); if (!__pyx_t_5) break; - /* "bilinear.pxi":187 + /* "pyFAI/ext/bilinear.pxi":187 * * while value > old_value: * old_value = value # <<<<<<<<<<<<<< @@ -9580,7 +9581,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ */ __pyx_v_old_value = __pyx_v_value; - /* "bilinear.pxi":188 + /* "pyFAI/ext/bilinear.pxi":188 * while value > old_value: * old_value = value * start0 = max(0, current0 - 1) # <<<<<<<<<<<<<< @@ -9596,7 +9597,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ } __pyx_v_start0 = __pyx_t_8; - /* "bilinear.pxi":189 + /* "pyFAI/ext/bilinear.pxi":189 * old_value = value * start0 = max(0, current0 - 1) * stop0 = min(self.height, current0 + 2) # <<<<<<<<<<<<<< @@ -9612,7 +9613,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ } __pyx_v_stop0 = __pyx_t_10; - /* "bilinear.pxi":190 + /* "pyFAI/ext/bilinear.pxi":190 * start0 = max(0, current0 - 1) * stop0 = min(self.height, current0 + 2) * start1 = max(0, current1 - 1) # <<<<<<<<<<<<<< @@ -9628,7 +9629,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ } __pyx_v_start1 = __pyx_t_7; - /* "bilinear.pxi":191 + /* "pyFAI/ext/bilinear.pxi":191 * stop0 = min(self.height, current0 + 2) * start1 = max(0, current1 - 1) * stop1 = min(self.width, current1 + 2) # <<<<<<<<<<<<<< @@ -9644,7 +9645,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ } __pyx_v_stop1 = __pyx_t_9; - /* "bilinear.pxi":192 + /* "pyFAI/ext/bilinear.pxi":192 * start1 = max(0, current1 - 1) * stop1 = min(self.width, current1 + 2) * for i0 in range(start0, stop0): # <<<<<<<<<<<<<< @@ -9655,7 +9656,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ for (__pyx_t_3 = __pyx_v_start0; __pyx_t_3 < __pyx_t_4; __pyx_t_3+=1) { __pyx_v_i0 = __pyx_t_3; - /* "bilinear.pxi":193 + /* "pyFAI/ext/bilinear.pxi":193 * stop1 = min(self.width, current1 + 2) * for i0 in range(start0, stop0): * for i1 in range(start1, stop1): # <<<<<<<<<<<<<< @@ -9666,7 +9667,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ for (__pyx_t_12 = __pyx_v_start1; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { __pyx_v_i1 = __pyx_t_12; - /* "bilinear.pxi":194 + /* "pyFAI/ext/bilinear.pxi":194 * for i0 in range(start0, stop0): * for i1 in range(start1, stop1): * tmp = self.data[i0, i1] # <<<<<<<<<<<<<< @@ -9678,7 +9679,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_t_14 = __pyx_v_i1; __pyx_v_tmp = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_13 * __pyx_v_self->data.strides[0]) )) + __pyx_t_14)) ))); - /* "bilinear.pxi":195 + /* "pyFAI/ext/bilinear.pxi":195 * for i1 in range(start1, stop1): * tmp = self.data[i0, i1] * if tmp > value: # <<<<<<<<<<<<<< @@ -9688,7 +9689,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_t_5 = ((__pyx_v_tmp > __pyx_v_value) != 0); if (__pyx_t_5) { - /* "bilinear.pxi":196 + /* "pyFAI/ext/bilinear.pxi":196 * tmp = self.data[i0, i1] * if tmp > value: * new0, new1 = i0, i1 # <<<<<<<<<<<<<< @@ -9700,7 +9701,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_v_new0 = __pyx_t_15; __pyx_v_new1 = __pyx_t_16; - /* "bilinear.pxi":197 + /* "pyFAI/ext/bilinear.pxi":197 * if tmp > value: * new0, new1 = i0, i1 * value = tmp # <<<<<<<<<<<<<< @@ -9714,7 +9715,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ } } - /* "bilinear.pxi":198 + /* "pyFAI/ext/bilinear.pxi":198 * new0, new1 = i0, i1 * value = tmp * current0, current1 = new0, new1 # <<<<<<<<<<<<<< @@ -9726,7 +9727,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_v_current1 = __pyx_t_3; } - /* "bilinear.pxi":199 + /* "pyFAI/ext/bilinear.pxi":199 * value = tmp * current0, current1 = new0, new1 * return self.width * current0 + current1 # <<<<<<<<<<<<<< @@ -9734,7 +9735,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ __pyx_r = ((__pyx_v_self->width * __pyx_v_current0) + __pyx_v_current1); goto __pyx_L0; - /* "bilinear.pxi":167 + /* "pyFAI/ext/bilinear.pxi":167 * @cython.wraparound(False) * @cython.cdivision(True) * cdef size_t c_local_maxi(self, size_t x) nogil: # <<<<<<<<<<<<<< @@ -9750,7 +9751,7 @@ static size_t __pyx_f_5pyFAI_3ext_8bilinear_8Bilinear_c_local_maxi(struct __pyx_ return __pyx_r; } -/* "bilinear.pxi":32 +/* "pyFAI/ext/bilinear.pxi":32 * """ * cdef: * readonly float[:, ::1] data # <<<<<<<<<<<<<< @@ -9798,7 +9799,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4data___get__(struct _ return __pyx_r; } -/* "bilinear.pxi":33 +/* "pyFAI/ext/bilinear.pxi":33 * cdef: * readonly float[:, ::1] data * readonly float maxi, mini # <<<<<<<<<<<<<< @@ -9884,7 +9885,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_4mini___get__(struct _ return __pyx_r; } -/* "bilinear.pxi":34 +/* "pyFAI/ext/bilinear.pxi":34 * readonly float[:, ::1] data * readonly float maxi, mini * readonly size_t width, height # <<<<<<<<<<<<<< @@ -9970,7 +9971,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_8Bilinear_6height___get__(struct return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -10020,7 +10021,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -10033,7 +10034,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -10042,7 +10043,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -10051,7 +10052,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -10060,7 +10061,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -10070,7 +10071,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -10082,7 +10083,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -10093,7 +10094,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -10107,7 +10108,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -10119,7 +10120,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -10133,7 +10134,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[2]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -10147,7 +10148,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -10159,7 +10160,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -10173,7 +10174,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -10182,7 +10183,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -10191,7 +10192,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -10201,7 +10202,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -10210,7 +10211,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -10219,7 +10220,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -10230,7 +10231,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -10239,7 +10240,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -10252,7 +10253,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -10261,7 +10262,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -10272,7 +10273,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -10281,7 +10282,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -10290,7 +10291,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -10299,7 +10300,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -10308,7 +10309,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -10320,7 +10321,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -10329,7 +10330,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -10347,7 +10348,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -10363,7 +10364,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -10378,7 +10379,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -10388,7 +10389,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -10398,7 +10399,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -10418,7 +10419,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -10436,7 +10437,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -10450,7 +10451,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -10459,7 +10460,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -10470,7 +10471,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -10481,7 +10482,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -10492,7 +10493,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -10503,7 +10504,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -10514,7 +10515,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -10525,7 +10526,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -10536,7 +10537,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -10547,7 +10548,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -10558,7 +10559,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -10569,7 +10570,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -10580,7 +10581,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -10591,7 +10592,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -10602,7 +10603,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -10613,7 +10614,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -10624,7 +10625,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -10635,7 +10636,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -10647,7 +10648,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -10673,7 +10674,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -10682,7 +10683,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -10694,7 +10695,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -10703,7 +10704,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -10712,7 +10713,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -10721,7 +10722,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -10731,7 +10732,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -10741,7 +10742,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -10773,7 +10774,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -10797,7 +10798,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -10807,7 +10808,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -10819,7 +10820,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -10829,7 +10830,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -10841,7 +10842,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -10853,7 +10854,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -10870,7 +10871,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -10884,7 +10885,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -10903,7 +10904,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -10920,7 +10921,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -10934,7 +10935,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -10953,7 +10954,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -10970,7 +10971,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -10984,7 +10985,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -11003,7 +11004,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -11020,7 +11021,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -11034,7 +11035,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -11053,7 +11054,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -11070,7 +11071,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -11084,7 +11085,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -11103,7 +11104,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -11135,7 +11136,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -11144,7 +11145,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -11153,7 +11154,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -11175,7 +11176,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -11188,7 +11189,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -11227,7 +11228,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -11244,7 +11245,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -11258,7 +11259,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[2]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -11278,7 +11279,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -11296,7 +11297,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -11310,7 +11311,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[2]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -11326,7 +11327,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -11335,7 +11336,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -11344,7 +11345,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -11355,7 +11356,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -11365,7 +11366,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -11375,7 +11376,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -11387,7 +11388,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -11397,7 +11398,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -11411,7 +11412,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[2]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -11429,7 +11430,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -11447,7 +11448,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -11465,7 +11466,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -11483,7 +11484,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -11501,7 +11502,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -11519,7 +11520,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -11537,7 +11538,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -11555,7 +11556,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -11573,7 +11574,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -11591,7 +11592,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -11609,7 +11610,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -11627,7 +11628,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -11645,7 +11646,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -11665,7 +11666,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -11685,7 +11686,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -11705,7 +11706,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -11724,7 +11725,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -11747,7 +11748,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -11759,7 +11760,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -11771,7 +11772,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -11781,7 +11782,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -11791,7 +11792,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -11816,7 +11817,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -11831,7 +11832,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -11842,7 +11843,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -11854,7 +11855,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -11863,7 +11864,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -11874,7 +11875,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -11883,7 +11884,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -11892,7 +11893,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -11904,7 +11905,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -11918,7 +11919,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -11928,7 +11929,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -11942,7 +11943,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -11953,7 +11954,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -22664,7 +22665,7 @@ static PyObject *__pyx_getprop_5pyFAI_3ext_8bilinear_8Bilinear_height(PyObject * static PyMethodDef __pyx_methods_5pyFAI_3ext_8bilinear_Bilinear[] = { {"f_cy", (PyCFunction)__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_5f_cy, METH_O, __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_4f_cy}, {"local_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_7local_maxi, METH_O, __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_6local_maxi}, - {"cp_local_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_9cp_local_maxi, METH_O, 0}, + {"cp_local_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_8bilinear_8Bilinear_9cp_local_maxi, METH_O, __pyx_doc_5pyFAI_3ext_8bilinear_8Bilinear_8cp_local_maxi}, {0, 0, 0, 0} }; @@ -23412,8 +23413,8 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_2011_2015_ESRF, __pyx_k_2011_2015_ESRF, sizeof(__pyx_k_2011_2015_ESRF), 0, 0, 1, 0}, - {&__pyx_kp_s_27_09_2016, __pyx_k_27_09_2016, sizeof(__pyx_k_27_09_2016), 0, 0, 1, 0}, {&__pyx_n_s_A0, __pyx_k_A0, sizeof(__pyx_k_A0), 0, 0, 1, 1}, {&__pyx_n_s_A1, __pyx_k_A1, sizeof(__pyx_k_A1), 0, 0, 1, 1}, {&__pyx_n_s_A2, __pyx_k_A2, sizeof(__pyx_k_A2), 0, 0, 1, 1}, @@ -23646,7 +23647,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); - /* "bilinear.pxi":140 + /* "pyFAI/ext/bilinear.pxi":140 * denom = 2.0 * (d00 * d11 - d01 * d01) * if abs(denom) < 1e-10: * logger.debug("Singular determinant, Hessian undefined") # <<<<<<<<<<<<<< @@ -23657,7 +23658,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__13); __Pyx_GIVEREF(__pyx_tuple__13); - /* "bilinear.pxi":148 + /* "pyFAI/ext/bilinear.pxi":148 * return (delta0 + float(current0), delta1 + float(current1)) * else: * logger.debug("Failed to find root using second order expansion") # <<<<<<<<<<<<<< @@ -23668,7 +23669,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -23679,7 +23680,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -23690,7 +23691,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -23701,7 +23702,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -23712,7 +23713,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -23723,7 +23724,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -24120,7 +24121,7 @@ PyMODINIT_FUNC PyInit_bilinear(void) * * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __license__ = "MIT" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -24128,7 +24129,7 @@ PyMODINIT_FUNC PyInit_bilinear(void) * * __author__ = "Jerome Kieffer" * __license__ = "MIT" # <<<<<<<<<<<<<< - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -24136,15 +24137,15 @@ PyMODINIT_FUNC PyInit_bilinear(void) /* "pyFAI/ext/bilinear.pyx":31 * __author__ = "Jerome Kieffer" * __license__ = "MIT" - * __date__ = "27/09/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __copyright__ = "2011-2015, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_27_09_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/bilinear.pyx":32 * __license__ = "MIT" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" # <<<<<<<<<<<<<< * __contact__ = "jerome.kieffer@esrf.fr" * @@ -24152,7 +24153,7 @@ PyMODINIT_FUNC PyInit_bilinear(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_copyright, __pyx_kp_s_2011_2015_ESRF) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/bilinear.pyx":33 - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< * diff --git a/pyFAI/ext/bilinear.pyx b/pyFAI/ext/bilinear.pyx index 38474e5e3..24699bd3f 100644 --- a/pyFAI/ext/bilinear.pyx +++ b/pyFAI/ext/bilinear.pyx @@ -28,7 +28,7 @@ __author__ = "Jerome Kieffer" __license__ = "MIT" -__date__ = "27/09/2016" +__date__ = "01/12/2016" __copyright__ = "2011-2015, ESRF" __contact__ = "jerome.kieffer@esrf.fr" @@ -55,10 +55,10 @@ def calc_cartesian_positions(floating[::1] d1, floating[::1] d2, with pixel coordinated stored in array pos This is bilinear interpolation - @param d1: position in dim1 - @param d2: position in dim2 - @param pos: array with position of pixels corners - @return 3-tuple of position. + :param d1: position in dim1 + :param d2: position in dim2 + :param pos: array with position of pixels corners + :return 3-tuple of position. """ cdef: int i, p1, p2, dim1, dim2, size = d1.size @@ -149,11 +149,11 @@ def convert_corner_2D_to_4D(int ndim, """ Convert 2 (or 3) arrays of corner position into a 4D array of pixel corner coordinates - @param ndim: 2d or 3D output - @param d1: 2D position in dim1 (shape +1) - @param d2: 2D position in dim2 (shape +1) - @param d3: 2D position in dim3 (z) (shape +1) - @return: pos 4D array with position of pixels corners + :param ndim: 2d or 3D output + :param d1: 2D position in dim1 (shape +1) + :param d2: 2D position in dim2 (shape +1) + :param d3: 2D position in dim3 (z) (shape +1) + :return: pos 4D array with position of pixels corners """ cdef int shape0, shape1, i, j # edges position are n+1 compared to number of pixels diff --git a/pyFAI/ext/fastcrc.c b/pyFAI/ext/fastcrc.c index f5c4dda5a..f3bbb1d25 100644 --- a/pyFAI/ext/fastcrc.c +++ b/pyFAI/ext/fastcrc.c @@ -448,7 +448,7 @@ static const char *__pyx_f[] = { "type.pxd", }; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -457,7 +457,7 @@ static const char *__pyx_f[] = { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -466,7 +466,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -475,7 +475,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -484,7 +484,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -493,7 +493,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -502,7 +502,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -511,7 +511,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -520,7 +520,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -529,7 +529,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -538,7 +538,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -547,7 +547,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -556,7 +556,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -565,7 +565,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -574,7 +574,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -583,7 +583,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -592,7 +592,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -601,7 +601,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -610,7 +610,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -619,7 +619,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -628,7 +628,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; /*--- Type declarations ---*/ -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1076,7 +1076,7 @@ static PyObject *__pyx_codeobj__8; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_7fastcrc_1crc32(PyObject *__pyx_self, PyObject *__pyx_v_data); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_7fastcrc_crc32[] = "\n Calculate the CRC32 checksum of a numpy array\n @param data: a numpy array\n @return unsigned integer\n "; +static char __pyx_doc_5pyFAI_3ext_7fastcrc_crc32[] = "crc32(ndarray data)\n\n Calculate the CRC32 checksum of a numpy array\n @param data: a numpy array\n @return unsigned integer\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_7fastcrc_1crc32 = {"crc32", (PyCFunction)__pyx_pw_5pyFAI_3ext_7fastcrc_1crc32, METH_O, __pyx_doc_5pyFAI_3ext_7fastcrc_crc32}; static PyObject *__pyx_pw_5pyFAI_3ext_7fastcrc_1crc32(PyObject *__pyx_self, PyObject *__pyx_v_data) { CYTHON_UNUSED int __pyx_lineno = 0; @@ -1151,7 +1151,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7fastcrc_crc32(CYTHON_UNUSED PyObject *__p return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -1201,7 +1201,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -1214,7 +1214,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -1223,7 +1223,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -1232,7 +1232,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -1241,7 +1241,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -1251,7 +1251,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -1263,7 +1263,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -1274,7 +1274,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -1288,7 +1288,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -1300,7 +1300,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -1314,7 +1314,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -1328,7 +1328,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -1340,7 +1340,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -1354,7 +1354,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -1363,7 +1363,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -1372,7 +1372,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -1382,7 +1382,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -1391,7 +1391,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -1400,7 +1400,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -1411,7 +1411,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -1420,7 +1420,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -1433,7 +1433,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -1442,7 +1442,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -1453,7 +1453,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -1462,7 +1462,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -1471,7 +1471,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -1480,7 +1480,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -1489,7 +1489,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -1501,7 +1501,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -1510,7 +1510,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -1528,7 +1528,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -1544,7 +1544,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -1559,7 +1559,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -1569,7 +1569,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -1579,7 +1579,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -1599,7 +1599,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -1617,7 +1617,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -1631,7 +1631,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -1640,7 +1640,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -1651,7 +1651,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -1662,7 +1662,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -1673,7 +1673,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -1684,7 +1684,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -1695,7 +1695,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -1706,7 +1706,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -1717,7 +1717,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -1728,7 +1728,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -1739,7 +1739,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -1750,7 +1750,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -1761,7 +1761,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -1772,7 +1772,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -1783,7 +1783,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -1794,7 +1794,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -1805,7 +1805,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -1816,7 +1816,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -1828,7 +1828,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -1854,7 +1854,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -1863,7 +1863,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -1875,7 +1875,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -1884,7 +1884,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -1893,7 +1893,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -1902,7 +1902,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -1912,7 +1912,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -1922,7 +1922,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -1954,7 +1954,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -1978,7 +1978,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -1988,7 +1988,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -2000,7 +2000,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -2010,7 +2010,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -2022,7 +2022,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -2034,7 +2034,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -2051,7 +2051,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -2065,7 +2065,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -2084,7 +2084,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -2101,7 +2101,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -2115,7 +2115,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -2134,7 +2134,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -2151,7 +2151,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -2165,7 +2165,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -2184,7 +2184,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -2201,7 +2201,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -2215,7 +2215,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -2234,7 +2234,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -2251,7 +2251,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -2265,7 +2265,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -2284,7 +2284,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -2316,7 +2316,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -2325,7 +2325,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -2334,7 +2334,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -2356,7 +2356,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -2369,7 +2369,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -2408,7 +2408,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -2425,7 +2425,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -2439,7 +2439,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -2459,7 +2459,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -2477,7 +2477,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -2491,7 +2491,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -2507,7 +2507,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -2516,7 +2516,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -2525,7 +2525,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -2536,7 +2536,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -2546,7 +2546,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -2556,7 +2556,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -2568,7 +2568,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -2578,7 +2578,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -2592,7 +2592,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -2610,7 +2610,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -2628,7 +2628,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -2646,7 +2646,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -2664,7 +2664,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -2682,7 +2682,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -2700,7 +2700,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -2718,7 +2718,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -2736,7 +2736,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -2754,7 +2754,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -2772,7 +2772,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -2790,7 +2790,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -2808,7 +2808,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -2826,7 +2826,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -2846,7 +2846,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -2866,7 +2866,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -2886,7 +2886,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -2905,7 +2905,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -2928,7 +2928,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -2940,7 +2940,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -2952,7 +2952,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -2962,7 +2962,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -2972,7 +2972,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -2997,7 +2997,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -3012,7 +3012,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -3023,7 +3023,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -3035,7 +3035,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -3044,7 +3044,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -3055,7 +3055,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -3064,7 +3064,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -3073,7 +3073,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -3085,7 +3085,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -3099,7 +3099,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -3109,7 +3109,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -3123,7 +3123,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -3134,7 +3134,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -3214,7 +3214,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -3225,7 +3225,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -3236,7 +3236,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -3247,7 +3247,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -3258,7 +3258,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -3269,7 +3269,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -3472,7 +3472,7 @@ PyMODINIT_FUNC PyInit_fastcrc(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/histogram.c b/pyFAI/ext/histogram.c index c3c6c1b4c..07c3544a6 100644 --- a/pyFAI/ext/histogram.c +++ b/pyFAI/ext/histogram.c @@ -1935,7 +1935,7 @@ static CYTHON_INLINE double __pyx_fuse_1__pyx_f_5pyFAI_3ext_9histogram_get_bin_n /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9histogram_1histogram(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9histogram_histogram[] = "\n Calculates histogram of pos weighted by weights\n\n @param pos: 2Theta array\n @param weights: array with intensities\n @param bins: number of output bins\n @param pixelSize_in_Pos: size of a pixels in 2theta: DESACTIVATED\n @param nthread: OpenMP is disabled. unused\n @param empty: value given to empty bins\n @param normalization_factor: divide the result by this value\n\n @return 2theta, I, weighted histogram, raw histogram\n "; +static char __pyx_doc_5pyFAI_3ext_9histogram_histogram[] = "histogram(ndarray pos, ndarray weights, int bins=100, bin_range=None, pixelSize_in_Pos=None, nthread=None, double empty=0.0, double normalization_factor=1.0)\n\n Calculates histogram of pos weighted by weights\n\n @param pos: 2Theta array\n @param weights: array with intensities\n @param bins: number of output bins\n @param pixelSize_in_Pos: size of a pixels in 2theta: DESACTIVATED\n @param nthread: OpenMP is disabled. unused\n @param empty: value given to empty bins\n @param normalization_factor: divide the result by this value\n\n @return 2theta, I, weighted histogram, raw histogram\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9histogram_1histogram = {"histogram", (PyCFunction)__pyx_pw_5pyFAI_3ext_9histogram_1histogram, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9histogram_histogram}; static PyObject *__pyx_pw_5pyFAI_3ext_9histogram_1histogram(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_pos = 0; @@ -3005,21 +3005,21 @@ __pyx_t_19.strides[1] = __pyx_v_big_data.strides[1]; if (__pyx_t_21 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_4, __pyx_t_26, __pyx_t_27, __pyx_t_25, __pyx_t_15, __pyx_t_24, __pyx_t_22) + #pragma omp parallel private(__pyx_t_22, __pyx_t_23, __pyx_t_26, __pyx_t_27, __pyx_t_15, __pyx_t_24, __pyx_t_25, __pyx_t_4) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_fbin) lastprivate(__pyx_v_a) lastprivate(__pyx_v_bin) lastprivate(__pyx_v_thread) lastprivate(__pyx_v_d) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) + #pragma omp for lastprivate(__pyx_v_a) lastprivate(__pyx_v_thread) lastprivate(__pyx_v_fbin) lastprivate(__pyx_v_d) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_bin) #endif /* _OPENMP */ for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_21; __pyx_t_20++){ { __pyx_v_i = 0 + 1 * __pyx_t_20; /* Initialize private variables to invalid values */ - __pyx_v_fbin = ((double)__PYX_NAN()); __pyx_v_a = ((double)__PYX_NAN()); - __pyx_v_bin = ((int)0xbad0bad0); __pyx_v_thread = ((int)0xbad0bad0); + __pyx_v_fbin = ((double)__PYX_NAN()); __pyx_v_d = ((double)__PYX_NAN()); + __pyx_v_bin = ((int)0xbad0bad0); /* "pyFAI/ext/histogram_omp.pxi":119 * with nogil: @@ -3153,19 +3153,19 @@ __pyx_t_19.strides[1] = __pyx_v_big_data.strides[1]; if (__pyx_t_5 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_4, __pyx_t_28, __pyx_t_31, __pyx_t_30, __pyx_t_29, __pyx_t_32, __pyx_t_36, __pyx_t_33, __pyx_t_35) + #pragma omp parallel private(__pyx_t_35, __pyx_t_34, __pyx_t_31, __pyx_t_28, __pyx_t_30, __pyx_t_29, __pyx_t_36, __pyx_t_33, __pyx_t_32, __pyx_t_4) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_tmp_count) lastprivate(__pyx_v_thread) lastprivate(__pyx_v_tmp_data) firstprivate(__pyx_v_idx) lastprivate(__pyx_v_idx) + #pragma omp for lastprivate(__pyx_v_tmp_count) lastprivate(__pyx_v_tmp_data) lastprivate(__pyx_v_thread) firstprivate(__pyx_v_idx) lastprivate(__pyx_v_idx) #endif /* _OPENMP */ for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_5; __pyx_t_20++){ { __pyx_v_idx = 0 + 1 * __pyx_t_20; /* Initialize private variables to invalid values */ __pyx_v_tmp_count = ((double)__PYX_NAN()); - __pyx_v_thread = ((int)0xbad0bad0); __pyx_v_tmp_data = ((double)__PYX_NAN()); + __pyx_v_thread = ((int)0xbad0bad0); /* "pyFAI/ext/histogram_omp.pxi":130 * @@ -3443,7 +3443,7 @@ __pyx_t_19.strides[1] = __pyx_v_big_data.strides[1]; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9histogram_3histogram2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9histogram_2histogram2d[] = "\n Calculate 2D histogram of pos0,pos1 weighted by weights\n\n @param pos0: 2Theta array\n @param pos1: Chi array\n @param weights: array with intensities\n @param bins: number of output bins int or 2-tuple of int\n @param split: pixel splitting is disabled in histogram\n @param nthread: maximum number of thread to use. By default: maximum available.\n @param empty: value given to empty bins\n @param normalization_factor: divide the result by this value\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n\n One can also limit this with OMP_NUM_THREADS environment variable\n "; +static char __pyx_doc_5pyFAI_3ext_9histogram_2histogram2d[] = "histogram2d(ndarray pos0, ndarray pos1, bins, ndarray weights, split=False, nthread=None, double empty=0.0, double normalization_factor=1.0)\n\n Calculate 2D histogram of pos0,pos1 weighted by weights\n\n @param pos0: 2Theta array\n @param pos1: Chi array\n @param weights: array with intensities\n @param bins: number of output bins int or 2-tuple of int\n @param split: pixel splitting is disabled in histogram\n @param nthread: maximum number of thread to use. By default: maximum available.\n @param empty: value given to empty bins\n @param normalization_factor: divide the result by this value\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n\n One can also limit this with OMP_NUM_THREADS environment variable\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9histogram_3histogram2d = {"histogram2d", (PyCFunction)__pyx_pw_5pyFAI_3ext_9histogram_3histogram2d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9histogram_2histogram2d}; static PyObject *__pyx_pw_5pyFAI_3ext_9histogram_3histogram2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_pos0 = 0; @@ -4768,11 +4768,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9histogram_2histogram2d(CYTHON_UNUSED PyOb if (__pyx_t_31 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_42, __pyx_t_22, __pyx_t_37, __pyx_t_32, __pyx_t_36, __pyx_t_33, __pyx_t_40, __pyx_t_41, __pyx_t_35) + #pragma omp parallel private(__pyx_t_38, __pyx_t_35, __pyx_t_42, __pyx_t_34, __pyx_t_43, __pyx_t_22, __pyx_t_37, __pyx_t_36, __pyx_t_33, __pyx_t_40, __pyx_t_32, __pyx_t_41, __pyx_t_39) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) + #pragma omp for lastprivate(__pyx_v_j) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) #endif /* _OPENMP */ for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_31; __pyx_t_5++){ { diff --git a/pyFAI/ext/marchingsquares.c b/pyFAI/ext/marchingsquares.c index a103ed24f..b633f237d 100644 --- a/pyFAI/ext/marchingsquares.c +++ b/pyFAI/ext/marchingsquares.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/marchingsquares.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; #define IS_UNSIGNED(type) (((type) -1) > 0) @@ -541,7 +541,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -550,7 +550,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -559,7 +559,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -568,7 +568,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -577,7 +577,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -586,7 +586,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -595,7 +595,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -604,7 +604,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -613,7 +613,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -622,7 +622,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -631,7 +631,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -640,7 +640,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -649,7 +649,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -658,7 +658,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -667,7 +667,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -676,7 +676,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -685,7 +685,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -694,7 +694,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -703,7 +703,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -712,7 +712,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -721,7 +721,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -756,7 +756,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -765,7 +765,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -774,7 +774,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -783,7 +783,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1891,7 +1891,8 @@ static PyObject *__pyx_codeobj__26; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_15marchingsquares_1marching_squares(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_15marchingsquares_1marching_squares = {"marching_squares", (PyCFunction)__pyx_pw_5pyFAI_3ext_15marchingsquares_1marching_squares, METH_VARARGS|METH_KEYWORDS, 0}; +static char __pyx_doc_5pyFAI_3ext_15marchingsquares_marching_squares[] = "marching_squares(__Pyx_memviewslice img, double isovalue, __Pyx_memviewslice cellToEdge, __Pyx_memviewslice edgeToRelativePosX, __Pyx_memviewslice edgeToRelativePosY)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_15marchingsquares_1marching_squares = {"marching_squares", (PyCFunction)__pyx_pw_5pyFAI_3ext_15marchingsquares_1marching_squares, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_15marchingsquares_marching_squares}; static PyObject *__pyx_pw_5pyFAI_3ext_15marchingsquares_1marching_squares(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_img = { 0, 0, { 0 }, { 0 }, { 0 } }; double __pyx_v_isovalue; @@ -2715,7 +2716,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_15marchingsquares_marching_squares(CYTHON_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_15marchingsquares_3sort_edges(PyObject *__pyx_self, PyObject *__pyx_v_edges); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_15marchingsquares_2sort_edges[] = "\n Reorder edges in such a way they become contiguous\n "; +static char __pyx_doc_5pyFAI_3ext_15marchingsquares_2sort_edges[] = "sort_edges(edges)\n\n Reorder edges in such a way they become contiguous\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_15marchingsquares_3sort_edges = {"sort_edges", (PyCFunction)__pyx_pw_5pyFAI_3ext_15marchingsquares_3sort_edges, METH_O, __pyx_doc_5pyFAI_3ext_15marchingsquares_2sort_edges}; static PyObject *__pyx_pw_5pyFAI_3ext_15marchingsquares_3sort_edges(PyObject *__pyx_self, PyObject *__pyx_v_edges) { PyObject *__pyx_r = 0; @@ -3422,7 +3423,7 @@ __pyx_t_13.strides[0] = __pyx_v_pos.strides[0]; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_15marchingsquares_5isocontour(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_15marchingsquares_4isocontour[] = " isocontour(img, isovalue=None)\n\n Calculate the iso contours for the given 2D image. If isovalue\n is not given or None, a value between the min and max of the image\n is used.\n\n @param img: 2D array representing the image\n @param isovalue: the value for which the iso_contour shall be calculated\n @param sorted: perform a sorting of the points to have them contiguous ?\n\n Returns a pointset in which each two subsequent points form a line\n piece. This van be best visualized using \"vv.plot(result, ls='+')\".\n\n "; +static char __pyx_doc_5pyFAI_3ext_15marchingsquares_4isocontour[] = "isocontour(img, isovalue=None, sorted=False)\n isocontour(img, isovalue=None)\n\n Calculate the iso contours for the given 2D image. If isovalue\n is not given or None, a value between the min and max of the image\n is used.\n\n @param img: 2D array representing the image\n @param isovalue: the value for which the iso_contour shall be calculated\n @param sorted: perform a sorting of the points to have them contiguous ?\n\n Returns a pointset in which each two subsequent points form a line\n piece. This van be best visualized using \"vv.plot(result, ls='+')\".\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_15marchingsquares_5isocontour = {"isocontour", (PyCFunction)__pyx_pw_5pyFAI_3ext_15marchingsquares_5isocontour, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_15marchingsquares_4isocontour}; static PyObject *__pyx_pw_5pyFAI_3ext_15marchingsquares_5isocontour(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_img = 0; @@ -3835,7 +3836,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_15marchingsquares_4isocontour(CYTHON_UNUSE return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3885,7 +3886,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -3898,7 +3899,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -3907,7 +3908,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -3916,7 +3917,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -3925,7 +3926,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3935,7 +3936,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -3947,7 +3948,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -3958,7 +3959,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3972,7 +3973,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3984,7 +3985,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -3998,7 +3999,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -4012,7 +4013,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -4024,7 +4025,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -4038,7 +4039,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -4047,7 +4048,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -4056,7 +4057,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -4066,7 +4067,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -4075,7 +4076,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -4084,7 +4085,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -4095,7 +4096,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -4104,7 +4105,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -4117,7 +4118,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -4126,7 +4127,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -4137,7 +4138,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -4146,7 +4147,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -4155,7 +4156,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -4164,7 +4165,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -4173,7 +4174,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -4185,7 +4186,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -4194,7 +4195,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -4212,7 +4213,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -4228,7 +4229,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -4243,7 +4244,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -4253,7 +4254,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -4263,7 +4264,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -4283,7 +4284,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -4301,7 +4302,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -4315,7 +4316,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -4324,7 +4325,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -4335,7 +4336,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -4346,7 +4347,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -4357,7 +4358,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -4368,7 +4369,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -4379,7 +4380,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -4390,7 +4391,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -4401,7 +4402,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -4412,7 +4413,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -4423,7 +4424,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -4434,7 +4435,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -4445,7 +4446,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -4456,7 +4457,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -4467,7 +4468,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -4478,7 +4479,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -4489,7 +4490,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -4500,7 +4501,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -4512,7 +4513,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -4538,7 +4539,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -4547,7 +4548,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -4559,7 +4560,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -4568,7 +4569,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -4577,7 +4578,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -4586,7 +4587,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -4596,7 +4597,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -4606,7 +4607,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -4638,7 +4639,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4662,7 +4663,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -4672,7 +4673,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -4684,7 +4685,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -4694,7 +4695,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -4706,7 +4707,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -4718,7 +4719,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4735,7 +4736,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -4749,7 +4750,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -4768,7 +4769,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4785,7 +4786,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -4799,7 +4800,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4818,7 +4819,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4835,7 +4836,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -4849,7 +4850,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4868,7 +4869,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4885,7 +4886,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -4899,7 +4900,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4918,7 +4919,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4935,7 +4936,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -4949,7 +4950,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4968,7 +4969,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -5000,7 +5001,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -5009,7 +5010,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -5018,7 +5019,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -5040,7 +5041,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -5053,7 +5054,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -5092,7 +5093,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -5109,7 +5110,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -5123,7 +5124,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -5143,7 +5144,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -5161,7 +5162,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -5175,7 +5176,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -5191,7 +5192,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -5200,7 +5201,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -5209,7 +5210,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -5220,7 +5221,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -5230,7 +5231,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -5240,7 +5241,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -5252,7 +5253,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -5262,7 +5263,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -5276,7 +5277,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -5294,7 +5295,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -5312,7 +5313,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -5330,7 +5331,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -5348,7 +5349,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -5366,7 +5367,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -5384,7 +5385,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -5402,7 +5403,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -5420,7 +5421,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -5438,7 +5439,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -5456,7 +5457,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -5474,7 +5475,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -5492,7 +5493,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -5510,7 +5511,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -5530,7 +5531,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -5550,7 +5551,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -5570,7 +5571,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -5589,7 +5590,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -5612,7 +5613,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -5624,7 +5625,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -5636,7 +5637,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -5646,7 +5647,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -5656,7 +5657,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -5681,7 +5682,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5696,7 +5697,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -5707,7 +5708,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -5719,7 +5720,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -5728,7 +5729,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -5739,7 +5740,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -5748,7 +5749,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -5757,7 +5758,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -5769,7 +5770,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -5783,7 +5784,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -5793,7 +5794,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -5807,7 +5808,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -5818,7 +5819,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -17341,7 +17342,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -17352,7 +17353,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -17363,7 +17364,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17374,7 +17375,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -17385,7 +17386,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17396,7 +17397,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/morphology.c b/pyFAI/ext/morphology.c index 25bab581d..74a69b9b7 100644 --- a/pyFAI/ext/morphology.c +++ b/pyFAI/ext/morphology.c @@ -445,9 +445,18 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/morphology.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; +struct __pyx_memoryview_obj; +typedef struct { + struct __pyx_memoryview_obj *memview; + char *data; + Py_ssize_t shape[8]; + Py_ssize_t strides[8]; + Py_ssize_t suboffsets[8]; +} __Pyx_memviewslice; + #define IS_UNSIGNED(type) (((type) -1) > 0) struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) @@ -483,15 +492,6 @@ typedef struct { char is_valid_array; } __Pyx_BufFmt_Context; -struct __pyx_memoryview_obj; -typedef struct { - struct __pyx_memoryview_obj *memview; - char *data; - Py_ssize_t shape[8]; - Py_ssize_t strides[8]; - Py_ssize_t suboffsets[8]; -} __Pyx_memviewslice; - #include #ifndef CYTHON_ATOMICS #define CYTHON_ATOMICS 1 @@ -540,7 +540,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -549,7 +549,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -558,7 +558,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -567,7 +567,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -576,7 +576,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -585,7 +585,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -594,7 +594,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -603,7 +603,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -612,7 +612,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -621,7 +621,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -630,7 +630,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -639,7 +639,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -648,7 +648,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -657,7 +657,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -666,7 +666,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -675,7 +675,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -684,7 +684,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -693,7 +693,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -702,7 +702,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -711,7 +711,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -720,7 +720,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -755,7 +755,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -764,7 +764,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -773,7 +773,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -782,7 +782,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -996,16 +996,16 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1) -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); - #define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d #define __Pyx_MEMVIEW_DIRECT 1 #define __Pyx_MEMVIEW_PTR 2 @@ -1031,6 +1031,9 @@ static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int); +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); + static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); @@ -1039,6 +1042,8 @@ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); @@ -1162,12 +1167,6 @@ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback); -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - static int __Pyx_SetVtable(PyObject *dict, void *vtable); typedef struct { @@ -1226,7 +1225,7 @@ static int __Pyx_ValidateAndInit_memviewslice( __Pyx_memviewslice *memviewslice, PyObject *original_obj); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *); static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); @@ -1234,6 +1233,13 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int8(npy_int8 value); + +static CYTHON_INLINE npy_int8 __Pyx_PyInt_As_npy_int8(PyObject *); + +static PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int8_t(const char *itemp); +static int __pyx_memview_set_nn___pyx_t_5numpy_int8_t(const char *itemp, PyObject *obj); + #if CYTHON_CCOMPLEX #ifdef __cplusplus #define __Pyx_CREAL(z) ((z).real()) @@ -1418,8 +1424,6 @@ static PyObject *strided = 0; static PyObject *indirect = 0; static PyObject *contiguous = 0; static PyObject *indirect_contiguous = 0; -static CYTHON_INLINE __pyx_t_5numpy_int8_t __pyx_f_5pyFAI_3ext_10morphology_MIN(__pyx_t_5numpy_int8_t, __pyx_t_5numpy_int8_t); /*proto*/ -static CYTHON_INLINE __pyx_t_5numpy_int8_t __pyx_f_5pyFAI_3ext_10morphology_MAX(__pyx_t_5numpy_int8_t, __pyx_t_5numpy_int8_t); /*proto*/ static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/ static void *__pyx_align_pointer(void *, size_t); /*proto*/ static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/ @@ -1573,6 +1577,7 @@ static char __pyx_k_status[] = "__status__"; static char __pyx_k_struct[] = "struct"; static char __pyx_k_unpack[] = "unpack"; static char __pyx_k_xrange[] = "xrange"; +static char __pyx_k_asarray[] = "asarray"; static char __pyx_k_contact[] = "__contact__"; static char __pyx_k_fortran[] = "fortran"; static char __pyx_k_license[] = "__license__"; @@ -1581,7 +1586,7 @@ static char __pyx_k_Ellipsis[] = "Ellipsis"; static char __pyx_k_itemsize[] = "itemsize"; static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_enumerate[] = "enumerate"; -static char __pyx_k_31_05_2016[] = "31/05/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; @@ -1629,7 +1634,7 @@ static char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_kp_s_31_05_2016; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_A_few_binary_morphology_operati; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; @@ -1656,6 +1661,7 @@ static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_n_s_allocate_buffer; +static PyObject *__pyx_n_s_asarray; static PyObject *__pyx_n_s_author; static PyObject *__pyx_n_s_base; static PyObject *__pyx_n_s_binary_dilation; @@ -1762,103 +1768,17 @@ static PyObject *__pyx_tuple__26; static PyObject *__pyx_codeobj__19; static PyObject *__pyx_codeobj__21; -/* "pyFAI/ext/morphology.pyx":40 - * cimport numpy - * - * cdef inline numpy.int8_t MIN(numpy.int8_t a, numpy.int8_t b): # <<<<<<<<<<<<<< - * return a if (a < b) else b - * cdef inline numpy.int8_t MAX(numpy.int8_t a, numpy.int8_t b): - */ - -static CYTHON_INLINE __pyx_t_5numpy_int8_t __pyx_f_5pyFAI_3ext_10morphology_MIN(__pyx_t_5numpy_int8_t __pyx_v_a, __pyx_t_5numpy_int8_t __pyx_v_b) { - __pyx_t_5numpy_int8_t __pyx_r; - __Pyx_RefNannyDeclarations - __pyx_t_5numpy_int8_t __pyx_t_1; - __Pyx_RefNannySetupContext("MIN", 0); - - /* "pyFAI/ext/morphology.pyx":41 - * - * cdef inline numpy.int8_t MIN(numpy.int8_t a, numpy.int8_t b): - * return a if (a < b) else b # <<<<<<<<<<<<<< - * cdef inline numpy.int8_t MAX(numpy.int8_t a, numpy.int8_t b): - * return a if (a > b) else b - */ - if (((__pyx_v_a < __pyx_v_b) != 0)) { - __pyx_t_1 = __pyx_v_a; - } else { - __pyx_t_1 = __pyx_v_b; - } - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "pyFAI/ext/morphology.pyx":40 - * cimport numpy - * - * cdef inline numpy.int8_t MIN(numpy.int8_t a, numpy.int8_t b): # <<<<<<<<<<<<<< - * return a if (a < b) else b - * cdef inline numpy.int8_t MAX(numpy.int8_t a, numpy.int8_t b): - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "pyFAI/ext/morphology.pyx":42 - * cdef inline numpy.int8_t MIN(numpy.int8_t a, numpy.int8_t b): - * return a if (a < b) else b - * cdef inline numpy.int8_t MAX(numpy.int8_t a, numpy.int8_t b): # <<<<<<<<<<<<<< - * return a if (a > b) else b - * - */ - -static CYTHON_INLINE __pyx_t_5numpy_int8_t __pyx_f_5pyFAI_3ext_10morphology_MAX(__pyx_t_5numpy_int8_t __pyx_v_a, __pyx_t_5numpy_int8_t __pyx_v_b) { - __pyx_t_5numpy_int8_t __pyx_r; - __Pyx_RefNannyDeclarations - __pyx_t_5numpy_int8_t __pyx_t_1; - __Pyx_RefNannySetupContext("MAX", 0); - - /* "pyFAI/ext/morphology.pyx":43 - * return a if (a < b) else b - * cdef inline numpy.int8_t MAX(numpy.int8_t a, numpy.int8_t b): - * return a if (a > b) else b # <<<<<<<<<<<<<< - * - * - */ - if (((__pyx_v_a > __pyx_v_b) != 0)) { - __pyx_t_1 = __pyx_v_a; - } else { - __pyx_t_1 = __pyx_v_b; - } - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "pyFAI/ext/morphology.pyx":42 - * cdef inline numpy.int8_t MIN(numpy.int8_t a, numpy.int8_t b): - * return a if (a < b) else b - * cdef inline numpy.int8_t MAX(numpy.int8_t a, numpy.int8_t b): # <<<<<<<<<<<<<< - * return a if (a > b) else b - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "pyFAI/ext/morphology.pyx":48 - * @cython.boundscheck(False) +/* "pyFAI/ext/morphology.pyx":44 * @cython.wraparound(False) - * def binary_dilation(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def binary_dilation(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): * """ - * Return fast binary morphological dilation of an image. */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_1binary_dilation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_10morphology_binary_dilation[] = "\n Return fast binary morphological dilation of an image.\n\n Morphological dilation sets a pixel at (i,j) to the maximum over all pixels in the neighborhood centered at (i,j).\n Dilation enlarges bright regions and shrinks dark regions.\n\n @param image : ndarray\n @param radius: float\n @return: ndiamge\n "; +static char __pyx_doc_5pyFAI_3ext_10morphology_binary_dilation[] = "binary_dilation(__Pyx_memviewslice image, float radius=1.0)\n\n Return fast binary morphological dilation of an image.\n\n Morphological dilation sets a pixel at (i,j) to the maximum over all pixels in the neighborhood centered at (i,j).\n Dilation enlarges bright regions and shrinks dark regions.\n\n :param image : ndarray\n :param radius: float\n :return: ndiamge\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_10morphology_1binary_dilation = {"binary_dilation", (PyCFunction)__pyx_pw_5pyFAI_3ext_10morphology_1binary_dilation, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_10morphology_binary_dilation}; static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_1binary_dilation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -1893,7 +1813,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_1binary_dilation(PyObject *__ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "binary_dilation") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "binary_dilation") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -1903,16 +1823,16 @@ static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_1binary_dilation(PyObject *__ default: goto __pyx_L5_argtuple_error; } } - __pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[0]); if (unlikely(!__pyx_v_image.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(values[0]); if (unlikely(!__pyx_v_image.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} if (values[1]) { - __pyx_v_radius = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_radius == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_radius = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_radius == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_radius = ((float)1.0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("binary_dilation", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("binary_dilation", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.morphology.binary_dilation", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -1938,9 +1858,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED int __pyx_v_r2_int; __pyx_t_5numpy_int8_t __pyx_v_val; __pyx_t_5numpy_int8_t __pyx_v_curr; - PyArrayObject *__pyx_v_result = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_result; - __Pyx_Buffer __pyx_pybuffer_result; + __Pyx_memviewslice __pyx_v_result = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -1948,7 +1866,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyArrayObject *__pyx_t_6 = NULL; + __Pyx_memviewslice __pyx_t_6 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; @@ -1963,47 +1881,46 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED int __pyx_t_18; int __pyx_t_19; int __pyx_t_20; + __pyx_t_5numpy_int8_t __pyx_t_21; + __pyx_t_5numpy_int8_t __pyx_t_22; + __pyx_t_5numpy_int8_t __pyx_t_23; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("binary_dilation", 0); - __pyx_pybuffer_result.pybuffer.buf = NULL; - __pyx_pybuffer_result.refcount = 0; - __pyx_pybuffernd_result.data = NULL; - __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; - /* "pyFAI/ext/morphology.pyx":59 - * @return: ndiamge - * """ - * cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) # <<<<<<<<<<<<<< + /* "pyFAI/ext/morphology.pyx":58 + * cdef: + * int x, y, i, j, size_x, size_y, px, py, + * int r_int = int(radius), r2_int = int(radius * radius) # <<<<<<<<<<<<<< * size_y = image.shape[0] * size_x = image.shape[1] */ __pyx_v_r_int = ((int)__pyx_v_radius); __pyx_v_r2_int = ((int)(__pyx_v_radius * __pyx_v_radius)); - /* "pyFAI/ext/morphology.pyx":60 - * """ - * cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) + /* "pyFAI/ext/morphology.pyx":59 + * int x, y, i, j, size_x, size_y, px, py, + * int r_int = int(radius), r2_int = int(radius * radius) * size_y = image.shape[0] # <<<<<<<<<<<<<< * size_x = image.shape[1] - * cdef numpy.int8_t val, curr + * cdef: */ __pyx_v_size_y = (__pyx_v_image.shape[0]); - /* "pyFAI/ext/morphology.pyx":61 - * cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) + /* "pyFAI/ext/morphology.pyx":60 + * int r_int = int(radius), r2_int = int(radius * radius) * size_y = image.shape[0] * size_x = image.shape[1] # <<<<<<<<<<<<<< - * cdef numpy.int8_t val, curr - * cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) + * cdef: + * numpy.int8_t val, curr */ __pyx_v_size_x = (__pyx_v_image.shape[1]); /* "pyFAI/ext/morphology.pyx":63 - * size_x = image.shape[1] - * cdef numpy.int8_t val, curr - * cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) # <<<<<<<<<<<<<< + * cdef: + * numpy.int8_t val, curr + * numpy.int8_t[:, ::1] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) # <<<<<<<<<<<<<< * * for y in range(size_y): */ @@ -2039,26 +1956,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { - __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_result.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_result.diminfo[1].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_result.diminfo[1].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[1]; - } - } - __pyx_t_6 = 0; - __pyx_v_result = ((PyArrayObject *)__pyx_t_5); - __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(__pyx_t_5); + if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_result = __pyx_t_6; + __pyx_t_6.memview = NULL; + __pyx_t_6.data = NULL; /* "pyFAI/ext/morphology.pyx":65 - * cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) + * numpy.int8_t[:, ::1] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) * * for y in range(size_y): # <<<<<<<<<<<<<< * for x in range(size_x): - * val = image[y,x] + * val = image[y, x] */ __pyx_t_7 = __pyx_v_size_y; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { @@ -2068,8 +1978,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED * * for y in range(size_y): * for x in range(size_x): # <<<<<<<<<<<<<< - * val = image[y,x] - * for j in range(-r_int, r_int+1): + * val = image[y, x] + * for j in range(-r_int, r_int + 1): */ __pyx_t_9 = __pyx_v_size_x; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { @@ -2078,40 +1988,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED /* "pyFAI/ext/morphology.pyx":67 * for y in range(size_y): * for x in range(size_x): - * val = image[y,x] # <<<<<<<<<<<<<< - * for j in range(-r_int, r_int+1): + * val = image[y, x] # <<<<<<<<<<<<<< + * for j in range(-r_int, r_int + 1): * py = y + j */ __pyx_t_11 = __pyx_v_y; __pyx_t_12 = __pyx_v_x; - __pyx_v_val = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image.data + __pyx_t_11 * __pyx_v_image.strides[0]) ) + __pyx_t_12 * __pyx_v_image.strides[1]) ))); + __pyx_v_val = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_image.data + __pyx_t_11 * __pyx_v_image.strides[0]) )) + __pyx_t_12)) ))); /* "pyFAI/ext/morphology.pyx":68 * for x in range(size_x): - * val = image[y,x] - * for j in range(-r_int, r_int+1): # <<<<<<<<<<<<<< + * val = image[y, x] + * for j in range(-r_int, r_int + 1): # <<<<<<<<<<<<<< * py = y + j - * if py<0 or py>=size_y: continue + * if py < 0 or py >= size_y: */ __pyx_t_13 = (__pyx_v_r_int + 1); for (__pyx_t_14 = (-__pyx_v_r_int); __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_j = __pyx_t_14; /* "pyFAI/ext/morphology.pyx":69 - * val = image[y,x] - * for j in range(-r_int, r_int+1): + * val = image[y, x] + * for j in range(-r_int, r_int + 1): * py = y + j # <<<<<<<<<<<<<< - * if py<0 or py>=size_y: continue - * for i in range(-r_int, r_int+1): + * if py < 0 or py >= size_y: + * continue */ __pyx_v_py = (__pyx_v_y + __pyx_v_j); /* "pyFAI/ext/morphology.pyx":70 - * for j in range(-r_int, r_int+1): + * for j in range(-r_int, r_int + 1): * py = y + j - * if py<0 or py>=size_y: continue # <<<<<<<<<<<<<< - * for i in range(-r_int, r_int+1): - * px = x + i + * if py < 0 or py >= size_y: # <<<<<<<<<<<<<< + * continue + * for i in range(-r_int, r_int + 1): */ __pyx_t_16 = ((__pyx_v_py < 0) != 0); if (!__pyx_t_16) { @@ -2123,35 +2033,43 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED __pyx_t_15 = __pyx_t_16; __pyx_L10_bool_binop_done:; if (__pyx_t_15) { + + /* "pyFAI/ext/morphology.pyx":71 + * py = y + j + * if py < 0 or py >= size_y: + * continue # <<<<<<<<<<<<<< + * for i in range(-r_int, r_int + 1): + * px = x + i + */ goto __pyx_L7_continue; } - /* "pyFAI/ext/morphology.pyx":71 - * py = y + j - * if py<0 or py>=size_y: continue - * for i in range(-r_int, r_int+1): # <<<<<<<<<<<<<< + /* "pyFAI/ext/morphology.pyx":72 + * if py < 0 or py >= size_y: + * continue + * for i in range(-r_int, r_int + 1): # <<<<<<<<<<<<<< * px = x + i - * if px<0 or px>=size_x: continue + * if (px < 0) or (px >= size_x): */ __pyx_t_17 = (__pyx_v_r_int + 1); for (__pyx_t_18 = (-__pyx_v_r_int); __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_i = __pyx_t_18; - /* "pyFAI/ext/morphology.pyx":72 - * if py<0 or py>=size_y: continue - * for i in range(-r_int, r_int+1): + /* "pyFAI/ext/morphology.pyx":73 + * continue + * for i in range(-r_int, r_int + 1): * px = x + i # <<<<<<<<<<<<<< - * if px<0 or px>=size_x: continue - * if i*i + j*j <= r2_int: + * if (px < 0) or (px >= size_x): + * continue */ __pyx_v_px = (__pyx_v_x + __pyx_v_i); - /* "pyFAI/ext/morphology.pyx":73 - * for i in range(-r_int, r_int+1): + /* "pyFAI/ext/morphology.pyx":74 + * for i in range(-r_int, r_int + 1): * px = x + i - * if px<0 or px>=size_x: continue # <<<<<<<<<<<<<< - * if i*i + j*j <= r2_int: - * curr = image[py,px] + * if (px < 0) or (px >= size_x): # <<<<<<<<<<<<<< + * continue + * if i * i + j * j <= r2_int: */ __pyx_t_16 = ((__pyx_v_px < 0) != 0); if (!__pyx_t_16) { @@ -2163,38 +2081,53 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED __pyx_t_15 = __pyx_t_16; __pyx_L15_bool_binop_done:; if (__pyx_t_15) { + + /* "pyFAI/ext/morphology.pyx":75 + * px = x + i + * if (px < 0) or (px >= size_x): + * continue # <<<<<<<<<<<<<< + * if i * i + j * j <= r2_int: + * curr = image[py, px] + */ goto __pyx_L12_continue; } - /* "pyFAI/ext/morphology.pyx":74 - * px = x + i - * if px<0 or px>=size_x: continue - * if i*i + j*j <= r2_int: # <<<<<<<<<<<<<< - * curr = image[py,px] - * val = MAX(val, curr) + /* "pyFAI/ext/morphology.pyx":76 + * if (px < 0) or (px >= size_x): + * continue + * if i * i + j * j <= r2_int: # <<<<<<<<<<<<<< + * curr = image[py, px] + * val = max(val, curr) */ __pyx_t_15 = ((((__pyx_v_i * __pyx_v_i) + (__pyx_v_j * __pyx_v_j)) <= __pyx_v_r2_int) != 0); if (__pyx_t_15) { - /* "pyFAI/ext/morphology.pyx":75 - * if px<0 or px>=size_x: continue - * if i*i + j*j <= r2_int: - * curr = image[py,px] # <<<<<<<<<<<<<< - * val = MAX(val, curr) - * result[y,x] = val + /* "pyFAI/ext/morphology.pyx":77 + * continue + * if i * i + j * j <= r2_int: + * curr = image[py, px] # <<<<<<<<<<<<<< + * val = max(val, curr) + * result[y, x] = val */ __pyx_t_19 = __pyx_v_py; __pyx_t_20 = __pyx_v_px; - __pyx_v_curr = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image.data + __pyx_t_19 * __pyx_v_image.strides[0]) ) + __pyx_t_20 * __pyx_v_image.strides[1]) ))); - - /* "pyFAI/ext/morphology.pyx":76 - * if i*i + j*j <= r2_int: - * curr = image[py,px] - * val = MAX(val, curr) # <<<<<<<<<<<<<< - * result[y,x] = val - * return result - */ - __pyx_v_val = __pyx_f_5pyFAI_3ext_10morphology_MAX(__pyx_v_val, __pyx_v_curr); + __pyx_v_curr = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_image.data + __pyx_t_19 * __pyx_v_image.strides[0]) )) + __pyx_t_20)) ))); + + /* "pyFAI/ext/morphology.pyx":78 + * if i * i + j * j <= r2_int: + * curr = image[py, px] + * val = max(val, curr) # <<<<<<<<<<<<<< + * result[y, x] = val + * return numpy.asarray(result) + */ + __pyx_t_21 = __pyx_v_curr; + __pyx_t_22 = __pyx_v_val; + if (((__pyx_t_21 > __pyx_t_22) != 0)) { + __pyx_t_23 = __pyx_t_21; + } else { + __pyx_t_23 = __pyx_t_22; + } + __pyx_v_val = __pyx_t_23; goto __pyx_L17; } __pyx_L17:; @@ -2203,37 +2136,70 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED __pyx_L7_continue:; } - /* "pyFAI/ext/morphology.pyx":77 - * curr = image[py,px] - * val = MAX(val, curr) - * result[y,x] = val # <<<<<<<<<<<<<< - * return result + /* "pyFAI/ext/morphology.pyx":79 + * curr = image[py, px] + * val = max(val, curr) + * result[y, x] = val # <<<<<<<<<<<<<< + * return numpy.asarray(result) * */ __pyx_t_14 = __pyx_v_y; __pyx_t_18 = __pyx_v_x; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_result.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_result.diminfo[1].strides) = __pyx_v_val; + *((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_result.data + __pyx_t_14 * __pyx_v_result.strides[0]) )) + __pyx_t_18)) )) = __pyx_v_val; } } - /* "pyFAI/ext/morphology.pyx":78 - * val = MAX(val, curr) - * result[y,x] = val - * return result # <<<<<<<<<<<<<< + /* "pyFAI/ext/morphology.pyx":80 + * val = max(val, curr) + * result[y, x] = val + * return numpy.asarray(result) # <<<<<<<<<<<<<< + * * - * @cython.boundscheck(False) */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_result)); - __pyx_r = ((PyObject *)__pyx_v_result); + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_result, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_5); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; - /* "pyFAI/ext/morphology.pyx":48 - * @cython.boundscheck(False) + /* "pyFAI/ext/morphology.pyx":44 * @cython.wraparound(False) - * def binary_dilation(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def binary_dilation(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): * """ - * Return fast binary morphological dilation of an image. */ /* function exit code */ @@ -2243,34 +2209,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_binary_dilation(CYTHON_UNUSED __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_AddTraceback("pyFAI.ext.morphology.binary_dilation", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); + __PYX_XDEC_MEMVIEW(&__pyx_v_result, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_image, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "pyFAI/ext/morphology.pyx":82 - * @cython.boundscheck(False) +/* "pyFAI/ext/morphology.pyx":86 * @cython.wraparound(False) - * def binary_erosion(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< - * """ - * Return fast binary morphological erosion of an image. + * @cython.initializedcheck(False) + * def binary_erosion(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): + * """Return fast binary morphological erosion of an image. */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_3binary_erosion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_10morphology_2binary_erosion[] = "\n Return fast binary morphological erosion of an image.\n\n Morphological erosion sets a pixel at (i,j) to the minimum over all pixels in the neighborhood centered at (i,j).\n Erosion shrinks bright regions and enlarges dark regions.\n\n @param image : ndarray\n @param radius: float\n @return: ndiamge\n "; +static char __pyx_doc_5pyFAI_3ext_10morphology_2binary_erosion[] = "binary_erosion(__Pyx_memviewslice image, float radius=1.0)\nReturn fast binary morphological erosion of an image.\n\n Morphological erosion sets a pixel at (i,j) to the minimum over all pixels \n in the neighborhood centered at (i,j).\n Erosion shrinks bright regions and enlarges dark regions.\n\n :param image : ndarray\n :param radius: float\n :return: ndiamge\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_10morphology_3binary_erosion = {"binary_erosion", (PyCFunction)__pyx_pw_5pyFAI_3ext_10morphology_3binary_erosion, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_10morphology_2binary_erosion}; static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_3binary_erosion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -2305,7 +2265,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_3binary_erosion(PyObject *__p } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "binary_erosion") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "binary_erosion") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2315,16 +2275,16 @@ static PyObject *__pyx_pw_5pyFAI_3ext_10morphology_3binary_erosion(PyObject *__p default: goto __pyx_L5_argtuple_error; } } - __pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(values[0]); if (unlikely(!__pyx_v_image.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(values[0]); if (unlikely(!__pyx_v_image.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;} if (values[1]) { - __pyx_v_radius = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_radius == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_radius = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_radius == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_radius = ((float)1.0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("binary_erosion", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("binary_erosion", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.morphology.binary_erosion", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2350,9 +2310,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED int __pyx_v_r2_int; __pyx_t_5numpy_int8_t __pyx_v_val; __pyx_t_5numpy_int8_t __pyx_v_curr; - PyArrayObject *__pyx_v_result = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_result; - __Pyx_Buffer __pyx_pybuffer_result; + __Pyx_memviewslice __pyx_v_result = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -2360,7 +2318,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyArrayObject *__pyx_t_6 = NULL; + __Pyx_memviewslice __pyx_t_6 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; @@ -2375,69 +2333,68 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED int __pyx_t_18; int __pyx_t_19; int __pyx_t_20; + __pyx_t_5numpy_int8_t __pyx_t_21; + __pyx_t_5numpy_int8_t __pyx_t_22; + __pyx_t_5numpy_int8_t __pyx_t_23; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("binary_erosion", 0); - __pyx_pybuffer_result.pybuffer.buf = NULL; - __pyx_pybuffer_result.refcount = 0; - __pyx_pybuffernd_result.data = NULL; - __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; - /* "pyFAI/ext/morphology.pyx":93 - * @return: ndiamge - * """ - * cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) # <<<<<<<<<<<<<< + /* "pyFAI/ext/morphology.pyx":100 + * cdef: + * int x, y, i, j, size_x, size_y, px, py, + * int r_int = int(radius), r2_int = int(radius * radius) # <<<<<<<<<<<<<< * size_y = image.shape[0] * size_x = image.shape[1] */ __pyx_v_r_int = ((int)__pyx_v_radius); __pyx_v_r2_int = ((int)(__pyx_v_radius * __pyx_v_radius)); - /* "pyFAI/ext/morphology.pyx":94 - * """ - * cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) + /* "pyFAI/ext/morphology.pyx":101 + * int x, y, i, j, size_x, size_y, px, py, + * int r_int = int(radius), r2_int = int(radius * radius) * size_y = image.shape[0] # <<<<<<<<<<<<<< * size_x = image.shape[1] - * cdef numpy.int8_t val, curr + * cdef: */ __pyx_v_size_y = (__pyx_v_image.shape[0]); - /* "pyFAI/ext/morphology.pyx":95 - * cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) + /* "pyFAI/ext/morphology.pyx":102 + * int r_int = int(radius), r2_int = int(radius * radius) * size_y = image.shape[0] * size_x = image.shape[1] # <<<<<<<<<<<<<< - * cdef numpy.int8_t val, curr - * cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) + * cdef: + * numpy.int8_t val, curr */ __pyx_v_size_x = (__pyx_v_image.shape[1]); - /* "pyFAI/ext/morphology.pyx":97 - * size_x = image.shape[1] - * cdef numpy.int8_t val, curr - * cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) # <<<<<<<<<<<<<< + /* "pyFAI/ext/morphology.pyx":105 + * cdef: + * numpy.int8_t val, curr + * numpy.int8_t[:, ::1] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) # <<<<<<<<<<<<<< * * for y in range(size_y): */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_size_y); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_size_y); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size_x); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size_x); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); @@ -2445,85 +2402,78 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED __Pyx_GIVEREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { - __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_result.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } else {__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_result.diminfo[1].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_result.diminfo[1].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[1]; - } - } - __pyx_t_6 = 0; - __pyx_v_result = ((PyArrayObject *)__pyx_t_5); - __pyx_t_5 = 0; + __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(__pyx_t_5); + if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_result = __pyx_t_6; + __pyx_t_6.memview = NULL; + __pyx_t_6.data = NULL; - /* "pyFAI/ext/morphology.pyx":99 - * cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) + /* "pyFAI/ext/morphology.pyx":107 + * numpy.int8_t[:, ::1] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) * * for y in range(size_y): # <<<<<<<<<<<<<< * for x in range(size_x): - * val = image[y,x] + * val = image[y, x] */ __pyx_t_7 = __pyx_v_size_y; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_y = __pyx_t_8; - /* "pyFAI/ext/morphology.pyx":100 + /* "pyFAI/ext/morphology.pyx":108 * * for y in range(size_y): * for x in range(size_x): # <<<<<<<<<<<<<< - * val = image[y,x] - * for j in range(-r_int, r_int+1): + * val = image[y, x] + * for j in range(-r_int, r_int + 1): */ __pyx_t_9 = __pyx_v_size_x; for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { __pyx_v_x = __pyx_t_10; - /* "pyFAI/ext/morphology.pyx":101 + /* "pyFAI/ext/morphology.pyx":109 * for y in range(size_y): * for x in range(size_x): - * val = image[y,x] # <<<<<<<<<<<<<< - * for j in range(-r_int, r_int+1): + * val = image[y, x] # <<<<<<<<<<<<<< + * for j in range(-r_int, r_int + 1): * py = y + j */ __pyx_t_11 = __pyx_v_y; __pyx_t_12 = __pyx_v_x; - __pyx_v_val = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image.data + __pyx_t_11 * __pyx_v_image.strides[0]) ) + __pyx_t_12 * __pyx_v_image.strides[1]) ))); + __pyx_v_val = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_image.data + __pyx_t_11 * __pyx_v_image.strides[0]) )) + __pyx_t_12)) ))); - /* "pyFAI/ext/morphology.pyx":102 + /* "pyFAI/ext/morphology.pyx":110 * for x in range(size_x): - * val = image[y,x] - * for j in range(-r_int, r_int+1): # <<<<<<<<<<<<<< + * val = image[y, x] + * for j in range(-r_int, r_int + 1): # <<<<<<<<<<<<<< * py = y + j - * if py<0 or py>=size_y: continue + * if (py < 0) or (py >= size_y): */ __pyx_t_13 = (__pyx_v_r_int + 1); for (__pyx_t_14 = (-__pyx_v_r_int); __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_j = __pyx_t_14; - /* "pyFAI/ext/morphology.pyx":103 - * val = image[y,x] - * for j in range(-r_int, r_int+1): + /* "pyFAI/ext/morphology.pyx":111 + * val = image[y, x] + * for j in range(-r_int, r_int + 1): * py = y + j # <<<<<<<<<<<<<< - * if py<0 or py>=size_y: continue - * for i in range(-r_int, r_int+1): + * if (py < 0) or (py >= size_y): + * continue */ __pyx_v_py = (__pyx_v_y + __pyx_v_j); - /* "pyFAI/ext/morphology.pyx":104 - * for j in range(-r_int, r_int+1): + /* "pyFAI/ext/morphology.pyx":112 + * for j in range(-r_int, r_int + 1): * py = y + j - * if py<0 or py>=size_y: continue # <<<<<<<<<<<<<< - * for i in range(-r_int, r_int+1): - * px = x + i + * if (py < 0) or (py >= size_y): # <<<<<<<<<<<<<< + * continue + * for i in range(-r_int, r_int + 1): */ __pyx_t_16 = ((__pyx_v_py < 0) != 0); if (!__pyx_t_16) { @@ -2535,35 +2485,43 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED __pyx_t_15 = __pyx_t_16; __pyx_L10_bool_binop_done:; if (__pyx_t_15) { + + /* "pyFAI/ext/morphology.pyx":113 + * py = y + j + * if (py < 0) or (py >= size_y): + * continue # <<<<<<<<<<<<<< + * for i in range(-r_int, r_int + 1): + * px = x + i + */ goto __pyx_L7_continue; } - /* "pyFAI/ext/morphology.pyx":105 - * py = y + j - * if py<0 or py>=size_y: continue - * for i in range(-r_int, r_int+1): # <<<<<<<<<<<<<< + /* "pyFAI/ext/morphology.pyx":114 + * if (py < 0) or (py >= size_y): + * continue + * for i in range(-r_int, r_int + 1): # <<<<<<<<<<<<<< * px = x + i - * if px<0 or px>=size_x: continue + * if (px < 0) or (px >= size_x): */ __pyx_t_17 = (__pyx_v_r_int + 1); for (__pyx_t_18 = (-__pyx_v_r_int); __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) { __pyx_v_i = __pyx_t_18; - /* "pyFAI/ext/morphology.pyx":106 - * if py<0 or py>=size_y: continue - * for i in range(-r_int, r_int+1): + /* "pyFAI/ext/morphology.pyx":115 + * continue + * for i in range(-r_int, r_int + 1): * px = x + i # <<<<<<<<<<<<<< - * if px<0 or px>=size_x: continue - * if i*i + j*j <= r2_int: + * if (px < 0) or (px >= size_x): + * continue */ __pyx_v_px = (__pyx_v_x + __pyx_v_i); - /* "pyFAI/ext/morphology.pyx":107 - * for i in range(-r_int, r_int+1): + /* "pyFAI/ext/morphology.pyx":116 + * for i in range(-r_int, r_int + 1): * px = x + i - * if px<0 or px>=size_x: continue # <<<<<<<<<<<<<< - * if i*i + j*j <= r2_int: - * curr = image[py,px] + * if (px < 0) or (px >= size_x): # <<<<<<<<<<<<<< + * continue + * if i * i + j * j <= r2_int: */ __pyx_t_16 = ((__pyx_v_px < 0) != 0); if (!__pyx_t_16) { @@ -2575,38 +2533,53 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED __pyx_t_15 = __pyx_t_16; __pyx_L15_bool_binop_done:; if (__pyx_t_15) { + + /* "pyFAI/ext/morphology.pyx":117 + * px = x + i + * if (px < 0) or (px >= size_x): + * continue # <<<<<<<<<<<<<< + * if i * i + j * j <= r2_int: + * curr = image[py, px] + */ goto __pyx_L12_continue; } - /* "pyFAI/ext/morphology.pyx":108 - * px = x + i - * if px<0 or px>=size_x: continue - * if i*i + j*j <= r2_int: # <<<<<<<<<<<<<< - * curr = image[py,px] - * val = MIN(val, curr) + /* "pyFAI/ext/morphology.pyx":118 + * if (px < 0) or (px >= size_x): + * continue + * if i * i + j * j <= r2_int: # <<<<<<<<<<<<<< + * curr = image[py, px] + * val = min(val, curr) */ __pyx_t_15 = ((((__pyx_v_i * __pyx_v_i) + (__pyx_v_j * __pyx_v_j)) <= __pyx_v_r2_int) != 0); if (__pyx_t_15) { - /* "pyFAI/ext/morphology.pyx":109 - * if px<0 or px>=size_x: continue - * if i*i + j*j <= r2_int: - * curr = image[py,px] # <<<<<<<<<<<<<< - * val = MIN(val, curr) - * result[y,x] = val + /* "pyFAI/ext/morphology.pyx":119 + * continue + * if i * i + j * j <= r2_int: + * curr = image[py, px] # <<<<<<<<<<<<<< + * val = min(val, curr) + * result[y, x] = val */ __pyx_t_19 = __pyx_v_py; __pyx_t_20 = __pyx_v_px; - __pyx_v_curr = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image.data + __pyx_t_19 * __pyx_v_image.strides[0]) ) + __pyx_t_20 * __pyx_v_image.strides[1]) ))); - - /* "pyFAI/ext/morphology.pyx":110 - * if i*i + j*j <= r2_int: - * curr = image[py,px] - * val = MIN(val, curr) # <<<<<<<<<<<<<< - * result[y,x] = val - * return result - */ - __pyx_v_val = __pyx_f_5pyFAI_3ext_10morphology_MIN(__pyx_v_val, __pyx_v_curr); + __pyx_v_curr = (*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_image.data + __pyx_t_19 * __pyx_v_image.strides[0]) )) + __pyx_t_20)) ))); + + /* "pyFAI/ext/morphology.pyx":120 + * if i * i + j * j <= r2_int: + * curr = image[py, px] + * val = min(val, curr) # <<<<<<<<<<<<<< + * result[y, x] = val + * return numpy.asarray(result) + */ + __pyx_t_21 = __pyx_v_curr; + __pyx_t_22 = __pyx_v_val; + if (((__pyx_t_21 < __pyx_t_22) != 0)) { + __pyx_t_23 = __pyx_t_21; + } else { + __pyx_t_23 = __pyx_t_22; + } + __pyx_v_val = __pyx_t_23; goto __pyx_L17; } __pyx_L17:; @@ -2615,36 +2588,67 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED __pyx_L7_continue:; } - /* "pyFAI/ext/morphology.pyx":111 - * curr = image[py,px] - * val = MIN(val, curr) - * result[y,x] = val # <<<<<<<<<<<<<< - * return result - * + /* "pyFAI/ext/morphology.pyx":121 + * curr = image[py, px] + * val = min(val, curr) + * result[y, x] = val # <<<<<<<<<<<<<< + * return numpy.asarray(result) */ __pyx_t_14 = __pyx_v_y; __pyx_t_18 = __pyx_v_x; - *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_result.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_result.diminfo[1].strides) = __pyx_v_val; + *((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_result.data + __pyx_t_14 * __pyx_v_result.strides[0]) )) + __pyx_t_18)) )) = __pyx_v_val; } } - /* "pyFAI/ext/morphology.pyx":112 - * val = MIN(val, curr) - * result[y,x] = val - * return result # <<<<<<<<<<<<<< - * + /* "pyFAI/ext/morphology.pyx":122 + * val = min(val, curr) + * result[y, x] = val + * return numpy.asarray(result) # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_result)); - __pyx_r = ((PyObject *)__pyx_v_result); + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_result, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_int8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_int8_t, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_5); + } else { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; - /* "pyFAI/ext/morphology.pyx":82 - * @cython.boundscheck(False) + /* "pyFAI/ext/morphology.pyx":86 * @cython.wraparound(False) - * def binary_erosion(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< - * """ - * Return fast binary morphological erosion of an image. + * @cython.initializedcheck(False) + * def binary_erosion(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): + * """Return fast binary morphological erosion of an image. */ /* function exit code */ @@ -2654,24 +2658,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10morphology_2binary_erosion(CYTHON_UNUSED __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_AddTraceback("pyFAI.ext.morphology.binary_erosion", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; - goto __pyx_L2; __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); + __PYX_XDEC_MEMVIEW(&__pyx_v_result, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_image, 1); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -2721,7 +2719,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -2734,7 +2732,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -2743,7 +2741,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -2752,7 +2750,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -2761,7 +2759,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -2771,7 +2769,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -2783,7 +2781,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -2794,7 +2792,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -2808,7 +2806,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -2820,7 +2818,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -2834,7 +2832,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -2848,7 +2846,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -2860,7 +2858,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -2874,7 +2872,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -2883,7 +2881,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -2892,7 +2890,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -2902,7 +2900,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -2911,7 +2909,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -2920,7 +2918,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -2931,7 +2929,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -2940,7 +2938,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -2953,7 +2951,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -2962,7 +2960,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -2973,7 +2971,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -2982,7 +2980,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -2991,7 +2989,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -3000,7 +2998,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -3009,7 +3007,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -3021,7 +3019,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -3030,7 +3028,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -3048,7 +3046,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -3064,7 +3062,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -3079,7 +3077,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -3089,7 +3087,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -3099,7 +3097,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -3119,7 +3117,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -3137,7 +3135,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -3151,7 +3149,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -3160,7 +3158,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -3171,7 +3169,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -3182,7 +3180,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -3193,7 +3191,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -3204,7 +3202,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -3215,7 +3213,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -3226,7 +3224,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -3237,7 +3235,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -3248,7 +3246,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -3259,7 +3257,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -3270,7 +3268,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -3281,7 +3279,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -3292,7 +3290,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -3303,7 +3301,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -3314,7 +3312,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -3325,7 +3323,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -3336,7 +3334,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -3348,7 +3346,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -3374,7 +3372,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -3383,7 +3381,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -3395,7 +3393,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -3404,7 +3402,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -3413,7 +3411,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -3422,7 +3420,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -3432,7 +3430,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -3442,7 +3440,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3474,7 +3472,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -3498,7 +3496,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -3508,7 +3506,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -3520,7 +3518,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3530,7 +3528,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -3542,7 +3540,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -3554,7 +3552,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -3571,7 +3569,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -3585,7 +3583,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -3604,7 +3602,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -3621,7 +3619,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -3635,7 +3633,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -3654,7 +3652,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -3671,7 +3669,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -3685,7 +3683,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -3704,7 +3702,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -3721,7 +3719,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -3735,7 +3733,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -3754,7 +3752,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -3771,7 +3769,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -3785,7 +3783,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -3804,7 +3802,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -3836,7 +3834,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -3845,7 +3843,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -3854,7 +3852,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -3876,7 +3874,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -3889,7 +3887,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -3928,7 +3926,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -3945,7 +3943,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -3959,7 +3957,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -3979,7 +3977,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -3997,7 +3995,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -4011,7 +4009,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -4027,7 +4025,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -4036,7 +4034,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -4045,7 +4043,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -4056,7 +4054,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -4066,7 +4064,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -4076,7 +4074,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -4088,7 +4086,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -4098,7 +4096,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -4112,7 +4110,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -4130,7 +4128,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -4148,7 +4146,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -4166,7 +4164,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -4184,7 +4182,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -4202,7 +4200,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -4220,7 +4218,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -4238,7 +4236,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -4256,7 +4254,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -4274,7 +4272,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -4292,7 +4290,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -4310,7 +4308,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -4328,7 +4326,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -4346,7 +4344,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -4366,7 +4364,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -4386,7 +4384,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -4406,7 +4404,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -4425,7 +4423,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -4448,7 +4446,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -4460,7 +4458,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -4472,7 +4470,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -4482,7 +4480,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -4492,7 +4490,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -4517,7 +4515,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -4532,7 +4530,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -4543,7 +4541,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -4555,7 +4553,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -4564,7 +4562,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -4575,7 +4573,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -4584,7 +4582,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -4593,7 +4591,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -4605,7 +4603,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -4619,7 +4617,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -4629,7 +4627,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -4643,7 +4641,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -4654,7 +4652,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -15981,7 +15979,7 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_31_05_2016, __pyx_k_31_05_2016, sizeof(__pyx_k_31_05_2016), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_A_few_binary_morphology_operati, __pyx_k_A_few_binary_morphology_operati, sizeof(__pyx_k_A_few_binary_morphology_operati), 0, 0, 1, 0}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, @@ -16008,6 +16006,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1}, + {&__pyx_n_s_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 0, 0, 1, 1}, {&__pyx_n_s_author, __pyx_k_author, sizeof(__pyx_k_author), 0, 0, 1, 1}, {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1}, {&__pyx_n_s_binary_dilation, __pyx_k_binary_dilation, sizeof(__pyx_k_binary_dilation), 0, 0, 1, 1}, @@ -16110,7 +16109,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -16121,7 +16120,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -16132,7 +16131,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16143,7 +16142,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -16154,7 +16153,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16165,7 +16164,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -16297,29 +16296,29 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "pyFAI/ext/morphology.pyx":48 - * @cython.boundscheck(False) + /* "pyFAI/ext/morphology.pyx":44 * @cython.wraparound(False) - * def binary_dilation(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def binary_dilation(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): * """ - * Return fast binary morphological dilation of an image. */ - __pyx_tuple__18 = PyTuple_Pack(15, __pyx_n_s_image, __pyx_n_s_radius, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_size_x, __pyx_n_s_size_y, __pyx_n_s_px, __pyx_n_s_py, __pyx_n_s_r_int, __pyx_n_s_r2_int, __pyx_n_s_val, __pyx_n_s_curr, __pyx_n_s_result); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__18 = PyTuple_Pack(15, __pyx_n_s_image, __pyx_n_s_radius, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_size_x, __pyx_n_s_size_y, __pyx_n_s_px, __pyx_n_s_py, __pyx_n_s_r_int, __pyx_n_s_r2_int, __pyx_n_s_val, __pyx_n_s_curr, __pyx_n_s_result); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_binary_dilation, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_binary_dilation, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/morphology.pyx":82 - * @cython.boundscheck(False) + /* "pyFAI/ext/morphology.pyx":86 * @cython.wraparound(False) - * def binary_erosion(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< - * """ - * Return fast binary morphological erosion of an image. + * @cython.initializedcheck(False) + * def binary_erosion(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): + * """Return fast binary morphological erosion of an image. */ - __pyx_tuple__20 = PyTuple_Pack(15, __pyx_n_s_image, __pyx_n_s_radius, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_size_x, __pyx_n_s_size_y, __pyx_n_s_px, __pyx_n_s_py, __pyx_n_s_r_int, __pyx_n_s_r2_int, __pyx_n_s_val, __pyx_n_s_curr, __pyx_n_s_result); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__20 = PyTuple_Pack(15, __pyx_n_s_image, __pyx_n_s_radius, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_size_x, __pyx_n_s_size_y, __pyx_n_s_px, __pyx_n_s_py, __pyx_n_s_r_int, __pyx_n_s_r2_int, __pyx_n_s_val, __pyx_n_s_curr, __pyx_n_s_result); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); - __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_binary_erosion, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_binary_erosion, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -16535,7 +16534,7 @@ PyMODINIT_FUNC PyInit_morphology(void) * """ * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16543,7 +16542,7 @@ PyMODINIT_FUNC PyInit_morphology(void) * """ * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __status__ = "stable" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16551,15 +16550,15 @@ PyMODINIT_FUNC PyInit_morphology(void) /* "pyFAI/ext/morphology.pyx":33 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "31/05/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __status__ = "stable" * __license__ = "MIT" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_31_05_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/morphology.pyx":34 * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __status__ = "stable" # <<<<<<<<<<<<<< * __license__ = "MIT" * import cython @@ -16567,7 +16566,7 @@ PyMODINIT_FUNC PyInit_morphology(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/morphology.pyx":35 - * __date__ = "31/05/2016" + * __date__ = "01/12/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< * import cython @@ -16587,28 +16586,28 @@ PyMODINIT_FUNC PyInit_morphology(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/morphology.pyx":48 - * @cython.boundscheck(False) + /* "pyFAI/ext/morphology.pyx":44 * @cython.wraparound(False) - * def binary_dilation(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def binary_dilation(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): * """ - * Return fast binary morphological dilation of an image. */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_10morphology_1binary_dilation, NULL, __pyx_n_s_pyFAI_ext_morphology); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_10morphology_1binary_dilation, NULL, __pyx_n_s_pyFAI_ext_morphology); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_binary_dilation, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_binary_dilation, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/morphology.pyx":82 - * @cython.boundscheck(False) + /* "pyFAI/ext/morphology.pyx":86 * @cython.wraparound(False) - * def binary_erosion(numpy.int8_t[:,:] image, float radius=1.0): # <<<<<<<<<<<<<< - * """ - * Return fast binary morphological erosion of an image. + * @cython.initializedcheck(False) + * def binary_erosion(numpy.int8_t[:, ::1] image, # <<<<<<<<<<<<<< + * float radius=1.0): + * """Return fast binary morphological erosion of an image. */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_10morphology_3binary_erosion, NULL, __pyx_n_s_pyFAI_ext_morphology); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_10morphology_3binary_erosion, NULL, __pyx_n_s_pyFAI_ext_morphology); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_binary_erosion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_binary_erosion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyFAI/ext/morphology.pyx":1 @@ -16965,17 +16964,54 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg } #endif -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); } - if (likely(PyObject_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; + return result; +} +#endif + +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; } +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { +#else + if (likely(PyCFunction_Check(func))) { +#endif + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject* args = PyTuple_Pack(1, arg); + return (likely(args)) ? __Pyx_PyObject_Call(func, args, NULL) : NULL; +} +#endif static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { unsigned int n = 1; @@ -17526,37 +17562,6 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { __Pyx_ReleaseBuffer(info); } -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_Restore(type, value, tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(type, value, tb); -#endif -} - static int __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, int ndim, @@ -17692,6 +17697,37 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice, } } +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyThreadState *tstate = PyThreadState_GET(); + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_Restore(type, value, tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(type, value, tb); +#endif +} + #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { @@ -17864,6 +17900,18 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(PyObject_TypeCheck(obj, type))) + return 1; + PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", + Py_TYPE(obj)->tp_name, type->tp_name); + return 0; +} + static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", @@ -18278,55 +18326,6 @@ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, } } -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject* args = PyTuple_Pack(1, arg); - return (likely(args)) ? __Pyx_PyObject_Call(func, args, NULL) : NULL; -} -#endif - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { #if PY_VERSION_HEX >= 0x02070000 PyObject *ob = PyCapsule_New(vtable, 0, 0); @@ -18820,17 +18819,17 @@ static int __Pyx_ValidateAndInit_memviewslice( return retval; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 2, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, stack, &result, obj); if (unlikely(retcode == -1)) @@ -19010,6 +19009,138 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { } } +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int8(npy_int8 value) { + const npy_int8 neg_one = (npy_int8) -1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(npy_int8) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(npy_int8) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); + } else if (sizeof(npy_int8) <= sizeof(unsigned long long)) { + return PyLong_FromUnsignedLongLong((unsigned long long) value); + } + } else { + if (sizeof(npy_int8) <= sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(npy_int8) <= sizeof(long long)) { + return PyLong_FromLongLong((long long) value); + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(npy_int8), + little, !is_unsigned); + } +} + +static CYTHON_INLINE npy_int8 __Pyx_PyInt_As_npy_int8(PyObject *x) { + const npy_int8 neg_one = (npy_int8) -1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(npy_int8) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(npy_int8, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (npy_int8) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(npy_int8, digit, ((PyLongObject*)x)->ob_digit[0]); + } + #endif +#endif + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } + if (sizeof(npy_int8) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT(npy_int8, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(npy_int8) <= sizeof(unsigned long long)) { + __PYX_VERIFY_RETURN_INT(npy_int8, unsigned long long, PyLong_AsUnsignedLongLong(x)) + } + } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(npy_int8, digit, +(((PyLongObject*)x)->ob_digit[0])); + case -1: __PYX_VERIFY_RETURN_INT(npy_int8, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]); + } + #endif +#endif + if (sizeof(npy_int8) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT(npy_int8, long, PyLong_AsLong(x)) + } else if (sizeof(npy_int8) <= sizeof(long long)) { + __PYX_VERIFY_RETURN_INT(npy_int8, long long, PyLong_AsLongLong(x)) + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + npy_int8 val; + PyObject *v = __Pyx_PyNumber_Int(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (npy_int8) -1; + } + } else { + npy_int8 val; + PyObject *tmp = __Pyx_PyNumber_Int(x); + if (!tmp) return (npy_int8) -1; + val = __Pyx_PyInt_As_npy_int8(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to npy_int8"); + return (npy_int8) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to npy_int8"); + return (npy_int8) -1; +} + +static PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int8_t(const char *itemp) { + return (PyObject *) __Pyx_PyInt_From_npy_int8(*(__pyx_t_5numpy_int8_t *) itemp); +} +static int __pyx_memview_set_nn___pyx_t_5numpy_int8_t(const char *itemp, PyObject *obj) { + __pyx_t_5numpy_int8_t value = __Pyx_PyInt_As_npy_int8(obj); + if ((value == (npy_int8)-1) && PyErr_Occurred()) + return 0; + *(__pyx_t_5numpy_int8_t *) itemp = value; + return 1; +} + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { diff --git a/pyFAI/ext/morphology.pyx b/pyFAI/ext/morphology.pyx index f037e93b3..d281b20d9 100644 --- a/pyFAI/ext/morphology.pyx +++ b/pyFAI/ext/morphology.pyx @@ -30,84 +30,93 @@ A few binary morphology operation """ __author__ = "Jerome Kieffer" __contact__ = "Jerome.kieffer@esrf.fr" -__date__ = "31/05/2016" +__date__ = "01/12/2016" __status__ = "stable" __license__ = "MIT" import cython import numpy cimport numpy -cdef inline numpy.int8_t MIN(numpy.int8_t a, numpy.int8_t b): - return a if (a < b) else b -cdef inline numpy.int8_t MAX(numpy.int8_t a, numpy.int8_t b): - return a if (a > b) else b - @cython.boundscheck(False) @cython.wraparound(False) -def binary_dilation(numpy.int8_t[:,:] image, float radius=1.0): +@cython.initializedcheck(False) +def binary_dilation(numpy.int8_t[:, ::1] image, + float radius=1.0): """ Return fast binary morphological dilation of an image. Morphological dilation sets a pixel at (i,j) to the maximum over all pixels in the neighborhood centered at (i,j). Dilation enlarges bright regions and shrinks dark regions. - @param image : ndarray - @param radius: float - @return: ndiamge + :param image : ndarray + :param radius: float + :return: ndiamge """ - cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) + cdef: + int x, y, i, j, size_x, size_y, px, py, + int r_int = int(radius), r2_int = int(radius * radius) size_y = image.shape[0] size_x = image.shape[1] - cdef numpy.int8_t val, curr - cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) + cdef: + numpy.int8_t val, curr + numpy.int8_t[:, ::1] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) for y in range(size_y): for x in range(size_x): - val = image[y,x] - for j in range(-r_int, r_int+1): + val = image[y, x] + for j in range(-r_int, r_int + 1): py = y + j - if py<0 or py>=size_y: continue - for i in range(-r_int, r_int+1): + if py < 0 or py >= size_y: + continue + for i in range(-r_int, r_int + 1): px = x + i - if px<0 or px>=size_x: continue - if i*i + j*j <= r2_int: - curr = image[py,px] - val = MAX(val, curr) - result[y,x] = val - return result + if (px < 0) or (px >= size_x): + continue + if i * i + j * j <= r2_int: + curr = image[py, px] + val = max(val, curr) + result[y, x] = val + return numpy.asarray(result) + @cython.boundscheck(False) @cython.wraparound(False) -def binary_erosion(numpy.int8_t[:,:] image, float radius=1.0): - """ - Return fast binary morphological erosion of an image. +@cython.initializedcheck(False) +def binary_erosion(numpy.int8_t[:, ::1] image, + float radius=1.0): + """Return fast binary morphological erosion of an image. - Morphological erosion sets a pixel at (i,j) to the minimum over all pixels in the neighborhood centered at (i,j). + Morphological erosion sets a pixel at (i,j) to the minimum over all pixels + in the neighborhood centered at (i,j). Erosion shrinks bright regions and enlarges dark regions. - @param image : ndarray - @param radius: float - @return: ndiamge + :param image : ndarray + :param radius: float + :return: ndiamge """ - cdef int x, y, i, j, size_x, size_y, px, py, r_int = int(radius), r2_int = int(radius*radius) + cdef: + int x, y, i, j, size_x, size_y, px, py, + int r_int = int(radius), r2_int = int(radius * radius) size_y = image.shape[0] size_x = image.shape[1] - cdef numpy.int8_t val, curr - cdef numpy.ndarray[numpy.int8_t, ndim=2] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) + cdef: + numpy.int8_t val, curr + numpy.int8_t[:, ::1] result = numpy.empty(dtype=numpy.int8, shape=(size_y, size_x)) for y in range(size_y): for x in range(size_x): - val = image[y,x] - for j in range(-r_int, r_int+1): + val = image[y, x] + for j in range(-r_int, r_int + 1): py = y + j - if py<0 or py>=size_y: continue - for i in range(-r_int, r_int+1): + if (py < 0) or (py >= size_y): + continue + for i in range(-r_int, r_int + 1): px = x + i - if px<0 or px>=size_x: continue - if i*i + j*j <= r2_int: - curr = image[py,px] - val = MIN(val, curr) - result[y,x] = val - return result - + if (px < 0) or (px >= size_x): + continue + if i * i + j * j <= r2_int: + curr = image[py, px] + val = min(val, curr) + result[y, x] = val + return numpy.asarray(result) diff --git a/pyFAI/ext/preproc.c b/pyFAI/ext/preproc.c index d3f796e56..70f7a4bd1 100644 --- a/pyFAI/ext/preproc.c +++ b/pyFAI/ext/preproc.c @@ -808,7 +808,7 @@ struct __pyx_fuse_1_5__pyx_opt_args_5pyFAI_3ext_7preproc_c_preproc; struct __pyx_fuse_1_6__pyx_opt_args_5pyFAI_3ext_7preproc_c_preproc; struct __pyx_fuse_1_7__pyx_opt_args_5pyFAI_3ext_7preproc_c_preproc; -/* "pyFAI/ext/preproc.pyx":65 +/* "pyFAI/ext/preproc.pyx":66 * @cython.wraparound(False) * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, # <<<<<<<<<<<<<< @@ -1866,7 +1866,7 @@ static char __pyx_k_itemsize[] = "itemsize"; static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_copyright[] = "__copyright__"; static char __pyx_k_enumerate[] = "enumerate"; -static char __pyx_k_19_10_2016[] = "19/10/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_absorption[] = "absorption"; @@ -1928,7 +1928,7 @@ static char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_kp_s_19_10_2016; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_2011_2015_ESRF; static PyObject *__pyx_kp_s_Absorption_array_size_is_correct; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; @@ -2234,7 +2234,7 @@ static PyObject *__pyx_tuple__183; static PyObject *__pyx_tuple__184; static PyObject *__pyx_codeobj__179; -/* "pyFAI/ext/preproc.pyx":65 +/* "pyFAI/ext/preproc.pyx":66 * @cython.wraparound(False) * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, # <<<<<<<<<<<<<< @@ -2329,7 +2329,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } /*try:*/ { - /* "pyFAI/ext/preproc.pyx":102 + /* "pyFAI/ext/preproc.pyx":103 * floating one_value, one_result, one_flat * * with gil: # <<<<<<<<<<<<<< @@ -2342,23 +2342,23 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ #endif /*try:*/ { - /* "pyFAI/ext/preproc.pyx":103 + /* "pyFAI/ext/preproc.pyx":104 * * with gil: * size = data.size # <<<<<<<<<<<<<< * do_dark = dark is not None * do_flat = flat is not None */ - __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_size = __pyx_t_3; - /* "pyFAI/ext/preproc.pyx":104 + /* "pyFAI/ext/preproc.pyx":105 * with gil: * size = data.size * do_dark = dark is not None # <<<<<<<<<<<<<< @@ -2367,7 +2367,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ */ __pyx_v_do_dark = (((PyObject *) __pyx_v_dark.memview) != Py_None); - /* "pyFAI/ext/preproc.pyx":105 + /* "pyFAI/ext/preproc.pyx":106 * size = data.size * do_dark = dark is not None * do_flat = flat is not None # <<<<<<<<<<<<<< @@ -2376,7 +2376,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ */ __pyx_v_do_flat = (((PyObject *) __pyx_v_flat.memview) != Py_None); - /* "pyFAI/ext/preproc.pyx":106 + /* "pyFAI/ext/preproc.pyx":107 * do_dark = dark is not None * do_flat = flat is not None * do_solidangle = solidangle is not None # <<<<<<<<<<<<<< @@ -2385,7 +2385,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ */ __pyx_v_do_solidangle = (((PyObject *) __pyx_v_solidangle.memview) != Py_None); - /* "pyFAI/ext/preproc.pyx":107 + /* "pyFAI/ext/preproc.pyx":108 * do_flat = flat is not None * do_solidangle = solidangle is not None * do_absorption = absorption is not None # <<<<<<<<<<<<<< @@ -2394,7 +2394,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ */ __pyx_v_do_absorption = (((PyObject *) __pyx_v_absorption.memview) != Py_None); - /* "pyFAI/ext/preproc.pyx":108 + /* "pyFAI/ext/preproc.pyx":109 * do_solidangle = solidangle is not None * do_absorption = absorption is not None * do_polarization = polarization is not None # <<<<<<<<<<<<<< @@ -2403,7 +2403,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ */ __pyx_v_do_polarization = (((PyObject *) __pyx_v_polarization.memview) != Py_None); - /* "pyFAI/ext/preproc.pyx":109 + /* "pyFAI/ext/preproc.pyx":110 * do_absorption = absorption is not None * do_polarization = polarization is not None * check_mask = mask is not None # <<<<<<<<<<<<<< @@ -2412,19 +2412,19 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ */ __pyx_v_check_mask = (((PyObject *) __pyx_v_mask.memview) != Py_None); - /* "pyFAI/ext/preproc.pyx":110 + /* "pyFAI/ext/preproc.pyx":111 * do_polarization = polarization is not None * check_mask = mask is not None * result = numpy.zeros_like(data) # <<<<<<<<<<<<<< * * for i in prange(size, nogil=True, schedule="static"): */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros_like); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros_like); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_data, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -2437,30 +2437,30 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_2); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_result = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; } - /* "pyFAI/ext/preproc.pyx":102 + /* "pyFAI/ext/preproc.pyx":103 * floating one_value, one_result, one_flat * * with gil: # <<<<<<<<<<<<<< @@ -2484,7 +2484,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } } - /* "pyFAI/ext/preproc.pyx":112 + /* "pyFAI/ext/preproc.pyx":113 * result = numpy.zeros_like(data) * * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -2510,22 +2510,22 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ if (__pyx_t_9 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_18, __pyx_t_11, __pyx_t_13, __pyx_t_17, __pyx_t_20, __pyx_t_16, __pyx_t_12, __pyx_t_10, __pyx_t_15, __pyx_t_14, __pyx_t_19) + #pragma omp parallel private(__pyx_t_17, __pyx_t_20, __pyx_t_16, __pyx_t_14, __pyx_t_19, __pyx_t_10, __pyx_t_15, __pyx_t_12, __pyx_t_13, __pyx_t_18, __pyx_t_11) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_one_result) lastprivate(__pyx_v_one_value) lastprivate(__pyx_v_is_valid) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_one_flat) schedule(static) + #pragma omp for lastprivate(__pyx_v_one_flat) lastprivate(__pyx_v_is_valid) lastprivate(__pyx_v_one_value) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_one_result) schedule(static) #endif /* _OPENMP */ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){ { __pyx_v_i = 0 + 1 * __pyx_t_8; /* Initialize private variables to invalid values */ - __pyx_v_one_result = ((float)__PYX_NAN()); - __pyx_v_one_value = ((float)__PYX_NAN()); - __pyx_v_is_valid = ((int)0xbad0bad0); __pyx_v_one_flat = ((float)__PYX_NAN()); + __pyx_v_is_valid = ((int)0xbad0bad0); + __pyx_v_one_value = ((float)__PYX_NAN()); + __pyx_v_one_result = ((float)__PYX_NAN()); - /* "pyFAI/ext/preproc.pyx":113 + /* "pyFAI/ext/preproc.pyx":114 * * for i in prange(size, nogil=True, schedule="static"): * one_value = data[i] # <<<<<<<<<<<<<< @@ -2535,7 +2535,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_10 = __pyx_v_i; __pyx_v_one_value = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_data.data) + __pyx_t_10)) ))); - /* "pyFAI/ext/preproc.pyx":115 + /* "pyFAI/ext/preproc.pyx":116 * one_value = data[i] * * is_valid = not isnan(one_value) # <<<<<<<<<<<<<< @@ -2544,7 +2544,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ */ __pyx_v_is_valid = (!(isnan(__pyx_v_one_value) != 0)); - /* "pyFAI/ext/preproc.pyx":116 + /* "pyFAI/ext/preproc.pyx":117 * * is_valid = not isnan(one_value) * if is_valid and check_mask: # <<<<<<<<<<<<<< @@ -2562,7 +2562,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_L17_bool_binop_done:; if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":117 + /* "pyFAI/ext/preproc.pyx":118 * is_valid = not isnan(one_value) * if is_valid and check_mask: * is_valid = (mask[i] == 0) # <<<<<<<<<<<<<< @@ -2575,7 +2575,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L16:; - /* "pyFAI/ext/preproc.pyx":118 + /* "pyFAI/ext/preproc.pyx":119 * if is_valid and check_mask: * is_valid = (mask[i] == 0) * if is_valid and check_dummy: # <<<<<<<<<<<<<< @@ -2593,7 +2593,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_L20_bool_binop_done:; if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":119 + /* "pyFAI/ext/preproc.pyx":120 * is_valid = (mask[i] == 0) * if is_valid and check_dummy: * if delta_dummy == 0: # <<<<<<<<<<<<<< @@ -2603,7 +2603,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = ((__pyx_v_delta_dummy == 0.0) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":120 + /* "pyFAI/ext/preproc.pyx":121 * if is_valid and check_dummy: * if delta_dummy == 0: * is_valid = (one_value != dummy) # <<<<<<<<<<<<<< @@ -2615,7 +2615,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":122 + /* "pyFAI/ext/preproc.pyx":123 * is_valid = (one_value != dummy) * else: * is_valid = fabs(one_value - dummy) > delta_dummy # <<<<<<<<<<<<<< @@ -2629,7 +2629,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L19:; - /* "pyFAI/ext/preproc.pyx":124 + /* "pyFAI/ext/preproc.pyx":125 * is_valid = fabs(one_value - dummy) > delta_dummy * * if is_valid and do_flat: # <<<<<<<<<<<<<< @@ -2647,7 +2647,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_L24_bool_binop_done:; if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":125 + /* "pyFAI/ext/preproc.pyx":126 * * if is_valid and do_flat: * one_flat = flat[i] # <<<<<<<<<<<<<< @@ -2657,7 +2657,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_14 = __pyx_v_i; __pyx_v_one_flat = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_flat.data) + __pyx_t_14)) ))); - /* "pyFAI/ext/preproc.pyx":126 + /* "pyFAI/ext/preproc.pyx":127 * if is_valid and do_flat: * one_flat = flat[i] * if delta_dummy == 0: # <<<<<<<<<<<<<< @@ -2667,7 +2667,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = ((__pyx_v_delta_dummy == 0.0) != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":127 + /* "pyFAI/ext/preproc.pyx":128 * one_flat = flat[i] * if delta_dummy == 0: * is_valid = (one_flat != dummy) # <<<<<<<<<<<<<< @@ -2679,7 +2679,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":129 + /* "pyFAI/ext/preproc.pyx":130 * is_valid = (one_flat != dummy) * else: * is_valid = fabs(one_flat - dummy) > delta_dummy # <<<<<<<<<<<<<< @@ -2693,7 +2693,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L23:; - /* "pyFAI/ext/preproc.pyx":131 + /* "pyFAI/ext/preproc.pyx":132 * is_valid = fabs(one_flat - dummy) > delta_dummy * * if is_valid: # <<<<<<<<<<<<<< @@ -2703,7 +2703,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = (__pyx_v_is_valid != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":133 + /* "pyFAI/ext/preproc.pyx":134 * if is_valid: * # Do not use "/=" as they mean reduction for cython * if do_dark: # <<<<<<<<<<<<<< @@ -2713,7 +2713,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = (__pyx_v_do_dark != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":134 + /* "pyFAI/ext/preproc.pyx":135 * # Do not use "/=" as they mean reduction for cython * if do_dark: * one_value = one_value - dark[i] # <<<<<<<<<<<<<< @@ -2726,7 +2726,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L28:; - /* "pyFAI/ext/preproc.pyx":135 + /* "pyFAI/ext/preproc.pyx":136 * if do_dark: * one_value = one_value - dark[i] * if do_flat: # <<<<<<<<<<<<<< @@ -2736,7 +2736,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = (__pyx_v_do_flat != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":136 + /* "pyFAI/ext/preproc.pyx":137 * one_value = one_value - dark[i] * if do_flat: * one_value = one_value / flat[i] # <<<<<<<<<<<<<< @@ -2749,7 +2749,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L29:; - /* "pyFAI/ext/preproc.pyx":137 + /* "pyFAI/ext/preproc.pyx":138 * if do_flat: * one_value = one_value / flat[i] * if do_polarization: # <<<<<<<<<<<<<< @@ -2759,7 +2759,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = (__pyx_v_do_polarization != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":138 + /* "pyFAI/ext/preproc.pyx":139 * one_value = one_value / flat[i] * if do_polarization: * one_value = one_value / polarization[i] # <<<<<<<<<<<<<< @@ -2772,7 +2772,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L30:; - /* "pyFAI/ext/preproc.pyx":139 + /* "pyFAI/ext/preproc.pyx":140 * if do_polarization: * one_value = one_value / polarization[i] * if do_solidangle: # <<<<<<<<<<<<<< @@ -2782,7 +2782,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = (__pyx_v_do_solidangle != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":140 + /* "pyFAI/ext/preproc.pyx":141 * one_value = one_value / polarization[i] * if do_solidangle: * one_value = one_value / solidangle[i] # <<<<<<<<<<<<<< @@ -2795,7 +2795,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L31:; - /* "pyFAI/ext/preproc.pyx":141 + /* "pyFAI/ext/preproc.pyx":142 * if do_solidangle: * one_value = one_value / solidangle[i] * if do_absorption: # <<<<<<<<<<<<<< @@ -2805,7 +2805,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ __pyx_t_11 = (__pyx_v_do_absorption != 0); if (__pyx_t_11) { - /* "pyFAI/ext/preproc.pyx":142 + /* "pyFAI/ext/preproc.pyx":143 * one_value = one_value / solidangle[i] * if do_absorption: * one_value = one_value / absorption[i] # <<<<<<<<<<<<<< @@ -2818,7 +2818,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L32:; - /* "pyFAI/ext/preproc.pyx":143 + /* "pyFAI/ext/preproc.pyx":144 * if do_absorption: * one_value = one_value / absorption[i] * one_result = one_value / normalization_factor # <<<<<<<<<<<<<< @@ -2830,7 +2830,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":145 + /* "pyFAI/ext/preproc.pyx":146 * one_result = one_value / normalization_factor * else: * one_result = dummy # <<<<<<<<<<<<<< @@ -2841,7 +2841,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } __pyx_L27:; - /* "pyFAI/ext/preproc.pyx":147 + /* "pyFAI/ext/preproc.pyx":148 * one_result = dummy * * result[i] += one_result # <<<<<<<<<<<<<< @@ -2863,7 +2863,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ #endif } - /* "pyFAI/ext/preproc.pyx":112 + /* "pyFAI/ext/preproc.pyx":113 * result = numpy.zeros_like(data) * * for i in prange(size, nogil=True, schedule="static"): # <<<<<<<<<<<<<< @@ -2881,7 +2881,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } } - /* "pyFAI/ext/preproc.pyx":148 + /* "pyFAI/ext/preproc.pyx":149 * * result[i] += one_result * return result # <<<<<<<<<<<<<< @@ -2893,7 +2893,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ goto __pyx_L3_return; } - /* "pyFAI/ext/preproc.pyx":78 + /* "pyFAI/ext/preproc.pyx":79 * * ) nogil: * """Common preprocessing step for all routines: C-implementation # <<<<<<<<<<<<<< @@ -2915,7 +2915,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ } } - /* "pyFAI/ext/preproc.pyx":65 + /* "pyFAI/ext/preproc.pyx":66 * @cython.wraparound(False) * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, # <<<<<<<<<<<<<< @@ -2949,7 +2949,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ return __pyx_r; } -/* "pyFAI/ext/preproc.pyx":155 +/* "pyFAI/ext/preproc.pyx":156 * @cython.wraparound(False) * @cython.initializedcheck(False) * def preproc(data, # <<<<<<<<<<<<<< @@ -2959,7 +2959,7 @@ static __Pyx_memviewslice __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_7preproc_preproc[] = "Common preprocessing step for all \n \n :param data: raw value, as a numpy array, 1D or 2D\n :param mask: array non null where data should be ignored\n :param dummy: value of invalid data\n :param delta_dummy: precision for invalid data\n :param dark: array containing the value of the dark noise, to be subtracted\n :param flat: Array containing the flatfield image. It is also checked for dummies if relevant.\n :param solidangle: the value of the solid_angle. This processing may be performed during the rebinning instead. left for compatibility\n :param polarization: Correction for polarization of the incident beam\n :param absorption: Correction for absorption in the sensor volume\n :param normalization_factor: final value is divided by this\n :param empty: value to be given for empty bins\n \n All calculation are performed in single precision floating point.\n \n NaN are always considered as invalid\n \n if neither empty nor dummy is provided, empty pixels are 0 \n "; +static char __pyx_doc_5pyFAI_3ext_7preproc_preproc[] = "preproc(data, dark=None, flat=None, solidangle=None, polarization=None, absorption=None, mask=None, dummy=None, delta_dummy=None, float normalization_factor=1.0, empty=None)\nCommon preprocessing step for all \n \n :param data: raw value, as a numpy array, 1D or 2D\n :param mask: array non null where data should be ignored\n :param dummy: value of invalid data\n :param delta_dummy: precision for invalid data\n :param dark: array containing the value of the dark noise, to be subtracted\n :param flat: Array containing the flatfield image. It is also checked for dummies if relevant.\n :param solidangle: the value of the solid_angle. This processing may be performed during the rebinning instead. left for compatibility\n :param polarization: Correction for polarization of the incident beam\n :param absorption: Correction for absorption in the sensor volume\n :param normalization_factor: final value is divided by this\n :param empty: value to be given for empty bins\n \n All calculation are performed in single precision floating point.\n \n NaN are always considered as invalid\n \n if neither empty nor dummy is provided, empty pixels are 0 \n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_7preproc_1preproc = {"preproc", (PyCFunction)__pyx_pw_5pyFAI_3ext_7preproc_1preproc, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_7preproc_preproc}; static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_data = 0; @@ -2983,7 +2983,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_dark,&__pyx_n_s_flat,&__pyx_n_s_solidangle,&__pyx_n_s_polarization,&__pyx_n_s_absorption,&__pyx_n_s_mask,&__pyx_n_s_dummy,&__pyx_n_s_delta_dummy,&__pyx_n_s_normalization_factor,&__pyx_n_s_empty,0}; PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0}; - /* "pyFAI/ext/preproc.pyx":156 + /* "pyFAI/ext/preproc.pyx":157 * @cython.initializedcheck(False) * def preproc(data, * dark=None, # <<<<<<<<<<<<<< @@ -2992,7 +2992,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[1] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":157 + /* "pyFAI/ext/preproc.pyx":158 * def preproc(data, * dark=None, * flat=None, # <<<<<<<<<<<<<< @@ -3001,7 +3001,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[2] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":158 + /* "pyFAI/ext/preproc.pyx":159 * dark=None, * flat=None, * solidangle=None, # <<<<<<<<<<<<<< @@ -3010,7 +3010,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[3] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":159 + /* "pyFAI/ext/preproc.pyx":160 * flat=None, * solidangle=None, * polarization=None, # <<<<<<<<<<<<<< @@ -3019,7 +3019,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[4] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":160 + /* "pyFAI/ext/preproc.pyx":161 * solidangle=None, * polarization=None, * absorption=None, # <<<<<<<<<<<<<< @@ -3028,7 +3028,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[5] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":161 + /* "pyFAI/ext/preproc.pyx":162 * polarization=None, * absorption=None, * mask=None, # <<<<<<<<<<<<<< @@ -3037,7 +3037,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[6] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":162 + /* "pyFAI/ext/preproc.pyx":163 * absorption=None, * mask=None, * dummy=None, # <<<<<<<<<<<<<< @@ -3046,7 +3046,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[7] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":163 + /* "pyFAI/ext/preproc.pyx":164 * mask=None, * dummy=None, * delta_dummy=None, # <<<<<<<<<<<<<< @@ -3055,7 +3055,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py */ values[8] = ((PyObject *)Py_None); - /* "pyFAI/ext/preproc.pyx":165 + /* "pyFAI/ext/preproc.pyx":166 * delta_dummy=None, * float normalization_factor=1.0, * empty=None # <<<<<<<<<<<<<< @@ -3138,7 +3138,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "preproc") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "preproc") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3167,7 +3167,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py __pyx_v_dummy = values[7]; __pyx_v_delta_dummy = values[8]; if (values[9]) { - __pyx_v_normalization_factor = __pyx_PyFloat_AsFloat(values[9]); if (unlikely((__pyx_v_normalization_factor == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_normalization_factor = __pyx_PyFloat_AsFloat(values[9]); if (unlikely((__pyx_v_normalization_factor == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_normalization_factor = ((float)1.0); } @@ -3175,7 +3175,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("preproc", 0, 1, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("preproc", 0, 1, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.preproc.preproc", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3183,7 +3183,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7preproc_1preproc(PyObject *__pyx_self, Py __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_5pyFAI_3ext_7preproc_preproc(__pyx_self, __pyx_v_data, __pyx_v_dark, __pyx_v_flat, __pyx_v_solidangle, __pyx_v_polarization, __pyx_v_absorption, __pyx_v_mask, __pyx_v_dummy, __pyx_v_delta_dummy, __pyx_v_normalization_factor, __pyx_v_empty); - /* "pyFAI/ext/preproc.pyx":155 + /* "pyFAI/ext/preproc.pyx":156 * @cython.wraparound(False) * @cython.initializedcheck(False) * def preproc(data, # <<<<<<<<<<<<<< @@ -3233,32 +3233,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("preproc", 0); - /* "pyFAI/ext/preproc.pyx":195 + /* "pyFAI/ext/preproc.pyx":196 * * # initialization of values: * size = data.size # <<<<<<<<<<<<<< * cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_size = __pyx_t_2; - /* "pyFAI/ext/preproc.pyx":196 + /* "pyFAI/ext/preproc.pyx":197 * # initialization of values: * size = data.size * cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * * if (mask is None) or (mask is False): */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -3271,40 +3271,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_6); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_cdata = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; - /* "pyFAI/ext/preproc.pyx":198 + /* "pyFAI/ext/preproc.pyx":199 * cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) * * if (mask is None) or (mask is False): # <<<<<<<<<<<<<< @@ -3324,7 +3324,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_L4_bool_binop_done:; if (__pyx_t_8) { - /* "pyFAI/ext/preproc.pyx":199 + /* "pyFAI/ext/preproc.pyx":200 * * if (mask is None) or (mask is False): * cmask = None # <<<<<<<<<<<<<< @@ -3332,7 +3332,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ * assert mask.size == size, "Mask array size is correct" */ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cmask = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; @@ -3340,7 +3340,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":201 + /* "pyFAI/ext/preproc.pyx":202 * cmask = None * else: * assert mask.size == size, "Mask array size is correct" # <<<<<<<<<<<<<< @@ -3349,35 +3349,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_8)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Mask_array_size_is_correct); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/preproc.pyx":202 + /* "pyFAI/ext/preproc.pyx":203 * else: * assert mask.size == size, "Mask array size is correct" * cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8) # <<<<<<<<<<<<<< * * if (dummy is not None) and (delta_dummy is not None): */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { @@ -3390,34 +3390,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int8_t(__pyx_t_5); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_cmask = __pyx_t_11; __pyx_t_11.memview = NULL; @@ -3425,7 +3425,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } __pyx_L3:; - /* "pyFAI/ext/preproc.pyx":204 + /* "pyFAI/ext/preproc.pyx":205 * cmask = numpy.ascontiguousarray(mask.ravel(), dtype=numpy.int8) * * if (dummy is not None) and (delta_dummy is not None): # <<<<<<<<<<<<<< @@ -3445,7 +3445,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_L7_bool_binop_done:; if (__pyx_t_8) { - /* "pyFAI/ext/preproc.pyx":205 + /* "pyFAI/ext/preproc.pyx":206 * * if (dummy is not None) and (delta_dummy is not None): * check_dummy = True # <<<<<<<<<<<<<< @@ -3454,29 +3454,29 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ __pyx_v_check_dummy = 1; - /* "pyFAI/ext/preproc.pyx":206 + /* "pyFAI/ext/preproc.pyx":207 * if (dummy is not None) and (delta_dummy is not None): * check_dummy = True * cdummy = float(dummy) # <<<<<<<<<<<<<< * ddummy = float(delta_dummy) * elif (dummy is not None): */ - __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cdummy = __pyx_t_12; - /* "pyFAI/ext/preproc.pyx":207 + /* "pyFAI/ext/preproc.pyx":208 * check_dummy = True * cdummy = float(dummy) * ddummy = float(delta_dummy) # <<<<<<<<<<<<<< * elif (dummy is not None): * check_dummy = True */ - __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_delta_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_ddummy = __pyx_t_12; goto __pyx_L6; } - /* "pyFAI/ext/preproc.pyx":208 + /* "pyFAI/ext/preproc.pyx":209 * cdummy = float(dummy) * ddummy = float(delta_dummy) * elif (dummy is not None): # <<<<<<<<<<<<<< @@ -3487,7 +3487,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_9 = (__pyx_t_8 != 0); if (__pyx_t_9) { - /* "pyFAI/ext/preproc.pyx":209 + /* "pyFAI/ext/preproc.pyx":210 * ddummy = float(delta_dummy) * elif (dummy is not None): * check_dummy = True # <<<<<<<<<<<<<< @@ -3496,17 +3496,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ __pyx_v_check_dummy = 1; - /* "pyFAI/ext/preproc.pyx":210 + /* "pyFAI/ext/preproc.pyx":211 * elif (dummy is not None): * check_dummy = True * cdummy = float(dummy) # <<<<<<<<<<<<<< * ddummy = 0.0 * else: */ - __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyObject_AsDouble(__pyx_v_dummy); if (unlikely(__pyx_t_12 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cdummy = __pyx_t_12; - /* "pyFAI/ext/preproc.pyx":211 + /* "pyFAI/ext/preproc.pyx":212 * check_dummy = True * cdummy = float(dummy) * ddummy = 0.0 # <<<<<<<<<<<<<< @@ -3518,7 +3518,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":213 + /* "pyFAI/ext/preproc.pyx":214 * ddummy = 0.0 * else: * check_dummy = False # <<<<<<<<<<<<<< @@ -3527,17 +3527,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ __pyx_v_check_dummy = 0; - /* "pyFAI/ext/preproc.pyx":214 + /* "pyFAI/ext/preproc.pyx":215 * else: * check_dummy = False * cdummy = empty or 0.0 # <<<<<<<<<<<<<< * ddummy = 0.0 * */ - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_empty); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_empty); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_9) { } else { - __pyx_t_14 = __pyx_PyFloat_AsFloat(__pyx_v_empty); if (unlikely((__pyx_t_14 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __pyx_PyFloat_AsFloat(__pyx_v_empty); if (unlikely((__pyx_t_14 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_13 = __pyx_t_14; goto __pyx_L9_bool_binop_done; } @@ -3545,7 +3545,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_L9_bool_binop_done:; __pyx_v_cdummy = __pyx_t_13; - /* "pyFAI/ext/preproc.pyx":215 + /* "pyFAI/ext/preproc.pyx":216 * check_dummy = False * cdummy = empty or 0.0 * ddummy = 0.0 # <<<<<<<<<<<<<< @@ -3556,7 +3556,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } __pyx_L6:; - /* "pyFAI/ext/preproc.pyx":217 + /* "pyFAI/ext/preproc.pyx":218 * ddummy = 0.0 * * if dark is not None: # <<<<<<<<<<<<<< @@ -3567,7 +3567,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_8 = (__pyx_t_9 != 0); if (__pyx_t_8) { - /* "pyFAI/ext/preproc.pyx":218 + /* "pyFAI/ext/preproc.pyx":219 * * if dark is not None: * assert dark.size == size, "Dark array size is correct" # <<<<<<<<<<<<<< @@ -3576,35 +3576,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dark, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dark, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_8)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Dark_array_size_is_correct); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/preproc.pyx":219 + /* "pyFAI/ext/preproc.pyx":220 * if dark is not None: * assert dark.size == size, "Dark array size is correct" * cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * else: * cdark = None */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dark, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dark, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { @@ -3617,34 +3617,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (__pyx_t_1) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_3); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_cdark = __pyx_t_7; __pyx_t_7.memview = NULL; @@ -3653,7 +3653,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":221 + /* "pyFAI/ext/preproc.pyx":222 * cdark = numpy.ascontiguousarray(dark.ravel(), dtype=numpy.float32) * else: * cdark = None # <<<<<<<<<<<<<< @@ -3661,14 +3661,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ * if flat is not None: */ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cdark = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; } __pyx_L11:; - /* "pyFAI/ext/preproc.pyx":223 + /* "pyFAI/ext/preproc.pyx":224 * cdark = None * * if flat is not None: # <<<<<<<<<<<<<< @@ -3679,7 +3679,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_9 = (__pyx_t_8 != 0); if (__pyx_t_9) { - /* "pyFAI/ext/preproc.pyx":224 + /* "pyFAI/ext/preproc.pyx":225 * * if flat is not None: * assert flat.size == size, "Flat array size is correct" # <<<<<<<<<<<<<< @@ -3688,35 +3688,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_flat, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_flat, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_9)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Flat_array_size_is_correct); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/preproc.pyx":225 + /* "pyFAI/ext/preproc.pyx":226 * if flat is not None: * assert flat.size == size, "Flat array size is correct" * cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * else: * cflat = None */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_flat, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_flat, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -3729,34 +3729,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (__pyx_t_4) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_1); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cflat = __pyx_t_7; __pyx_t_7.memview = NULL; @@ -3765,7 +3765,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":227 + /* "pyFAI/ext/preproc.pyx":228 * cflat = numpy.ascontiguousarray(flat.ravel(), dtype=numpy.float32) * else: * cflat = None # <<<<<<<<<<<<<< @@ -3773,14 +3773,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ * if polarization is not None: */ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cflat = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; } __pyx_L12:; - /* "pyFAI/ext/preproc.pyx":229 + /* "pyFAI/ext/preproc.pyx":230 * cflat = None * * if polarization is not None: # <<<<<<<<<<<<<< @@ -3791,7 +3791,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_8 = (__pyx_t_9 != 0); if (__pyx_t_8) { - /* "pyFAI/ext/preproc.pyx":230 + /* "pyFAI/ext/preproc.pyx":231 * * if polarization is not None: * assert polarization.size == size, "Polarization array size is correct" # <<<<<<<<<<<<<< @@ -3800,35 +3800,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_polarization, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_polarization, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_8)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Polarization_array_size_is_corre); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/preproc.pyx":231 + /* "pyFAI/ext/preproc.pyx":232 * if polarization is not None: * assert polarization.size == size, "Polarization array size is correct" * cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * else: * cpolarization = None */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_polarization, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_polarization, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -3841,34 +3841,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_4); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_cpolarization = __pyx_t_7; __pyx_t_7.memview = NULL; @@ -3877,7 +3877,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":233 + /* "pyFAI/ext/preproc.pyx":234 * cpolarization = numpy.ascontiguousarray(polarization.ravel(), dtype=numpy.float32) * else: * cpolarization = None # <<<<<<<<<<<<<< @@ -3885,14 +3885,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ * if solidangle is not None: */ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cpolarization = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; } __pyx_L13:; - /* "pyFAI/ext/preproc.pyx":235 + /* "pyFAI/ext/preproc.pyx":236 * cpolarization = None * * if solidangle is not None: # <<<<<<<<<<<<<< @@ -3903,7 +3903,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_9 = (__pyx_t_8 != 0); if (__pyx_t_9) { - /* "pyFAI/ext/preproc.pyx":236 + /* "pyFAI/ext/preproc.pyx":237 * * if solidangle is not None: * assert solidangle.size == size, "Solid angle array size is correct" # <<<<<<<<<<<<<< @@ -3912,35 +3912,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_solidangle, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_solidangle, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_9)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Solid_angle_array_size_is_correc); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/preproc.pyx":237 + /* "pyFAI/ext/preproc.pyx":238 * if solidangle is not None: * assert solidangle.size == size, "Solid angle array size is correct" * csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * else: * csolidangle = None */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_solidangle, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_solidangle, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -3953,34 +3953,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_6); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_csolidangle = __pyx_t_7; __pyx_t_7.memview = NULL; @@ -3989,7 +3989,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":239 + /* "pyFAI/ext/preproc.pyx":240 * csolidangle = numpy.ascontiguousarray(solidangle.ravel(), dtype=numpy.float32) * else: * csolidangle = None # <<<<<<<<<<<<<< @@ -3997,14 +3997,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ * if absorption is not None: */ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_csolidangle = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; } __pyx_L14:; - /* "pyFAI/ext/preproc.pyx":241 + /* "pyFAI/ext/preproc.pyx":242 * csolidangle = None * * if absorption is not None: # <<<<<<<<<<<<<< @@ -4015,7 +4015,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_8 = (__pyx_t_9 != 0); if (__pyx_t_8) { - /* "pyFAI/ext/preproc.pyx":242 + /* "pyFAI/ext/preproc.pyx":243 * * if absorption is not None: * assert absorption.size == size, "Absorption array size is correct" # <<<<<<<<<<<<<< @@ -4024,35 +4024,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_absorption, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_absorption, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_8)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Absorption_array_size_is_correct); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/preproc.pyx":243 + /* "pyFAI/ext/preproc.pyx":244 * if absorption is not None: * assert absorption.size == size, "Absorption array size is correct" * cabsorpt = numpy.ascontiguousarray(absorption.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * else: * cabsorpt = None */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_absorption, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_absorption, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { @@ -4065,34 +4065,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_5); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_cabsorpt = __pyx_t_7; __pyx_t_7.memview = NULL; @@ -4101,7 +4101,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } /*else*/ { - /* "pyFAI/ext/preproc.pyx":245 + /* "pyFAI/ext/preproc.pyx":246 * cabsorpt = numpy.ascontiguousarray(absorption.ravel(), dtype=numpy.float32) * else: * cabsorpt = None # <<<<<<<<<<<<<< @@ -4109,14 +4109,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ * result = c_preproc(cdata, cdark, cflat, csolidangle, cpolarization, cabsorpt, */ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cabsorpt = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; } __pyx_L15:; - /* "pyFAI/ext/preproc.pyx":247 + /* "pyFAI/ext/preproc.pyx":248 * cabsorpt = None * * result = c_preproc(cdata, cdark, cflat, csolidangle, cpolarization, cabsorpt, # <<<<<<<<<<<<<< @@ -4134,23 +4134,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_16.delta_dummy = __pyx_v_ddummy; __pyx_t_16.check_dummy = __pyx_v_check_dummy; __pyx_t_16.normalization_factor = __pyx_v_normalization_factor; - __pyx_t_15 = __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(__pyx_v_cdata, &__pyx_t_16); if (unlikely(!__pyx_t_15.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __pyx_fuse_0_4__pyx_f_5pyFAI_3ext_7preproc_c_preproc(__pyx_v_cdata, &__pyx_t_16); if (unlikely(!__pyx_t_15.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_result = __pyx_t_15; __pyx_t_15.memview = NULL; __pyx_t_15.data = NULL; - /* "pyFAI/ext/preproc.pyx":250 + /* "pyFAI/ext/preproc.pyx":251 * cmask, cdummy, ddummy, check_dummy, normalization_factor) * * return numpy.asarray(result).reshape(data.shape) # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_result, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_result, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) { @@ -4163,25 +4163,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (!__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_17, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_17, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_17 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) { @@ -4194,17 +4194,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ } } if (!__pyx_t_17) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); } else { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = NULL; PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } @@ -4213,7 +4213,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7preproc_preproc(CYTHON_UNUSED PyObject *_ __pyx_t_5 = 0; goto __pyx_L0; - /* "pyFAI/ext/preproc.pyx":155 + /* "pyFAI/ext/preproc.pyx":156 * @cython.wraparound(False) * @cython.initializedcheck(False) * def preproc(data, # <<<<<<<<<<<<<< @@ -17558,7 +17558,7 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_19_10_2016, __pyx_k_19_10_2016, sizeof(__pyx_k_19_10_2016), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_2011_2015_ESRF, __pyx_k_2011_2015_ESRF, sizeof(__pyx_k_2011_2015_ESRF), 0, 0, 1, 0}, {&__pyx_kp_s_Absorption_array_size_is_correct, __pyx_k_Absorption_array_size_is_correct, sizeof(__pyx_k_Absorption_array_size_is_correct), 0, 0, 1, 0}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, @@ -17889,17 +17889,17 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); - /* "pyFAI/ext/preproc.pyx":155 + /* "pyFAI/ext/preproc.pyx":156 * @cython.wraparound(False) * @cython.initializedcheck(False) * def preproc(data, # <<<<<<<<<<<<<< * dark=None, * flat=None, */ - __pyx_tuple__178 = PyTuple_Pack(23, __pyx_n_s_data, __pyx_n_s_dark, __pyx_n_s_flat, __pyx_n_s_solidangle, __pyx_n_s_polarization, __pyx_n_s_absorption, __pyx_n_s_mask, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_normalization_factor, __pyx_n_s_empty, __pyx_n_s_size, __pyx_n_s_check_dummy, __pyx_n_s_cmask, __pyx_n_s_cdata, __pyx_n_s_cdark, __pyx_n_s_cflat, __pyx_n_s_csolidangle, __pyx_n_s_cpolarization, __pyx_n_s_cabsorpt, __pyx_n_s_result, __pyx_n_s_cdummy, __pyx_n_s_ddummy); if (unlikely(!__pyx_tuple__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__178 = PyTuple_Pack(23, __pyx_n_s_data, __pyx_n_s_dark, __pyx_n_s_flat, __pyx_n_s_solidangle, __pyx_n_s_polarization, __pyx_n_s_absorption, __pyx_n_s_mask, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_normalization_factor, __pyx_n_s_empty, __pyx_n_s_size, __pyx_n_s_check_dummy, __pyx_n_s_cmask, __pyx_n_s_cdata, __pyx_n_s_cdark, __pyx_n_s_cflat, __pyx_n_s_csolidangle, __pyx_n_s_cpolarization, __pyx_n_s_cabsorpt, __pyx_n_s_result, __pyx_n_s_cdummy, __pyx_n_s_ddummy); if (unlikely(!__pyx_tuple__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__178); __Pyx_GIVEREF(__pyx_tuple__178); - __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(11, 0, 23, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_preproc, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(11, 0, 23, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_preproc, 156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -18209,7 +18209,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __license__ = "MIT" - * __date__ = "19/10/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -18217,7 +18217,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * * __author__ = "Jerome Kieffer" * __license__ = "MIT" # <<<<<<<<<<<<<< - * __date__ = "19/10/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -18225,15 +18225,15 @@ PyMODINIT_FUNC PyInit_preproc(void) /* "pyFAI/ext/preproc.pyx":31 * __author__ = "Jerome Kieffer" * __license__ = "MIT" - * __date__ = "19/10/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __copyright__ = "2011-2015, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_19_10_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/preproc.pyx":32 * __license__ = "MIT" - * __date__ = "19/10/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" # <<<<<<<<<<<<<< * __contact__ = "jerome.kieffer@esrf.fr" * @@ -18241,7 +18241,7 @@ PyMODINIT_FUNC PyInit_preproc(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_copyright, __pyx_kp_s_2011_2015_ESRF) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/preproc.pyx":33 - * __date__ = "19/10/2016" + * __date__ = "01/12/2016" * __copyright__ = "2011-2015, ESRF" * __contact__ = "jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< * @@ -18261,7 +18261,7 @@ PyMODINIT_FUNC PyInit_preproc(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18269,12 +18269,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__28 = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18282,12 +18282,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__29 = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18295,12 +18295,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__30 = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18308,12 +18308,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_5.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_5.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__31 = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18321,12 +18321,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__32 = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18334,7 +18334,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint8_t(Py_None); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__33 = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; @@ -18343,7 +18343,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__36 = 0; __pyx_k__37 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18351,12 +18351,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__38 = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18364,12 +18364,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__39 = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18377,12 +18377,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__40 = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18390,12 +18390,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__41 = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18403,12 +18403,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__42 = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18416,7 +18416,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint16_t(Py_None); - if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_13.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__43 = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; @@ -18425,7 +18425,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__46 = 0; __pyx_k__47 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18433,12 +18433,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_14 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_14.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__48 = __pyx_t_14; __pyx_t_14.memview = NULL; __pyx_t_14.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18446,12 +18446,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_15 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_15.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_15.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__49 = __pyx_t_15; __pyx_t_15.memview = NULL; __pyx_t_15.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18459,12 +18459,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_16.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__50 = __pyx_t_16; __pyx_t_16.memview = NULL; __pyx_t_16.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18472,12 +18472,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_17.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__51 = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18485,12 +18485,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_18 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_18.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__52 = __pyx_t_18; __pyx_t_18.memview = NULL; __pyx_t_18.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18498,7 +18498,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_19 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint32_t(Py_None); - if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_19.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__53 = __pyx_t_19; __pyx_t_19.memview = NULL; __pyx_t_19.data = NULL; @@ -18507,7 +18507,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__56 = 0; __pyx_k__57 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18515,12 +18515,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_20 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_20.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_20.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__58 = __pyx_t_20; __pyx_t_20.memview = NULL; __pyx_t_20.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18528,12 +18528,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_21 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_21.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_21.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__59 = __pyx_t_21; __pyx_t_21.memview = NULL; __pyx_t_21.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18541,12 +18541,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_22 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_22.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_22.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__60 = __pyx_t_22; __pyx_t_22.memview = NULL; __pyx_t_22.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18554,12 +18554,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_23 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_23.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_23.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__61 = __pyx_t_23; __pyx_t_23.memview = NULL; __pyx_t_23.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18567,12 +18567,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_24 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_24.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_24.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__62 = __pyx_t_24; __pyx_t_24.memview = NULL; __pyx_t_24.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18580,7 +18580,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_25 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint64_t(Py_None); - if (unlikely(!__pyx_t_25.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_25.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__63 = __pyx_t_25; __pyx_t_25.memview = NULL; __pyx_t_25.data = NULL; @@ -18589,7 +18589,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__66 = 0; __pyx_k__67 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18597,12 +18597,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_26 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_26.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k_ = __pyx_t_26; __pyx_t_26.memview = NULL; __pyx_t_26.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18610,12 +18610,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_27 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_27.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_27.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__2 = __pyx_t_27; __pyx_t_27.memview = NULL; __pyx_t_27.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18623,12 +18623,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_28 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_28.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_28.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__3 = __pyx_t_28; __pyx_t_28.memview = NULL; __pyx_t_28.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18636,12 +18636,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_29 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_29.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_29.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__4 = __pyx_t_29; __pyx_t_29.memview = NULL; __pyx_t_29.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18649,12 +18649,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_30 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_30.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_30.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__5 = __pyx_t_30; __pyx_t_30.memview = NULL; __pyx_t_30.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18662,7 +18662,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_31 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_31.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_31.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__6 = __pyx_t_31; __pyx_t_31.memview = NULL; __pyx_t_31.data = NULL; @@ -18671,7 +18671,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__9 = 0; __pyx_k__10 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18679,12 +18679,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_32 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_32.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_32.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__68 = __pyx_t_32; __pyx_t_32.memview = NULL; __pyx_t_32.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18692,12 +18692,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_33 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_33.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_33.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__69 = __pyx_t_33; __pyx_t_33.memview = NULL; __pyx_t_33.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18705,12 +18705,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_34 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_34.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_34.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__70 = __pyx_t_34; __pyx_t_34.memview = NULL; __pyx_t_34.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18718,12 +18718,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_35 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_35.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_35.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__71 = __pyx_t_35; __pyx_t_35.memview = NULL; __pyx_t_35.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18731,12 +18731,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_36 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_36.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_36.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__72 = __pyx_t_36; __pyx_t_36.memview = NULL; __pyx_t_36.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18744,7 +18744,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_37 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int16_t(Py_None); - if (unlikely(!__pyx_t_37.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_37.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__73 = __pyx_t_37; __pyx_t_37.memview = NULL; __pyx_t_37.data = NULL; @@ -18753,7 +18753,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__76 = 0; __pyx_k__77 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18761,12 +18761,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_38 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_38.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_38.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__78 = __pyx_t_38; __pyx_t_38.memview = NULL; __pyx_t_38.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18774,12 +18774,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_39 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_39.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_39.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__79 = __pyx_t_39; __pyx_t_39.memview = NULL; __pyx_t_39.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18787,12 +18787,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_40 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_40.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_40.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__80 = __pyx_t_40; __pyx_t_40.memview = NULL; __pyx_t_40.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18800,12 +18800,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_41 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_41.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_41.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__81 = __pyx_t_41; __pyx_t_41.memview = NULL; __pyx_t_41.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18813,12 +18813,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_42 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_42.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_42.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__82 = __pyx_t_42; __pyx_t_42.memview = NULL; __pyx_t_42.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18826,7 +18826,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_43 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(Py_None); - if (unlikely(!__pyx_t_43.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_43.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__83 = __pyx_t_43; __pyx_t_43.memview = NULL; __pyx_t_43.data = NULL; @@ -18835,7 +18835,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__86 = 0; __pyx_k__87 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18843,12 +18843,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_44 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_44.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_44.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__88 = __pyx_t_44; __pyx_t_44.memview = NULL; __pyx_t_44.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18856,12 +18856,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_45 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_45.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_45.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__89 = __pyx_t_45; __pyx_t_45.memview = NULL; __pyx_t_45.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18869,12 +18869,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_46 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_46.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_46.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__90 = __pyx_t_46; __pyx_t_46.memview = NULL; __pyx_t_46.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18882,12 +18882,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_47 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_47.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_47.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__91 = __pyx_t_47; __pyx_t_47.memview = NULL; __pyx_t_47.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18895,12 +18895,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_48 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(Py_None); - if (unlikely(!__pyx_t_48.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_48.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__92 = __pyx_t_48; __pyx_t_48.memview = NULL; __pyx_t_48.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18908,7 +18908,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_49 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int64_t(Py_None); - if (unlikely(!__pyx_t_49.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_49.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__93 = __pyx_t_49; __pyx_t_49.memview = NULL; __pyx_t_49.data = NULL; @@ -18917,7 +18917,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__96 = 0; __pyx_k__97 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -18925,12 +18925,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_50 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_50.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_50.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__98 = __pyx_t_50; __pyx_t_50.memview = NULL; __pyx_t_50.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -18938,12 +18938,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_51 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_51.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_51.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__99 = __pyx_t_51; __pyx_t_51.memview = NULL; __pyx_t_51.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -18951,12 +18951,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_52 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_52.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_52.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__100 = __pyx_t_52; __pyx_t_52.memview = NULL; __pyx_t_52.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -18964,12 +18964,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_53 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_53.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_53.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__101 = __pyx_t_53; __pyx_t_53.memview = NULL; __pyx_t_53.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -18977,12 +18977,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_54 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_54.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_54.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__102 = __pyx_t_54; __pyx_t_54.memview = NULL; __pyx_t_54.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -18990,7 +18990,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_55 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint8_t(Py_None); - if (unlikely(!__pyx_t_55.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_55.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__103 = __pyx_t_55; __pyx_t_55.memview = NULL; __pyx_t_55.data = NULL; @@ -18999,7 +18999,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__106 = 0; __pyx_k__107 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -19007,12 +19007,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_56 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_56.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_56.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__108 = __pyx_t_56; __pyx_t_56.memview = NULL; __pyx_t_56.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -19020,12 +19020,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_57 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_57.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_57.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__109 = __pyx_t_57; __pyx_t_57.memview = NULL; __pyx_t_57.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -19033,12 +19033,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_58 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_58.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_58.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__110 = __pyx_t_58; __pyx_t_58.memview = NULL; __pyx_t_58.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -19046,12 +19046,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_59 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_59.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_59.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__111 = __pyx_t_59; __pyx_t_59.memview = NULL; __pyx_t_59.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -19059,12 +19059,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_60 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_60.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_60.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__112 = __pyx_t_60; __pyx_t_60.memview = NULL; __pyx_t_60.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -19072,7 +19072,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_61 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint16_t(Py_None); - if (unlikely(!__pyx_t_61.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_61.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__113 = __pyx_t_61; __pyx_t_61.memview = NULL; __pyx_t_61.data = NULL; @@ -19081,7 +19081,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__116 = 0; __pyx_k__117 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -19089,12 +19089,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_62 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_62.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_62.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__118 = __pyx_t_62; __pyx_t_62.memview = NULL; __pyx_t_62.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -19102,12 +19102,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_63 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_63.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_63.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__119 = __pyx_t_63; __pyx_t_63.memview = NULL; __pyx_t_63.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -19115,12 +19115,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_64 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_64.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_64.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__120 = __pyx_t_64; __pyx_t_64.memview = NULL; __pyx_t_64.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -19128,12 +19128,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_65 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_65.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_65.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__121 = __pyx_t_65; __pyx_t_65.memview = NULL; __pyx_t_65.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -19141,12 +19141,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_66 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_66.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_66.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__122 = __pyx_t_66; __pyx_t_66.memview = NULL; __pyx_t_66.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -19154,7 +19154,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_67 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint32_t(Py_None); - if (unlikely(!__pyx_t_67.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_67.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__123 = __pyx_t_67; __pyx_t_67.memview = NULL; __pyx_t_67.data = NULL; @@ -19163,7 +19163,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__126 = 0; __pyx_k__127 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -19171,12 +19171,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_68 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_68.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_68.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__128 = __pyx_t_68; __pyx_t_68.memview = NULL; __pyx_t_68.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -19184,12 +19184,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_69 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_69.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_69.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__129 = __pyx_t_69; __pyx_t_69.memview = NULL; __pyx_t_69.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -19197,12 +19197,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_70 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_70.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_70.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__130 = __pyx_t_70; __pyx_t_70.memview = NULL; __pyx_t_70.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -19210,12 +19210,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_71 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_71.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_71.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__131 = __pyx_t_71; __pyx_t_71.memview = NULL; __pyx_t_71.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -19223,12 +19223,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_72 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_72.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_72.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__132 = __pyx_t_72; __pyx_t_72.memview = NULL; __pyx_t_72.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -19236,7 +19236,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_73 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint64_t(Py_None); - if (unlikely(!__pyx_t_73.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_73.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__133 = __pyx_t_73; __pyx_t_73.memview = NULL; __pyx_t_73.data = NULL; @@ -19245,7 +19245,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__136 = 0; __pyx_k__137 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -19253,12 +19253,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_74 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_74.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_74.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__138 = __pyx_t_74; __pyx_t_74.memview = NULL; __pyx_t_74.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -19266,12 +19266,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_75 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_75.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_75.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__139 = __pyx_t_75; __pyx_t_75.memview = NULL; __pyx_t_75.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -19279,12 +19279,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_76 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_76.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_76.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__140 = __pyx_t_76; __pyx_t_76.memview = NULL; __pyx_t_76.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -19292,12 +19292,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_77 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_77.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_77.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__141 = __pyx_t_77; __pyx_t_77.memview = NULL; __pyx_t_77.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -19305,12 +19305,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_78 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_78.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_78.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__142 = __pyx_t_78; __pyx_t_78.memview = NULL; __pyx_t_78.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -19318,7 +19318,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_79 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int8_t(Py_None); - if (unlikely(!__pyx_t_79.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_79.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__143 = __pyx_t_79; __pyx_t_79.memview = NULL; __pyx_t_79.data = NULL; @@ -19327,7 +19327,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__146 = 0; __pyx_k__147 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -19335,12 +19335,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_80 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_80.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_80.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__148 = __pyx_t_80; __pyx_t_80.memview = NULL; __pyx_t_80.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -19348,12 +19348,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_81 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_81.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_81.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__149 = __pyx_t_81; __pyx_t_81.memview = NULL; __pyx_t_81.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -19361,12 +19361,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_82 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_82.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_82.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__150 = __pyx_t_82; __pyx_t_82.memview = NULL; __pyx_t_82.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -19374,12 +19374,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_83 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_83.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_83.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__151 = __pyx_t_83; __pyx_t_83.memview = NULL; __pyx_t_83.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -19387,12 +19387,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_84 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_84.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_84.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__152 = __pyx_t_84; __pyx_t_84.memview = NULL; __pyx_t_84.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -19400,7 +19400,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_85 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int16_t(Py_None); - if (unlikely(!__pyx_t_85.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_85.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__153 = __pyx_t_85; __pyx_t_85.memview = NULL; __pyx_t_85.data = NULL; @@ -19409,7 +19409,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__156 = 0; __pyx_k__157 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -19417,12 +19417,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_86 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_86.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_86.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__158 = __pyx_t_86; __pyx_t_86.memview = NULL; __pyx_t_86.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -19430,12 +19430,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_87 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_87.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_87.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__159 = __pyx_t_87; __pyx_t_87.memview = NULL; __pyx_t_87.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -19443,12 +19443,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_88 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_88.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_88.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__160 = __pyx_t_88; __pyx_t_88.memview = NULL; __pyx_t_88.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -19456,12 +19456,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_89 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_89.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_89.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__161 = __pyx_t_89; __pyx_t_89.memview = NULL; __pyx_t_89.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -19469,12 +19469,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_90 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_90.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_90.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__162 = __pyx_t_90; __pyx_t_90.memview = NULL; __pyx_t_90.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -19482,7 +19482,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_91 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(Py_None); - if (unlikely(!__pyx_t_91.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_91.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__163 = __pyx_t_91; __pyx_t_91.memview = NULL; __pyx_t_91.data = NULL; @@ -19491,7 +19491,7 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__166 = 0; __pyx_k__167 = 1.0; - /* "pyFAI/ext/preproc.pyx":66 + /* "pyFAI/ext/preproc.pyx":67 * @cython.initializedcheck(False) * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, # <<<<<<<<<<<<<< @@ -19499,12 +19499,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] solidangle=None, */ __pyx_t_92 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_92.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_92.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__168 = __pyx_t_92; __pyx_t_92.memview = NULL; __pyx_t_92.data = NULL; - /* "pyFAI/ext/preproc.pyx":67 + /* "pyFAI/ext/preproc.pyx":68 * cdef floating[::1]c_preproc(floating[::1] data, * floating[::1] dark=None, * floating[::1] flat=None, # <<<<<<<<<<<<<< @@ -19512,12 +19512,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] polarization=None, */ __pyx_t_93 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_93.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_93.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__169 = __pyx_t_93; __pyx_t_93.memview = NULL; __pyx_t_93.data = NULL; - /* "pyFAI/ext/preproc.pyx":68 + /* "pyFAI/ext/preproc.pyx":69 * floating[::1] dark=None, * floating[::1] flat=None, * floating[::1] solidangle=None, # <<<<<<<<<<<<<< @@ -19525,12 +19525,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating[::1] absorption=None, */ __pyx_t_94 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_94.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_94.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__170 = __pyx_t_94; __pyx_t_94.memview = NULL; __pyx_t_94.data = NULL; - /* "pyFAI/ext/preproc.pyx":69 + /* "pyFAI/ext/preproc.pyx":70 * floating[::1] flat=None, * floating[::1] solidangle=None, * floating[::1] polarization=None, # <<<<<<<<<<<<<< @@ -19538,12 +19538,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * any_int_t[::1] mask=None, */ __pyx_t_95 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_95.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_95.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__171 = __pyx_t_95; __pyx_t_95.memview = NULL; __pyx_t_95.data = NULL; - /* "pyFAI/ext/preproc.pyx":70 + /* "pyFAI/ext/preproc.pyx":71 * floating[::1] solidangle=None, * floating[::1] polarization=None, * floating[::1] absorption=None, # <<<<<<<<<<<<<< @@ -19551,12 +19551,12 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating dummy=0, */ __pyx_t_96 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(Py_None); - if (unlikely(!__pyx_t_96.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_96.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__172 = __pyx_t_96; __pyx_t_96.memview = NULL; __pyx_t_96.data = NULL; - /* "pyFAI/ext/preproc.pyx":71 + /* "pyFAI/ext/preproc.pyx":72 * floating[::1] polarization=None, * floating[::1] absorption=None, * any_int_t[::1] mask=None, # <<<<<<<<<<<<<< @@ -19564,7 +19564,7 @@ PyMODINIT_FUNC PyInit_preproc(void) * floating delta_dummy=0, */ __pyx_t_97 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int64_t(Py_None); - if (unlikely(!__pyx_t_97.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_97.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_k__173 = __pyx_t_97; __pyx_t_97.memview = NULL; __pyx_t_97.data = NULL; @@ -19573,16 +19573,16 @@ PyMODINIT_FUNC PyInit_preproc(void) __pyx_k__176 = 0; __pyx_k__177 = 1.0; - /* "pyFAI/ext/preproc.pyx":155 + /* "pyFAI/ext/preproc.pyx":156 * @cython.wraparound(False) * @cython.initializedcheck(False) * def preproc(data, # <<<<<<<<<<<<<< * dark=None, * flat=None, */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_7preproc_1preproc, NULL, __pyx_n_s_pyFAI_ext_preproc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_7preproc_1preproc, NULL, __pyx_n_s_pyFAI_ext_preproc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_preproc, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_preproc, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyFAI/ext/preproc.pyx":1 diff --git a/pyFAI/ext/preproc.pyx b/pyFAI/ext/preproc.pyx index b0131be6a..66f9a25c6 100644 --- a/pyFAI/ext/preproc.pyx +++ b/pyFAI/ext/preproc.pyx @@ -28,7 +28,7 @@ __author__ = "Jerome Kieffer" __license__ = "MIT" -__date__ = "19/10/2016" +__date__ = "01/12/2016" __copyright__ = "2011-2015, ESRF" __contact__ = "jerome.kieffer@esrf.fr" @@ -58,6 +58,7 @@ ctypedef fused any_int_t: cnp.int32_t cnp.int64_t + @cython.boundscheck(False) @cython.cdivision(True) @cython.wraparound(False) diff --git a/pyFAI/ext/reconstruct.c b/pyFAI/ext/reconstruct.c index 7103bd0fd..387289e64 100644 --- a/pyFAI/ext/reconstruct.c +++ b/pyFAI/ext/reconstruct.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/reconstruct.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; #define IS_UNSIGNED(type) (((type) -1) > 0) @@ -541,7 +541,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -550,7 +550,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -559,7 +559,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -568,7 +568,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -577,7 +577,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -586,7 +586,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -595,7 +595,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -604,7 +604,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -613,7 +613,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -622,7 +622,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -631,7 +631,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -640,7 +640,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -649,7 +649,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -658,7 +658,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -667,7 +667,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -676,7 +676,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -685,7 +685,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -694,7 +694,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -703,7 +703,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -712,7 +712,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -721,7 +721,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -756,7 +756,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -765,7 +765,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -774,7 +774,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -783,7 +783,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1356,9 +1356,9 @@ static int __Pyx_ValidateAndInit_memviewslice( __Pyx_memviewslice *memviewslice, PyObject *original_obj); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *); static int __Pyx_check_binary_version(void); @@ -1591,7 +1591,7 @@ static char __pyx_k_Ellipsis[] = "Ellipsis"; static char __pyx_k_itemsize[] = "itemsize"; static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_enumerate[] = "enumerate"; -static char __pyx_k_27_09_2016[] = "27/09/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; @@ -1644,7 +1644,7 @@ static char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_kp_s_27_09_2016; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; static PyObject *__pyx_kp_s_Cannot_index_with_type_s; @@ -1813,11 +1813,11 @@ static float __pyx_f_5pyFAI_3ext_11reconstruct_invert_distance(size_t __pyx_v_i0 return __pyx_r; } -/* "pyFAI/ext/reconstruct.pyx":51 - * @cython.cdivision(True) - * @cython.boundscheck(False) - * cdef inline float processPoint(float[:, :] data, # <<<<<<<<<<<<<< - * numpy.int8_t[:, :] mask, +/* "pyFAI/ext/reconstruct.pyx":53 + * @cython.wraparound(False) + * @cython.initializedcheck(False) + * cdef inline float processPoint(float[:, ::1] data, # <<<<<<<<<<<<<< + * numpy.int8_t[:, ::1] mask, * size_t p0, */ @@ -1853,7 +1853,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ size_t __pyx_t_18; size_t __pyx_t_19; - /* "pyFAI/ext/reconstruct.pyx":58 + /* "pyFAI/ext/reconstruct.pyx":60 * size_t d1)nogil: * cdef: * size_t dist = 0, i = 0 # <<<<<<<<<<<<<< @@ -1863,7 +1863,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_v_dist = 0; __pyx_v_i = 0; - /* "pyFAI/ext/reconstruct.pyx":59 + /* "pyFAI/ext/reconstruct.pyx":61 * cdef: * size_t dist = 0, i = 0 * float sum = 0.0, count = 0.0, invdst = 0.0 # <<<<<<<<<<<<<< @@ -1874,7 +1874,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_v_count = 0.0; __pyx_v_invdst = 0.0; - /* "pyFAI/ext/reconstruct.pyx":60 + /* "pyFAI/ext/reconstruct.pyx":62 * size_t dist = 0, i = 0 * float sum = 0.0, count = 0.0, invdst = 0.0 * bint found = 0 # <<<<<<<<<<<<<< @@ -1883,7 +1883,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_found = 0; - /* "pyFAI/ext/reconstruct.pyx":61 + /* "pyFAI/ext/reconstruct.pyx":63 * float sum = 0.0, count = 0.0, invdst = 0.0 * bint found = 0 * size_t start0 = p0, stop0 = p0, start1 = p1, stop1 = p1 # <<<<<<<<<<<<<< @@ -1895,7 +1895,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_v_start1 = __pyx_v_p1; __pyx_v_stop1 = __pyx_v_p1; - /* "pyFAI/ext/reconstruct.pyx":62 + /* "pyFAI/ext/reconstruct.pyx":64 * bint found = 0 * size_t start0 = p0, stop0 = p0, start1 = p1, stop1 = p1 * while not found: # <<<<<<<<<<<<<< @@ -1906,7 +1906,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_t_1 = ((!(__pyx_v_found != 0)) != 0); if (!__pyx_t_1) break; - /* "pyFAI/ext/reconstruct.pyx":63 + /* "pyFAI/ext/reconstruct.pyx":65 * size_t start0 = p0, stop0 = p0, start1 = p1, stop1 = p1 * while not found: * dist += 1 # <<<<<<<<<<<<<< @@ -1915,7 +1915,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_dist = (__pyx_v_dist + 1); - /* "pyFAI/ext/reconstruct.pyx":64 + /* "pyFAI/ext/reconstruct.pyx":66 * while not found: * dist += 1 * if start0 > 0: # <<<<<<<<<<<<<< @@ -1925,7 +1925,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_t_1 = ((__pyx_v_start0 > 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":65 + /* "pyFAI/ext/reconstruct.pyx":67 * dist += 1 * if start0 > 0: * start0 = p0 - dist # <<<<<<<<<<<<<< @@ -1937,7 +1937,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } /*else*/ { - /* "pyFAI/ext/reconstruct.pyx":67 + /* "pyFAI/ext/reconstruct.pyx":69 * start0 = p0 - dist * else: * start0 = 0 # <<<<<<<<<<<<<< @@ -1948,7 +1948,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } __pyx_L5:; - /* "pyFAI/ext/reconstruct.pyx":68 + /* "pyFAI/ext/reconstruct.pyx":70 * else: * start0 = 0 * if stop0 < d0 - 1: # <<<<<<<<<<<<<< @@ -1958,7 +1958,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_t_1 = ((__pyx_v_stop0 < (__pyx_v_d0 - 1)) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":69 + /* "pyFAI/ext/reconstruct.pyx":71 * start0 = 0 * if stop0 < d0 - 1: * stop0 = p0 + dist # <<<<<<<<<<<<<< @@ -1970,7 +1970,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } /*else*/ { - /* "pyFAI/ext/reconstruct.pyx":71 + /* "pyFAI/ext/reconstruct.pyx":73 * stop0 = p0 + dist * else: * stop0 = d0 - 1 # <<<<<<<<<<<<<< @@ -1981,7 +1981,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } __pyx_L6:; - /* "pyFAI/ext/reconstruct.pyx":72 + /* "pyFAI/ext/reconstruct.pyx":74 * else: * stop0 = d0 - 1 * if start1 > 0: # <<<<<<<<<<<<<< @@ -1991,7 +1991,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_t_1 = ((__pyx_v_start1 > 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":73 + /* "pyFAI/ext/reconstruct.pyx":75 * stop0 = d0 - 1 * if start1 > 0: * start1 = p1 - dist # <<<<<<<<<<<<<< @@ -2003,7 +2003,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } /*else*/ { - /* "pyFAI/ext/reconstruct.pyx":75 + /* "pyFAI/ext/reconstruct.pyx":77 * start1 = p1 - dist * else: * start1 = 0 # <<<<<<<<<<<<<< @@ -2014,7 +2014,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } __pyx_L7:; - /* "pyFAI/ext/reconstruct.pyx":76 + /* "pyFAI/ext/reconstruct.pyx":78 * else: * start1 = 0 * if stop1 < d1 - 1: # <<<<<<<<<<<<<< @@ -2024,7 +2024,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_t_1 = ((__pyx_v_stop1 < (__pyx_v_d1 - 1)) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":77 + /* "pyFAI/ext/reconstruct.pyx":79 * start1 = 0 * if stop1 < d1 - 1: * stop1 = p1 + dist # <<<<<<<<<<<<<< @@ -2036,7 +2036,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } /*else*/ { - /* "pyFAI/ext/reconstruct.pyx":79 + /* "pyFAI/ext/reconstruct.pyx":81 * stop1 = p1 + dist * else: * stop1 = d1 - 1 # <<<<<<<<<<<<<< @@ -2047,7 +2047,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ } __pyx_L8:; - /* "pyFAI/ext/reconstruct.pyx":80 + /* "pyFAI/ext/reconstruct.pyx":82 * else: * stop1 = d1 - 1 * for i in range(start0, stop0 + 1): # <<<<<<<<<<<<<< @@ -2058,7 +2058,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ for (__pyx_t_3 = __pyx_v_start0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "pyFAI/ext/reconstruct.pyx":81 + /* "pyFAI/ext/reconstruct.pyx":83 * stop1 = d1 - 1 * for i in range(start0, stop0 + 1): * if mask[i, start1] == 0: # <<<<<<<<<<<<<< @@ -2067,10 +2067,10 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_4 = __pyx_v_i; __pyx_t_5 = __pyx_v_start1; - __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_4 * __pyx_v_mask.strides[0]) ) + __pyx_t_5 * __pyx_v_mask.strides[1]) ))) == 0) != 0); + __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_4 * __pyx_v_mask.strides[0]) )) + __pyx_t_5)) ))) == 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":82 + /* "pyFAI/ext/reconstruct.pyx":84 * for i in range(start0, stop0 + 1): * if mask[i, start1] == 0: * invdst = invert_distance(i, start1, p0, p1) # <<<<<<<<<<<<<< @@ -2079,7 +2079,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_invdst = __pyx_f_5pyFAI_3ext_11reconstruct_invert_distance(__pyx_v_i, __pyx_v_start1, __pyx_v_p0, __pyx_v_p1); - /* "pyFAI/ext/reconstruct.pyx":83 + /* "pyFAI/ext/reconstruct.pyx":85 * if mask[i, start1] == 0: * invdst = invert_distance(i, start1, p0, p1) * count += invdst # <<<<<<<<<<<<<< @@ -2088,7 +2088,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_count = (__pyx_v_count + __pyx_v_invdst); - /* "pyFAI/ext/reconstruct.pyx":84 + /* "pyFAI/ext/reconstruct.pyx":86 * invdst = invert_distance(i, start1, p0, p1) * count += invdst * sum += invdst * data[i, start1] # <<<<<<<<<<<<<< @@ -2097,12 +2097,12 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_6 = __pyx_v_i; __pyx_t_7 = __pyx_v_start1; - __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_6 * __pyx_v_data.strides[0]) ) + __pyx_t_7 * __pyx_v_data.strides[1]) ))))); + __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_6 * __pyx_v_data.strides[0]) )) + __pyx_t_7)) ))))); goto __pyx_L11; } __pyx_L11:; - /* "pyFAI/ext/reconstruct.pyx":85 + /* "pyFAI/ext/reconstruct.pyx":87 * count += invdst * sum += invdst * data[i, start1] * if mask[i, stop1] == 0: # <<<<<<<<<<<<<< @@ -2111,10 +2111,10 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_8 = __pyx_v_i; __pyx_t_9 = __pyx_v_stop1; - __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_8 * __pyx_v_mask.strides[0]) ) + __pyx_t_9 * __pyx_v_mask.strides[1]) ))) == 0) != 0); + __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_8 * __pyx_v_mask.strides[0]) )) + __pyx_t_9)) ))) == 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":86 + /* "pyFAI/ext/reconstruct.pyx":88 * sum += invdst * data[i, start1] * if mask[i, stop1] == 0: * invdst = invert_distance(i, stop1, p0, p1) # <<<<<<<<<<<<<< @@ -2123,7 +2123,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_invdst = __pyx_f_5pyFAI_3ext_11reconstruct_invert_distance(__pyx_v_i, __pyx_v_stop1, __pyx_v_p0, __pyx_v_p1); - /* "pyFAI/ext/reconstruct.pyx":87 + /* "pyFAI/ext/reconstruct.pyx":89 * if mask[i, stop1] == 0: * invdst = invert_distance(i, stop1, p0, p1) * count += invdst # <<<<<<<<<<<<<< @@ -2132,7 +2132,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_count = (__pyx_v_count + __pyx_v_invdst); - /* "pyFAI/ext/reconstruct.pyx":88 + /* "pyFAI/ext/reconstruct.pyx":90 * invdst = invert_distance(i, stop1, p0, p1) * count += invdst * sum += invdst * data[i, stop1] # <<<<<<<<<<<<<< @@ -2141,13 +2141,13 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_10 = __pyx_v_i; __pyx_t_11 = __pyx_v_stop1; - __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_10 * __pyx_v_data.strides[0]) ) + __pyx_t_11 * __pyx_v_data.strides[1]) ))))); + __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_10 * __pyx_v_data.strides[0]) )) + __pyx_t_11)) ))))); goto __pyx_L12; } __pyx_L12:; } - /* "pyFAI/ext/reconstruct.pyx":89 + /* "pyFAI/ext/reconstruct.pyx":91 * count += invdst * sum += invdst * data[i, stop1] * for i in range(start1 + 1, stop1): # <<<<<<<<<<<<<< @@ -2158,7 +2158,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ for (__pyx_t_3 = (__pyx_v_start1 + 1); __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "pyFAI/ext/reconstruct.pyx":90 + /* "pyFAI/ext/reconstruct.pyx":92 * sum += invdst * data[i, stop1] * for i in range(start1 + 1, stop1): * if mask[start0, i] == 0: # <<<<<<<<<<<<<< @@ -2167,10 +2167,10 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_12 = __pyx_v_start0; __pyx_t_13 = __pyx_v_i; - __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_12 * __pyx_v_mask.strides[0]) ) + __pyx_t_13 * __pyx_v_mask.strides[1]) ))) == 0) != 0); + __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_12 * __pyx_v_mask.strides[0]) )) + __pyx_t_13)) ))) == 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":91 + /* "pyFAI/ext/reconstruct.pyx":93 * for i in range(start1 + 1, stop1): * if mask[start0, i] == 0: * invdst = invert_distance(start0, i, p0, p1) # <<<<<<<<<<<<<< @@ -2179,7 +2179,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_invdst = __pyx_f_5pyFAI_3ext_11reconstruct_invert_distance(__pyx_v_start0, __pyx_v_i, __pyx_v_p0, __pyx_v_p1); - /* "pyFAI/ext/reconstruct.pyx":92 + /* "pyFAI/ext/reconstruct.pyx":94 * if mask[start0, i] == 0: * invdst = invert_distance(start0, i, p0, p1) * count += invdst # <<<<<<<<<<<<<< @@ -2188,7 +2188,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_count = (__pyx_v_count + __pyx_v_invdst); - /* "pyFAI/ext/reconstruct.pyx":93 + /* "pyFAI/ext/reconstruct.pyx":95 * invdst = invert_distance(start0, i, p0, p1) * count += invdst * sum += invdst * data[start0, i] # <<<<<<<<<<<<<< @@ -2197,12 +2197,12 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_14 = __pyx_v_start0; __pyx_t_15 = __pyx_v_i; - __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_14 * __pyx_v_data.strides[0]) ) + __pyx_t_15 * __pyx_v_data.strides[1]) ))))); + __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_14 * __pyx_v_data.strides[0]) )) + __pyx_t_15)) ))))); goto __pyx_L15; } __pyx_L15:; - /* "pyFAI/ext/reconstruct.pyx":94 + /* "pyFAI/ext/reconstruct.pyx":96 * count += invdst * sum += invdst * data[start0, i] * if mask[stop0, i] == 0: # <<<<<<<<<<<<<< @@ -2211,10 +2211,10 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_16 = __pyx_v_stop0; __pyx_t_17 = __pyx_v_i; - __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_16 * __pyx_v_mask.strides[0]) ) + __pyx_t_17 * __pyx_v_mask.strides[1]) ))) == 0) != 0); + __pyx_t_1 = (((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_mask.data + __pyx_t_16 * __pyx_v_mask.strides[0]) )) + __pyx_t_17)) ))) == 0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":95 + /* "pyFAI/ext/reconstruct.pyx":97 * sum += invdst * data[start0, i] * if mask[stop0, i] == 0: * invdst = invert_distance(stop0, i, p0, p1) # <<<<<<<<<<<<<< @@ -2223,7 +2223,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_invdst = __pyx_f_5pyFAI_3ext_11reconstruct_invert_distance(__pyx_v_stop0, __pyx_v_i, __pyx_v_p0, __pyx_v_p1); - /* "pyFAI/ext/reconstruct.pyx":96 + /* "pyFAI/ext/reconstruct.pyx":98 * if mask[stop0, i] == 0: * invdst = invert_distance(stop0, i, p0, p1) * count += invdst # <<<<<<<<<<<<<< @@ -2232,7 +2232,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_v_count = (__pyx_v_count + __pyx_v_invdst); - /* "pyFAI/ext/reconstruct.pyx":97 + /* "pyFAI/ext/reconstruct.pyx":99 * invdst = invert_distance(stop0, i, p0, p1) * count += invdst * sum += invdst * data[stop0, i] # <<<<<<<<<<<<<< @@ -2241,13 +2241,13 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ */ __pyx_t_18 = __pyx_v_stop0; __pyx_t_19 = __pyx_v_i; - __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_18 * __pyx_v_data.strides[0]) ) + __pyx_t_19 * __pyx_v_data.strides[1]) ))))); + __pyx_v_sum = (__pyx_v_sum + (__pyx_v_invdst * (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_18 * __pyx_v_data.strides[0]) )) + __pyx_t_19)) ))))); goto __pyx_L16; } __pyx_L16:; } - /* "pyFAI/ext/reconstruct.pyx":98 + /* "pyFAI/ext/reconstruct.pyx":100 * count += invdst * sum += invdst * data[stop0, i] * if count > 0: # <<<<<<<<<<<<<< @@ -2257,7 +2257,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_t_1 = ((__pyx_v_count > 0.0) != 0); if (__pyx_t_1) { - /* "pyFAI/ext/reconstruct.pyx":99 + /* "pyFAI/ext/reconstruct.pyx":101 * sum += invdst * data[stop0, i] * if count > 0: * found = 1 # <<<<<<<<<<<<<< @@ -2270,7 +2270,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_L17:; } - /* "pyFAI/ext/reconstruct.pyx":100 + /* "pyFAI/ext/reconstruct.pyx":102 * if count > 0: * found = 1 * return sum / count # <<<<<<<<<<<<<< @@ -2280,11 +2280,11 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ __pyx_r = (__pyx_v_sum / __pyx_v_count); goto __pyx_L0; - /* "pyFAI/ext/reconstruct.pyx":51 - * @cython.cdivision(True) - * @cython.boundscheck(False) - * cdef inline float processPoint(float[:, :] data, # <<<<<<<<<<<<<< - * numpy.int8_t[:, :] mask, + /* "pyFAI/ext/reconstruct.pyx":53 + * @cython.wraparound(False) + * @cython.initializedcheck(False) + * cdef inline float processPoint(float[:, ::1] data, # <<<<<<<<<<<<<< + * numpy.int8_t[:, ::1] mask, * size_t p0, */ @@ -2293,9 +2293,9 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ return __pyx_r; } -/* "pyFAI/ext/reconstruct.pyx":105 - * @cython.boundscheck(False) +/* "pyFAI/ext/reconstruct.pyx":109 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def reconstruct(numpy.ndarray data not None, numpy.ndarray mask=None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * reconstruct missing part of an image (tries to be continuous) @@ -2303,7 +2303,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_11reconstruct_processPoint(__Pyx_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_11reconstruct_1reconstruct(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_11reconstruct_reconstruct[] = "\n reconstruct missing part of an image (tries to be continuous)\n\n @param data: the input image\n @parma mask: where data should be reconstructed.\n @param dummy: value of the dummy (masked out) data\n @param delta_dummy: precision for dummy values\n\n @return: reconstructed image.\n "; +static char __pyx_doc_5pyFAI_3ext_11reconstruct_reconstruct[] = "reconstruct(ndarray data, ndarray mask=None, dummy=None, delta_dummy=None)\n\n reconstruct missing part of an image (tries to be continuous)\n\n :param data: the input image\n :param mask: where data should be reconstructed.\n :param dummy: value of the dummy (masked out) data\n :param delta_dummy: precision for dummy values\n\n :return: reconstructed image.\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_11reconstruct_1reconstruct = {"reconstruct", (PyCFunction)__pyx_pw_5pyFAI_3ext_11reconstruct_1reconstruct, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_11reconstruct_reconstruct}; static PyObject *__pyx_pw_5pyFAI_3ext_11reconstruct_1reconstruct(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_data = 0; @@ -2355,7 +2355,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11reconstruct_1reconstruct(PyObject *__pyx } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reconstruct") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reconstruct") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2374,14 +2374,14 @@ static PyObject *__pyx_pw_5pyFAI_3ext_11reconstruct_1reconstruct(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("reconstruct", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("reconstruct", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.reconstruct.reconstruct", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 0, "data", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 0, "data", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(__pyx_self, __pyx_v_data, __pyx_v_mask, __pyx_v_dummy, __pyx_v_delta_dummy); /* function exit code */ @@ -2439,8 +2439,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py __pyx_pybuffernd_out.data = NULL; __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - /* "pyFAI/ext/reconstruct.pyx":116 - * @return: reconstructed image. + /* "pyFAI/ext/reconstruct.pyx":120 + * :return: reconstructed image. * """ * assert data.ndim == 2, "data.ndim == 2" # <<<<<<<<<<<<<< * cdef: @@ -2450,78 +2450,78 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_data->nd == 2) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_data_ndim_2); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/reconstruct.pyx":118 + /* "pyFAI/ext/reconstruct.pyx":122 * assert data.ndim == 2, "data.ndim == 2" * cdef: * ssize_t d0 = data.shape[0] # <<<<<<<<<<<<<< * ssize_t d1 = data.shape[1] - * float[:, :] cdata + * float[:, ::1] cdata */ __pyx_v_d0 = (__pyx_v_data->dimensions[0]); - /* "pyFAI/ext/reconstruct.pyx":119 + /* "pyFAI/ext/reconstruct.pyx":123 * cdef: * ssize_t d0 = data.shape[0] * ssize_t d1 = data.shape[1] # <<<<<<<<<<<<<< - * float[:, :] cdata + * float[:, ::1] cdata * data = numpy.ascontiguousarray(data, dtype=numpy.float32) */ __pyx_v_d1 = (__pyx_v_data->dimensions[1]); - /* "pyFAI/ext/reconstruct.pyx":121 + /* "pyFAI/ext/reconstruct.pyx":125 * ssize_t d1 = data.shape[1] - * float[:, :] cdata + * float[:, ::1] cdata * data = numpy.ascontiguousarray(data, dtype=numpy.float32) # <<<<<<<<<<<<<< * cdata = data * if mask is not None: */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_data)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_data)); __Pyx_GIVEREF(((PyObject *)__pyx_v_data)); - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_5)); __pyx_t_5 = 0; - /* "pyFAI/ext/reconstruct.pyx":122 - * float[:, :] cdata + /* "pyFAI/ext/reconstruct.pyx":126 + * float[:, ::1] cdata * data = numpy.ascontiguousarray(data, dtype=numpy.float32) * cdata = data # <<<<<<<<<<<<<< * if mask is not None: * mask = numpy.ascontiguousarray(mask, dtype=numpy.int8) */ - __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_float(((PyObject *)__pyx_v_data)); - if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(((PyObject *)__pyx_v_data)); + if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_cdata = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; - /* "pyFAI/ext/reconstruct.pyx":123 + /* "pyFAI/ext/reconstruct.pyx":127 * data = numpy.ascontiguousarray(data, dtype=numpy.float32) * cdata = data * if mask is not None: # <<<<<<<<<<<<<< @@ -2532,61 +2532,61 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py __pyx_t_8 = (__pyx_t_7 != 0); if (__pyx_t_8) { - /* "pyFAI/ext/reconstruct.pyx":124 + /* "pyFAI/ext/reconstruct.pyx":128 * cdata = data * if mask is not None: * mask = numpy.ascontiguousarray(mask, dtype=numpy.int8) # <<<<<<<<<<<<<< * else: * mask = numpy.zeros((d0, d1), dtype=numpy.int8) */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_v_mask)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_mask)); __Pyx_GIVEREF(((PyObject *)__pyx_v_mask)); - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF_SET(__pyx_v_mask, ((PyArrayObject *)__pyx_t_4)); __pyx_t_4 = 0; goto __pyx_L3; } /*else*/ { - /* "pyFAI/ext/reconstruct.pyx":126 + /* "pyFAI/ext/reconstruct.pyx":130 * mask = numpy.ascontiguousarray(mask, dtype=numpy.int8) * else: * mask = numpy.zeros((d0, d1), dtype=numpy.int8) # <<<<<<<<<<<<<< * if dummy is not None: * if delta_dummy is None: */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_d0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_d0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_d1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_d1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); @@ -2594,32 +2594,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py __Pyx_GIVEREF(__pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF_SET(__pyx_v_mask, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0; } __pyx_L3:; - /* "pyFAI/ext/reconstruct.pyx":127 + /* "pyFAI/ext/reconstruct.pyx":131 * else: * mask = numpy.zeros((d0, d1), dtype=numpy.int8) * if dummy is not None: # <<<<<<<<<<<<<< @@ -2630,7 +2630,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py __pyx_t_7 = (__pyx_t_8 != 0); if (__pyx_t_7) { - /* "pyFAI/ext/reconstruct.pyx":128 + /* "pyFAI/ext/reconstruct.pyx":132 * mask = numpy.zeros((d0, d1), dtype=numpy.int8) * if dummy is not None: * if delta_dummy is None: # <<<<<<<<<<<<<< @@ -2641,42 +2641,42 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py __pyx_t_8 = (__pyx_t_7 != 0); if (__pyx_t_8) { - /* "pyFAI/ext/reconstruct.pyx":129 + /* "pyFAI/ext/reconstruct.pyx":133 * if dummy is not None: * if delta_dummy is None: * mask += (data == dummy) # <<<<<<<<<<<<<< * else: * mask += (abs(data - dummy) <= delta_dummy) */ - __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_data), __pyx_v_dummy, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_mask), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_data), __pyx_v_dummy, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_mask), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF_SET(__pyx_v_mask, ((PyArrayObject *)__pyx_t_3)); __pyx_t_3 = 0; goto __pyx_L5; } /*else*/ { - /* "pyFAI/ext/reconstruct.pyx":131 + /* "pyFAI/ext/reconstruct.pyx":135 * mask += (data == dummy) * else: * mask += (abs(data - dummy) <= delta_dummy) # <<<<<<<<<<<<<< - * cdef numpy.int8_t[:, :] cmask = mask.astype(numpy.int8) - * assert d0 == mask.shape[0], "mask.shape[0]" + * cdef: + * numpy.int8_t[:, ::1] cmask = mask.astype(numpy.int8) */ - __pyx_t_3 = PyNumber_Subtract(((PyObject *)__pyx_v_data), __pyx_v_dummy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Subtract(((PyObject *)__pyx_v_data), __pyx_v_dummy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Absolute(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_Absolute(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_v_delta_dummy, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_v_delta_dummy, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_mask), __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_mask), __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF_SET(__pyx_v_mask, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0; } @@ -2685,18 +2685,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py } __pyx_L4:; - /* "pyFAI/ext/reconstruct.pyx":132 - * else: + /* "pyFAI/ext/reconstruct.pyx":137 * mask += (abs(data - dummy) <= delta_dummy) - * cdef numpy.int8_t[:, :] cmask = mask.astype(numpy.int8) # <<<<<<<<<<<<<< + * cdef: + * numpy.int8_t[:, ::1] cmask = mask.astype(numpy.int8) # <<<<<<<<<<<<<< * assert d0 == mask.shape[0], "mask.shape[0]" * assert d1 == mask.shape[1], "mask.shape[1]" */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_mask), __pyx_n_s_astype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_mask), __pyx_n_s_astype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; @@ -2710,31 +2710,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(__pyx_t_2); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(__pyx_t_2); + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cmask = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/reconstruct.pyx":133 - * mask += (abs(data - dummy) <= delta_dummy) - * cdef numpy.int8_t[:, :] cmask = mask.astype(numpy.int8) + /* "pyFAI/ext/reconstruct.pyx":138 + * cdef: + * numpy.int8_t[:, ::1] cmask = mask.astype(numpy.int8) * assert d0 == mask.shape[0], "mask.shape[0]" # <<<<<<<<<<<<<< * assert d1 == mask.shape[1], "mask.shape[1]" * cdef numpy.ndarray[numpy.float32_t, ndim = 2]out = numpy.zeros_like(data) @@ -2743,13 +2743,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_d0 == (__pyx_v_mask->dimensions[0])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_mask_shape_0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/reconstruct.pyx":134 - * cdef numpy.int8_t[:, :] cmask = mask.astype(numpy.int8) + /* "pyFAI/ext/reconstruct.pyx":139 + * numpy.int8_t[:, ::1] cmask = mask.astype(numpy.int8) * assert d0 == mask.shape[0], "mask.shape[0]" * assert d1 == mask.shape[1], "mask.shape[1]" # <<<<<<<<<<<<<< * cdef numpy.ndarray[numpy.float32_t, ndim = 2]out = numpy.zeros_like(data) @@ -2759,21 +2759,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_d1 == (__pyx_v_mask->dimensions[1])) != 0))) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_mask_shape_1); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/reconstruct.pyx":135 + /* "pyFAI/ext/reconstruct.pyx":140 * assert d0 == mask.shape[0], "mask.shape[0]" * assert d1 == mask.shape[1], "mask.shape[1]" * cdef numpy.ndarray[numpy.float32_t, ndim = 2]out = numpy.zeros_like(data) # <<<<<<<<<<<<<< * out += data * out[mask.astype(bool)] = 0 */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros_like); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros_like); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -2787,27 +2787,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_data)); PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_data)); __Pyx_GIVEREF(((PyObject *)__pyx_v_data)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_10 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_out.diminfo[1].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out.diminfo[1].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[1]; } } @@ -2815,16 +2815,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py __pyx_v_out = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/reconstruct.pyx":136 + /* "pyFAI/ext/reconstruct.pyx":141 * assert d1 == mask.shape[1], "mask.shape[1]" * cdef numpy.ndarray[numpy.float32_t, ndim = 2]out = numpy.zeros_like(data) * out += data # <<<<<<<<<<<<<< * out[mask.astype(bool)] = 0 * */ - __pyx_t_2 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_out), ((PyObject *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_out), ((PyObject *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_10 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; @@ -2840,20 +2840,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py } } __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_out.diminfo[1].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out.diminfo[1].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[1]; - if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = 0; __Pyx_DECREF_SET(__pyx_v_out, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0; - /* "pyFAI/ext/reconstruct.pyx":137 + /* "pyFAI/ext/reconstruct.pyx":142 * cdef numpy.ndarray[numpy.float32_t, ndim = 2]out = numpy.zeros_like(data) * out += data * out[mask.astype(bool)] = 0 # <<<<<<<<<<<<<< * * cdef ssize_t p0, p1, i, l */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_mask), __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_mask), __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -2866,24 +2866,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py } } if (!__pyx_t_1) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; __Pyx_INCREF(((PyObject*)&PyBool_Type)); PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject*)&PyBool_Type)); __Pyx_GIVEREF(((PyObject*)&PyBool_Type)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_out), __pyx_t_2, __pyx_int_0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_out), __pyx_t_2, __pyx_int_0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/reconstruct.pyx":140 + /* "pyFAI/ext/reconstruct.pyx":145 * * cdef ssize_t p0, p1, i, l * for p0 in prange(d0, nogil=True, schedule="guided"): # <<<<<<<<<<<<<< @@ -2909,11 +2909,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_8, __pyx_t_22, __pyx_t_21, __pyx_t_23, __pyx_t_19, __pyx_t_18) + #pragma omp parallel private(__pyx_t_19, __pyx_t_8, __pyx_t_18, __pyx_t_20, __pyx_t_22, __pyx_t_23, __pyx_t_21) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_p0) lastprivate(__pyx_v_p0) lastprivate(__pyx_v_p1) schedule(guided) + #pragma omp for lastprivate(__pyx_v_p1) firstprivate(__pyx_v_p0) lastprivate(__pyx_v_p0) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_17; __pyx_t_16++){ { @@ -2921,7 +2921,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py /* Initialize private variables to invalid values */ __pyx_v_p1 = ((Py_ssize_t)0xbad0bad0); - /* "pyFAI/ext/reconstruct.pyx":141 + /* "pyFAI/ext/reconstruct.pyx":146 * cdef ssize_t p0, p1, i, l * for p0 in prange(d0, nogil=True, schedule="guided"): * for p1 in range(d1): # <<<<<<<<<<<<<< @@ -2932,7 +2932,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) { __pyx_v_p1 = __pyx_t_19; - /* "pyFAI/ext/reconstruct.pyx":142 + /* "pyFAI/ext/reconstruct.pyx":147 * for p0 in prange(d0, nogil=True, schedule="guided"): * for p1 in range(d1): * if cmask[p0, p1]: # <<<<<<<<<<<<<< @@ -2941,10 +2941,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py */ __pyx_t_20 = __pyx_v_p0; __pyx_t_21 = __pyx_v_p1; - __pyx_t_8 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_20 * __pyx_v_cmask.strides[0]) ) + __pyx_t_21 * __pyx_v_cmask.strides[1]) ))) != 0); + __pyx_t_8 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int8_t *) ( /* dim=0 */ (__pyx_v_cmask.data + __pyx_t_20 * __pyx_v_cmask.strides[0]) )) + __pyx_t_21)) ))) != 0); if (__pyx_t_8) { - /* "pyFAI/ext/reconstruct.pyx":143 + /* "pyFAI/ext/reconstruct.pyx":148 * for p1 in range(d1): * if cmask[p0, p1]: * out[p0, p1] += processPoint(cdata, cmask, p0, p1, d0, d1) # <<<<<<<<<<<<<< @@ -2971,7 +2971,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py #endif } - /* "pyFAI/ext/reconstruct.pyx":140 + /* "pyFAI/ext/reconstruct.pyx":145 * * cdef ssize_t p0, p1, i, l * for p0 in prange(d0, nogil=True, schedule="guided"): # <<<<<<<<<<<<<< @@ -2989,7 +2989,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py } } - /* "pyFAI/ext/reconstruct.pyx":144 + /* "pyFAI/ext/reconstruct.pyx":149 * if cmask[p0, p1]: * out[p0, p1] += processPoint(cdata, cmask, p0, p1, d0, d1) * return out # <<<<<<<<<<<<<< @@ -3000,9 +3000,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py __pyx_r = ((PyObject *)__pyx_v_out); goto __pyx_L0; - /* "pyFAI/ext/reconstruct.pyx":105 - * @cython.boundscheck(False) + /* "pyFAI/ext/reconstruct.pyx":109 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def reconstruct(numpy.ndarray data not None, numpy.ndarray mask=None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * reconstruct missing part of an image (tries to be continuous) @@ -3037,7 +3037,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3087,7 +3087,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -3100,7 +3100,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -3109,7 +3109,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -3118,7 +3118,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -3127,7 +3127,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3137,7 +3137,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -3149,7 +3149,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -3160,7 +3160,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3174,7 +3174,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3186,7 +3186,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -3200,7 +3200,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -3214,7 +3214,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -3226,7 +3226,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -3240,7 +3240,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -3249,7 +3249,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -3258,7 +3258,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -3268,7 +3268,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -3277,7 +3277,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -3286,7 +3286,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -3297,7 +3297,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -3306,7 +3306,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -3319,7 +3319,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -3328,7 +3328,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -3339,7 +3339,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -3348,7 +3348,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -3357,7 +3357,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -3366,7 +3366,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -3375,7 +3375,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -3387,7 +3387,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -3396,7 +3396,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -3414,7 +3414,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -3430,7 +3430,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -3445,7 +3445,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -3455,7 +3455,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -3465,7 +3465,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -3485,7 +3485,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -3503,7 +3503,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -3517,7 +3517,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -3526,7 +3526,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -3537,7 +3537,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -3548,7 +3548,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -3559,7 +3559,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -3570,7 +3570,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -3581,7 +3581,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -3592,7 +3592,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -3603,7 +3603,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -3614,7 +3614,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -3625,7 +3625,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -3636,7 +3636,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -3647,7 +3647,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -3658,7 +3658,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -3669,7 +3669,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -3680,7 +3680,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -3691,7 +3691,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -3702,7 +3702,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -3714,7 +3714,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -3740,7 +3740,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -3749,7 +3749,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -3761,7 +3761,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -3770,7 +3770,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -3779,7 +3779,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -3788,7 +3788,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -3798,7 +3798,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -3808,7 +3808,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3840,7 +3840,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -3864,7 +3864,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -3874,7 +3874,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -3886,7 +3886,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3896,7 +3896,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -3908,7 +3908,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -3920,7 +3920,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -3937,7 +3937,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -3951,7 +3951,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -3970,7 +3970,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -3987,7 +3987,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -4001,7 +4001,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -4020,7 +4020,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4037,7 +4037,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -4051,7 +4051,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -4070,7 +4070,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4087,7 +4087,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -4101,7 +4101,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -4120,7 +4120,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4137,7 +4137,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -4151,7 +4151,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -4170,7 +4170,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -4202,7 +4202,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -4211,7 +4211,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -4220,7 +4220,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -4242,7 +4242,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -4255,7 +4255,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -4294,7 +4294,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -4311,7 +4311,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -4325,7 +4325,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -4345,7 +4345,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -4363,7 +4363,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -4377,7 +4377,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -4393,7 +4393,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -4402,7 +4402,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -4411,7 +4411,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -4422,7 +4422,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -4432,7 +4432,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -4442,7 +4442,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -4454,7 +4454,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -4464,7 +4464,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -4478,7 +4478,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -4496,7 +4496,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -4514,7 +4514,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -4532,7 +4532,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -4550,7 +4550,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -4568,7 +4568,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -4586,7 +4586,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -4604,7 +4604,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -4622,7 +4622,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -4640,7 +4640,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -4658,7 +4658,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -4676,7 +4676,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -4694,7 +4694,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -4712,7 +4712,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -4732,7 +4732,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -4752,7 +4752,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -4772,7 +4772,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -4791,7 +4791,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -4814,7 +4814,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -4826,7 +4826,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -4838,7 +4838,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -4848,7 +4848,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -4858,7 +4858,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -4883,7 +4883,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -4898,7 +4898,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -4909,7 +4909,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -4921,7 +4921,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -4930,7 +4930,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -4941,7 +4941,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -4950,7 +4950,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -4959,7 +4959,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -4971,7 +4971,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -4985,7 +4985,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -4995,7 +4995,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -5009,7 +5009,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -5020,7 +5020,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -16347,7 +16347,7 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_27_09_2016, __pyx_k_27_09_2016, sizeof(__pyx_k_27_09_2016), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_index_with_type_s, __pyx_k_Cannot_index_with_type_s, sizeof(__pyx_k_Cannot_index_with_type_s), 0, 0, 1, 0}, @@ -16457,7 +16457,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16480,7 +16480,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -16491,7 +16491,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -16502,7 +16502,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16513,7 +16513,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -16524,7 +16524,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16535,7 +16535,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -16667,17 +16667,17 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "pyFAI/ext/reconstruct.pyx":105 - * @cython.boundscheck(False) + /* "pyFAI/ext/reconstruct.pyx":109 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def reconstruct(numpy.ndarray data not None, numpy.ndarray mask=None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * reconstruct missing part of an image (tries to be continuous) */ - __pyx_tuple__18 = PyTuple_Pack(13, __pyx_n_s_data, __pyx_n_s_mask, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_d0, __pyx_n_s_d1, __pyx_n_s_cdata, __pyx_n_s_cmask, __pyx_n_s_out, __pyx_n_s_p0, __pyx_n_s_p1, __pyx_n_s_i, __pyx_n_s_l); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__18 = PyTuple_Pack(13, __pyx_n_s_data, __pyx_n_s_mask, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_d0, __pyx_n_s_d1, __pyx_n_s_cdata, __pyx_n_s_cmask, __pyx_n_s_out, __pyx_n_s_p0, __pyx_n_s_p1, __pyx_n_s_i, __pyx_n_s_l); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(4, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_reconstruct, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(4, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_reconstruct, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -16900,7 +16900,7 @@ PyMODINIT_FUNC PyInit_reconstruct(void) * __doc__ = """Cython module to reconstruct the masked values of an image""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16908,7 +16908,7 @@ PyMODINIT_FUNC PyInit_reconstruct(void) * __doc__ = """Cython module to reconstruct the masked values of an image""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16916,15 +16916,15 @@ PyMODINIT_FUNC PyInit_reconstruct(void) /* "pyFAI/ext/reconstruct.pyx":32 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __status__ = "stable" * __license__ = "MIT" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_27_09_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/reconstruct.pyx":33 * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" # <<<<<<<<<<<<<< * __license__ = "MIT" * @@ -16932,7 +16932,7 @@ PyMODINIT_FUNC PyInit_reconstruct(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/reconstruct.pyx":34 - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< * @@ -16952,16 +16952,16 @@ PyMODINIT_FUNC PyInit_reconstruct(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/reconstruct.pyx":105 - * @cython.boundscheck(False) + /* "pyFAI/ext/reconstruct.pyx":109 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def reconstruct(numpy.ndarray data not None, numpy.ndarray mask=None, dummy=None, delta_dummy=None): # <<<<<<<<<<<<<< * """ * reconstruct missing part of an image (tries to be continuous) */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11reconstruct_1reconstruct, NULL, __pyx_n_s_pyFAI_ext_reconstruct); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_11reconstruct_1reconstruct, NULL, __pyx_n_s_pyFAI_ext_reconstruct); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reconstruct, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_reconstruct, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyFAI/ext/reconstruct.pyx":1 @@ -20030,17 +20030,17 @@ static int __Pyx_ValidateAndInit_memviewslice( return retval; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 2, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, &__Pyx_TypeInfo_float, stack, &result, obj); if (unlikely(retcode == -1)) @@ -20052,17 +20052,17 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_f return result; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 2, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, stack, &result, obj); if (unlikely(retcode == -1)) diff --git a/pyFAI/ext/reconstruct.pyx b/pyFAI/ext/reconstruct.pyx index 6c930d7db..6101206df 100644 --- a/pyFAI/ext/reconstruct.pyx +++ b/pyFAI/ext/reconstruct.pyx @@ -29,7 +29,7 @@ __doc__ = """Cython module to reconstruct the masked values of an image""" __author__ = "Jerome Kieffer" __contact__ = "Jerome.kieffer@esrf.fr" -__date__ = "27/09/2016" +__date__ = "01/12/2016" __status__ = "stable" __license__ = "MIT" @@ -46,10 +46,12 @@ cdef float invert_distance(size_t i0, size_t i1, size_t p0, size_t p1) nogil: return 1. / sqrt( ((i0 - p0) ** 2 + (i1 - p1) ** 2)) -@cython.cdivision(True) @cython.boundscheck(False) -cdef inline float processPoint(float[:, :] data, - numpy.int8_t[:, :] mask, +@cython.cdivision(True) +@cython.wraparound(False) +@cython.initializedcheck(False) +cdef inline float processPoint(float[:, ::1] data, + numpy.int8_t[:, ::1] mask, size_t p0, size_t p1, size_t d0, @@ -101,23 +103,25 @@ cdef inline float processPoint(float[:, :] data, @cython.boundscheck(False) +@cython.cdivision(True) @cython.wraparound(False) +@cython.initializedcheck(False) def reconstruct(numpy.ndarray data not None, numpy.ndarray mask=None, dummy=None, delta_dummy=None): """ reconstruct missing part of an image (tries to be continuous) - @param data: the input image - @parma mask: where data should be reconstructed. - @param dummy: value of the dummy (masked out) data - @param delta_dummy: precision for dummy values + :param data: the input image + :param mask: where data should be reconstructed. + :param dummy: value of the dummy (masked out) data + :param delta_dummy: precision for dummy values - @return: reconstructed image. + :return: reconstructed image. """ assert data.ndim == 2, "data.ndim == 2" cdef: ssize_t d0 = data.shape[0] ssize_t d1 = data.shape[1] - float[:, :] cdata + float[:, ::1] cdata data = numpy.ascontiguousarray(data, dtype=numpy.float32) cdata = data if mask is not None: @@ -129,7 +133,8 @@ def reconstruct(numpy.ndarray data not None, numpy.ndarray mask=None, dummy=None mask += (data == dummy) else: mask += (abs(data - dummy) <= delta_dummy) - cdef numpy.int8_t[:, :] cmask = mask.astype(numpy.int8) + cdef: + numpy.int8_t[:, ::1] cmask = mask.astype(numpy.int8) assert d0 == mask.shape[0], "mask.shape[0]" assert d1 == mask.shape[1], "mask.shape[1]" cdef numpy.ndarray[numpy.float32_t, ndim = 2]out = numpy.zeros_like(data) diff --git a/pyFAI/ext/relabel.c b/pyFAI/ext/relabel.c index d70602e58..2c9c60961 100644 --- a/pyFAI/ext/relabel.c +++ b/pyFAI/ext/relabel.c @@ -445,7 +445,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/relabel.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", }; #define IS_UNSIGNED(type) (((type) -1) > 0) @@ -540,7 +540,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -549,7 +549,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -558,7 +558,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -567,7 +567,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -576,7 +576,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -585,7 +585,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -594,7 +594,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -603,7 +603,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -612,7 +612,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -621,7 +621,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -630,7 +630,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -639,7 +639,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -648,7 +648,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -657,7 +657,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -666,7 +666,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -675,7 +675,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -684,7 +684,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -693,7 +693,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -702,7 +702,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -711,7 +711,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -720,7 +720,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -755,7 +755,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -764,7 +764,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -773,7 +773,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -782,7 +782,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1360,9 +1360,9 @@ static int __Pyx_ValidateAndInit_memviewslice( __Pyx_memviewslice *memviewslice, PyObject *original_obj); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint32_t(PyObject *); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *); static int __Pyx_check_binary_version(void); @@ -1598,7 +1598,7 @@ static char __pyx_k_TypeError[] = "TypeError"; static char __pyx_k_countThem[] = "countThem"; static char __pyx_k_enumerate[] = "enumerate"; static char __pyx_k_maxBlured[] = "maxBlured"; -static char __pyx_k_27_09_2016[] = "27/09/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_cdata_size[] = "cdata.size"; @@ -1647,7 +1647,7 @@ static char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents static char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; static char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; -static PyObject *__pyx_kp_s_27_09_2016; +static PyObject *__pyx_kp_s_01_12_2016; static PyObject *__pyx_kp_s_A_module_to_relabel_regions; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; @@ -1785,9 +1785,9 @@ static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_codeobj__19; -/* "pyFAI/ext/relabel.pyx":38 - * @cython.boundscheck(False) +/* "pyFAI/ext/relabel.pyx":40 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def countThem(numpy.ndarray label not None, \ # <<<<<<<<<<<<<< * numpy.ndarray data not None, \ * numpy.ndarray blured not None): @@ -1795,7 +1795,7 @@ static PyObject *__pyx_codeobj__19; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_7relabel_1countThem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_7relabel_countThem[] = "\n @param label: 2D array containing labeled zones\n @param data: 2D array containing the raw data\n @param blured: 2D array containing the blured data\n @return: 2D arrays containing:\n * count pixels in labelled zone: label == index).sum()\n * max of data in that zone: data[label == index].max()\n * max of blured in that zone: blured[label == index].max()\n * data-blured where data is max.\n "; +static char __pyx_doc_5pyFAI_3ext_7relabel_countThem[] = "countThem(ndarray label, ndarray data, ndarray blured)\nCount \n :param label: 2D array containing labeled zones\n :param data: 2D array containing the raw data\n :param blured: 2D array containing the blured data\n :return: 2D arrays containing:\n * count pixels in labelled zone: label == index).sum()\n * max of data in that zone: data[label == index].max()\n * max of blured in that zone: blured[label == index].max()\n * data-blured where data is max.\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_7relabel_1countThem = {"countThem", (PyCFunction)__pyx_pw_5pyFAI_3ext_7relabel_1countThem, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_7relabel_countThem}; static PyObject *__pyx_pw_5pyFAI_3ext_7relabel_1countThem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_label = 0; @@ -1828,16 +1828,16 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7relabel_1countThem(PyObject *__pyx_self, case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blured)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "countThem") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "countThem") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -1852,15 +1852,15 @@ static PyObject *__pyx_pw_5pyFAI_3ext_7relabel_1countThem(PyObject *__pyx_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("countThem", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.relabel.countThem", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), __pyx_ptype_5numpy_ndarray, 0, "label", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 0, "data", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_blured), __pyx_ptype_5numpy_ndarray, 0, "blured", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_label), __pyx_ptype_5numpy_ndarray, 0, "label", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_5numpy_ndarray, 0, "data", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_blured), __pyx_ptype_5numpy_ndarray, 0, "blured", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_7relabel_countThem(__pyx_self, __pyx_v_label, __pyx_v_data, __pyx_v_blured); /* function exit code */ @@ -1942,19 +1942,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_pybuffernd_maxDelta.data = NULL; __pyx_pybuffernd_maxDelta.rcbuffer = &__pyx_pybuffer_maxDelta; - /* "pyFAI/ext/relabel.pyx":52 + /* "pyFAI/ext/relabel.pyx":54 * """ * cdef: - * numpy.uint32_t[:] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) # <<<<<<<<<<<<<< - * float[:] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) - * float[:] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) + * numpy.uint32_t[::1] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) # <<<<<<<<<<<<<< + * float[::1] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) + * float[::1] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_label), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_label), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -1967,52 +1967,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject } } if (__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(__pyx_t_5); - if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint32_t(__pyx_t_5); + if (unlikely(!__pyx_t_6.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_clabel = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; - /* "pyFAI/ext/relabel.pyx":53 + /* "pyFAI/ext/relabel.pyx":55 * cdef: - * numpy.uint32_t[:] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) - * float[:] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< - * float[:] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) + * numpy.uint32_t[::1] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) + * float[::1] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< + * float[::1] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) * size_t maxLabel = label.max() */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -2025,52 +2025,52 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject } } if (__pyx_t_2) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_4); - if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_4); + if (unlikely(!__pyx_t_7.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_cdata = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; - /* "pyFAI/ext/relabel.pyx":54 - * numpy.uint32_t[:] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) - * float[:] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) - * float[:] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< + /* "pyFAI/ext/relabel.pyx":56 + * numpy.uint32_t[::1] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) + * float[::1] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) + * float[::1] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) # <<<<<<<<<<<<<< * size_t maxLabel = label.max() * numpy.ndarray[numpy.uint_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.uint) */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_blured), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_blured), __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) { @@ -2083,47 +2083,47 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject } } if (__pyx_t_1) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_2); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_2); + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cblured = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/relabel.pyx":55 - * float[:] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) - * float[:] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) + /* "pyFAI/ext/relabel.pyx":57 + * float[::1] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) + * float[::1] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) * size_t maxLabel = label.max() # <<<<<<<<<<<<<< * numpy.ndarray[numpy.uint_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.uint) * numpy.ndarray[numpy.float32_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float32) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_label), __pyx_n_s_max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_label), __pyx_n_s_max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -2136,57 +2136,57 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject } } if (__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_maxLabel = __pyx_t_9; - /* "pyFAI/ext/relabel.pyx":56 - * float[:] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) + /* "pyFAI/ext/relabel.pyx":58 + * float[::1] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) * size_t maxLabel = label.max() * numpy.ndarray[numpy.uint_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.uint) # <<<<<<<<<<<<<< * numpy.ndarray[numpy.float32_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float32) * numpy.ndarray[numpy.float32_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float32) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_10 = ((PyArrayObject *)__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_count.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_count = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_count.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_count.diminfo[0].strides = __pyx_pybuffernd_count.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_count.diminfo[0].shape = __pyx_pybuffernd_count.rcbuffer->pybuffer.shape[0]; } } @@ -2194,46 +2194,46 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_v_count = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/relabel.pyx":57 + /* "pyFAI/ext/relabel.pyx":59 * size_t maxLabel = label.max() * numpy.ndarray[numpy.uint_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.uint) * numpy.ndarray[numpy.float32_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float32) # <<<<<<<<<<<<<< * numpy.ndarray[numpy.float32_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float32) * numpy.ndarray[numpy.float32_t, ndim = 1] maxDelta = numpy.zeros(maxLabel + 1, dtype=numpy.float32) */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_11 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_maxData.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_maxData = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_maxData.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_maxData.diminfo[0].strides = __pyx_pybuffernd_maxData.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_maxData.diminfo[0].shape = __pyx_pybuffernd_maxData.rcbuffer->pybuffer.shape[0]; } } @@ -2241,46 +2241,46 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_v_maxData = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/relabel.pyx":58 + /* "pyFAI/ext/relabel.pyx":60 * numpy.ndarray[numpy.uint_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.uint) * numpy.ndarray[numpy.float32_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float32) * numpy.ndarray[numpy.float32_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float32) # <<<<<<<<<<<<<< * numpy.ndarray[numpy.float32_t, ndim = 1] maxDelta = numpy.zeros(maxLabel + 1, dtype=numpy.float32) * int s, i, idx */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_12 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_maxBlured.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_maxBlured = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_maxBlured.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_maxBlured.diminfo[0].strides = __pyx_pybuffernd_maxBlured.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_maxBlured.diminfo[0].shape = __pyx_pybuffernd_maxBlured.rcbuffer->pybuffer.shape[0]; } } @@ -2288,46 +2288,46 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_v_maxBlured = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/relabel.pyx":59 + /* "pyFAI/ext/relabel.pyx":61 * numpy.ndarray[numpy.float32_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float32) * numpy.ndarray[numpy.float32_t, ndim = 1] maxBlured = numpy.zeros(maxLabel + 1, dtype=numpy.float32) * numpy.ndarray[numpy.float32_t, ndim = 1] maxDelta = numpy.zeros(maxLabel + 1, dtype=numpy.float32) # <<<<<<<<<<<<<< * int s, i, idx * float d, b */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_FromSize_t((__pyx_v_maxLabel + 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_13 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_maxDelta.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_maxDelta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_maxDelta.rcbuffer->pybuffer.buf = NULL; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_maxDelta.diminfo[0].strides = __pyx_pybuffernd_maxDelta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_maxDelta.diminfo[0].shape = __pyx_pybuffernd_maxDelta.rcbuffer->pybuffer.shape[0]; } } @@ -2335,20 +2335,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_v_maxDelta = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/relabel.pyx":62 + /* "pyFAI/ext/relabel.pyx":64 * int s, i, idx * float d, b * s = label.size # <<<<<<<<<<<<<< * assert s == cdata.size, "cdata.size" * assert s == cblured.size, "cblured.size" */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_label), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_label), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_s = __pyx_t_14; - /* "pyFAI/ext/relabel.pyx":63 + /* "pyFAI/ext/relabel.pyx":65 * float d, b * s = label.size * assert s == cdata.size, "cdata.size" # <<<<<<<<<<<<<< @@ -2357,26 +2357,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_cdata, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_cdata, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_15)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_cdata_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/relabel.pyx":64 + /* "pyFAI/ext/relabel.pyx":66 * s = label.size * assert s == cdata.size, "cdata.size" * assert s == cblured.size, "cblured.size" # <<<<<<<<<<<<<< @@ -2385,26 +2385,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_s); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_cblured, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_cblured, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_15)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_cblured_size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/relabel.pyx":65 + /* "pyFAI/ext/relabel.pyx":67 * assert s == cdata.size, "cdata.size" * assert s == cblured.size, "cblured.size" * with nogil: # <<<<<<<<<<<<<< @@ -2418,7 +2418,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject #endif /*try:*/ { - /* "pyFAI/ext/relabel.pyx":66 + /* "pyFAI/ext/relabel.pyx":68 * assert s == cblured.size, "cblured.size" * with nogil: * for i in range(s): # <<<<<<<<<<<<<< @@ -2429,7 +2429,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_14; __pyx_t_16+=1) { __pyx_v_i = __pyx_t_16; - /* "pyFAI/ext/relabel.pyx":67 + /* "pyFAI/ext/relabel.pyx":69 * with nogil: * for i in range(s): * idx = clabel[i] # <<<<<<<<<<<<<< @@ -2437,9 +2437,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject * b = cblured[i] */ __pyx_t_17 = __pyx_v_i; - __pyx_v_idx = (*((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ (__pyx_v_clabel.data + __pyx_t_17 * __pyx_v_clabel.strides[0]) ))); + __pyx_v_idx = (*((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_uint32_t *) __pyx_v_clabel.data) + __pyx_t_17)) ))); - /* "pyFAI/ext/relabel.pyx":68 + /* "pyFAI/ext/relabel.pyx":70 * for i in range(s): * idx = clabel[i] * d = cdata[i] # <<<<<<<<<<<<<< @@ -2447,9 +2447,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject * count[idx] += 1 */ __pyx_t_18 = __pyx_v_i; - __pyx_v_d = (*((float *) ( /* dim=0 */ (__pyx_v_cdata.data + __pyx_t_18 * __pyx_v_cdata.strides[0]) ))); + __pyx_v_d = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_cdata.data) + __pyx_t_18)) ))); - /* "pyFAI/ext/relabel.pyx":69 + /* "pyFAI/ext/relabel.pyx":71 * idx = clabel[i] * d = cdata[i] * b = cblured[i] # <<<<<<<<<<<<<< @@ -2457,9 +2457,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject * if d > maxData[idx]: */ __pyx_t_19 = __pyx_v_i; - __pyx_v_b = (*((float *) ( /* dim=0 */ (__pyx_v_cblured.data + __pyx_t_19 * __pyx_v_cblured.strides[0]) ))); + __pyx_v_b = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_cblured.data) + __pyx_t_19)) ))); - /* "pyFAI/ext/relabel.pyx":70 + /* "pyFAI/ext/relabel.pyx":72 * d = cdata[i] * b = cblured[i] * count[idx] += 1 # <<<<<<<<<<<<<< @@ -2469,7 +2469,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_t_20 = __pyx_v_idx; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint_t *, __pyx_pybuffernd_count.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_count.diminfo[0].strides) += 1; - /* "pyFAI/ext/relabel.pyx":71 + /* "pyFAI/ext/relabel.pyx":73 * b = cblured[i] * count[idx] += 1 * if d > maxData[idx]: # <<<<<<<<<<<<<< @@ -2480,7 +2480,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_t_15 = ((__pyx_v_d > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_maxData.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_maxData.diminfo[0].strides))) != 0); if (__pyx_t_15) { - /* "pyFAI/ext/relabel.pyx":72 + /* "pyFAI/ext/relabel.pyx":74 * count[idx] += 1 * if d > maxData[idx]: * maxData[idx] = d # <<<<<<<<<<<<<< @@ -2490,7 +2490,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_t_22 = __pyx_v_idx; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_maxData.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_maxData.diminfo[0].strides) = __pyx_v_d; - /* "pyFAI/ext/relabel.pyx":73 + /* "pyFAI/ext/relabel.pyx":75 * if d > maxData[idx]: * maxData[idx] = d * maxDelta[idx] = d - b # <<<<<<<<<<<<<< @@ -2503,7 +2503,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject } __pyx_L8:; - /* "pyFAI/ext/relabel.pyx":74 + /* "pyFAI/ext/relabel.pyx":76 * maxData[idx] = d * maxDelta[idx] = d - b * if b > maxBlured[idx]: # <<<<<<<<<<<<<< @@ -2514,12 +2514,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_t_15 = ((__pyx_v_b > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_maxBlured.rcbuffer->pybuffer.buf, __pyx_t_24, __pyx_pybuffernd_maxBlured.diminfo[0].strides))) != 0); if (__pyx_t_15) { - /* "pyFAI/ext/relabel.pyx":75 + /* "pyFAI/ext/relabel.pyx":77 * maxDelta[idx] = d - b * if b > maxBlured[idx]: * maxBlured[idx] = b # <<<<<<<<<<<<<< * return count, maxData, maxBlured, maxDelta - * */ __pyx_t_25 = __pyx_v_idx; *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_maxBlured.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_maxBlured.diminfo[0].strides) = __pyx_v_b; @@ -2529,7 +2528,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject } } - /* "pyFAI/ext/relabel.pyx":65 + /* "pyFAI/ext/relabel.pyx":67 * assert s == cdata.size, "cdata.size" * assert s == cblured.size, "cblured.size" * with nogil: # <<<<<<<<<<<<<< @@ -2547,15 +2546,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject } } - /* "pyFAI/ext/relabel.pyx":76 + /* "pyFAI/ext/relabel.pyx":78 * if b > maxBlured[idx]: * maxBlured[idx] = b * return count, maxData, maxBlured, maxDelta # <<<<<<<<<<<<<< - * - * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_count)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_count)); @@ -2573,9 +2570,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject __pyx_t_3 = 0; goto __pyx_L0; - /* "pyFAI/ext/relabel.pyx":38 - * @cython.boundscheck(False) + /* "pyFAI/ext/relabel.pyx":40 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def countThem(numpy.ndarray label not None, \ # <<<<<<<<<<<<<< * numpy.ndarray data not None, \ * numpy.ndarray blured not None): @@ -2619,7 +2616,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_7relabel_countThem(CYTHON_UNUSED PyObject return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -2669,7 +2666,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -2682,7 +2679,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -2691,7 +2688,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -2700,7 +2697,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -2709,7 +2706,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -2719,7 +2716,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -2731,7 +2728,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -2742,7 +2739,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -2756,7 +2753,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -2768,7 +2765,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -2782,7 +2779,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -2796,7 +2793,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -2808,7 +2805,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -2822,7 +2819,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -2831,7 +2828,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -2840,7 +2837,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -2850,7 +2847,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -2859,7 +2856,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -2868,7 +2865,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -2879,7 +2876,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -2888,7 +2885,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -2901,7 +2898,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -2910,7 +2907,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -2921,7 +2918,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -2930,7 +2927,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -2939,7 +2936,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -2948,7 +2945,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -2957,7 +2954,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -2969,7 +2966,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -2978,7 +2975,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -2996,7 +2993,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -3012,7 +3009,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -3027,7 +3024,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -3037,7 +3034,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -3047,7 +3044,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -3067,7 +3064,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -3085,7 +3082,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -3099,7 +3096,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -3108,7 +3105,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -3119,7 +3116,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -3130,7 +3127,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -3141,7 +3138,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -3152,7 +3149,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -3163,7 +3160,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -3174,7 +3171,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -3185,7 +3182,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -3196,7 +3193,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -3207,7 +3204,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -3218,7 +3215,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -3229,7 +3226,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -3240,7 +3237,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -3251,7 +3248,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -3262,7 +3259,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -3273,7 +3270,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -3284,7 +3281,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -3296,7 +3293,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -3322,7 +3319,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -3331,7 +3328,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -3343,7 +3340,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -3352,7 +3349,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -3361,7 +3358,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -3370,7 +3367,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -3380,7 +3377,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -3390,7 +3387,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -3422,7 +3419,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -3446,7 +3443,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -3456,7 +3453,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -3468,7 +3465,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -3478,7 +3475,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -3490,7 +3487,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -3502,7 +3499,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -3519,7 +3516,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -3533,7 +3530,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -3552,7 +3549,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -3569,7 +3566,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -3583,7 +3580,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -3602,7 +3599,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -3619,7 +3616,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -3633,7 +3630,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -3652,7 +3649,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -3669,7 +3666,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -3683,7 +3680,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -3702,7 +3699,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -3719,7 +3716,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -3733,7 +3730,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -3752,7 +3749,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -3784,7 +3781,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -3793,7 +3790,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -3802,7 +3799,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -3824,7 +3821,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -3837,7 +3834,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -3876,7 +3873,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -3893,7 +3890,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -3907,7 +3904,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -3927,7 +3924,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -3945,7 +3942,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -3959,7 +3956,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -3975,7 +3972,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -3984,7 +3981,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -3993,7 +3990,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -4004,7 +4001,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -4014,7 +4011,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -4024,7 +4021,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -4036,7 +4033,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -4046,7 +4043,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -4060,7 +4057,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -4078,7 +4075,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -4096,7 +4093,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -4114,7 +4111,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -4132,7 +4129,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -4150,7 +4147,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -4168,7 +4165,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -4186,7 +4183,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -4204,7 +4201,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -4222,7 +4219,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -4240,7 +4237,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -4258,7 +4255,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -4276,7 +4273,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -4294,7 +4291,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -4314,7 +4311,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -4334,7 +4331,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -4354,7 +4351,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -4373,7 +4370,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -4396,7 +4393,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -4408,7 +4405,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -4420,7 +4417,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -4430,7 +4427,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -4440,7 +4437,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -4465,7 +4462,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -4480,7 +4477,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -4491,7 +4488,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -4503,7 +4500,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -4512,7 +4509,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -4523,7 +4520,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -4532,7 +4529,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -4541,7 +4538,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -4553,7 +4550,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -4567,7 +4564,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -4577,7 +4574,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -4591,7 +4588,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -4602,7 +4599,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -15929,7 +15926,7 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_27_09_2016, __pyx_k_27_09_2016, sizeof(__pyx_k_27_09_2016), 0, 0, 1, 0}, + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_A_module_to_relabel_regions, __pyx_k_A_module_to_relabel_regions, sizeof(__pyx_k_A_module_to_relabel_regions), 0, 0, 1, 0}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, @@ -16042,7 +16039,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16065,7 +16062,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -16076,7 +16073,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -16087,7 +16084,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16098,7 +16095,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -16109,7 +16106,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16120,7 +16117,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -16252,17 +16249,17 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "pyFAI/ext/relabel.pyx":38 - * @cython.boundscheck(False) + /* "pyFAI/ext/relabel.pyx":40 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def countThem(numpy.ndarray label not None, \ # <<<<<<<<<<<<<< * numpy.ndarray data not None, \ * numpy.ndarray blured not None): */ - __pyx_tuple__18 = PyTuple_Pack(16, __pyx_n_s_label, __pyx_n_s_data, __pyx_n_s_blured, __pyx_n_s_clabel, __pyx_n_s_cdata, __pyx_n_s_cblured, __pyx_n_s_maxLabel, __pyx_n_s_count, __pyx_n_s_maxData, __pyx_n_s_maxBlured, __pyx_n_s_maxDelta, __pyx_n_s_s, __pyx_n_s_i, __pyx_n_s_idx, __pyx_n_s_d, __pyx_n_s_b); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__18 = PyTuple_Pack(16, __pyx_n_s_label, __pyx_n_s_data, __pyx_n_s_blured, __pyx_n_s_clabel, __pyx_n_s_cdata, __pyx_n_s_cblured, __pyx_n_s_maxLabel, __pyx_n_s_count, __pyx_n_s_maxData, __pyx_n_s_maxBlured, __pyx_n_s_maxDelta, __pyx_n_s_s, __pyx_n_s_i, __pyx_n_s_idx, __pyx_n_s_d, __pyx_n_s_b); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_countThem, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_countThem, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "View.MemoryView":276 * return self.name @@ -16478,7 +16475,7 @@ PyMODINIT_FUNC PyInit_relabel(void) * __doc__ = """A module to relabel regions""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16486,7 +16483,7 @@ PyMODINIT_FUNC PyInit_relabel(void) * __doc__ = """A module to relabel regions""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -16494,15 +16491,15 @@ PyMODINIT_FUNC PyInit_relabel(void) /* "pyFAI/ext/relabel.pyx":28 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __status__ = "stable" * __license__ = "MIT" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_27_09_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/relabel.pyx":29 * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" # <<<<<<<<<<<<<< * __license__ = "MIT" * import cython @@ -16510,7 +16507,7 @@ PyMODINIT_FUNC PyInit_relabel(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/relabel.pyx":30 - * __date__ = "27/09/2016" + * __date__ = "01/12/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< * import cython @@ -16530,16 +16527,16 @@ PyMODINIT_FUNC PyInit_relabel(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/relabel.pyx":38 - * @cython.boundscheck(False) + /* "pyFAI/ext/relabel.pyx":40 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def countThem(numpy.ndarray label not None, \ # <<<<<<<<<<<<<< * numpy.ndarray data not None, \ * numpy.ndarray blured not None): */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_7relabel_1countThem, NULL, __pyx_n_s_pyFAI_ext_relabel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_7relabel_1countThem, NULL, __pyx_n_s_pyFAI_ext_relabel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_countThem, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_countThem, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyFAI/ext/relabel.pyx":1 @@ -19605,17 +19602,17 @@ static int __Pyx_ValidateAndInit_memviewslice( return retval; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint32_t(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 1, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, stack, &result, obj); if (unlikely(retcode == -1)) @@ -19627,17 +19624,17 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_ return result; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 1, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 1, &__Pyx_TypeInfo_float, stack, &result, obj); if (unlikely(retcode == -1)) diff --git a/pyFAI/ext/relabel.pyx b/pyFAI/ext/relabel.pyx index 3be9573f9..62db07545 100644 --- a/pyFAI/ext/relabel.pyx +++ b/pyFAI/ext/relabel.pyx @@ -25,7 +25,7 @@ __doc__ = """A module to relabel regions""" __author__ = "Jerome Kieffer" __contact__ = "Jerome.kieffer@esrf.fr" -__date__ = "27/09/2016" +__date__ = "01/12/2016" __status__ = "stable" __license__ = "MIT" import cython @@ -34,24 +34,26 @@ cimport numpy @cython.boundscheck(False) +@cython.cdivision(True) @cython.wraparound(False) +@cython.initializedcheck(False) def countThem(numpy.ndarray label not None, \ numpy.ndarray data not None, \ numpy.ndarray blured not None): - """ - @param label: 2D array containing labeled zones - @param data: 2D array containing the raw data - @param blured: 2D array containing the blured data - @return: 2D arrays containing: + """Count + :param label: 2D array containing labeled zones + :param data: 2D array containing the raw data + :param blured: 2D array containing the blured data + :return: 2D arrays containing: * count pixels in labelled zone: label == index).sum() * max of data in that zone: data[label == index].max() * max of blured in that zone: blured[label == index].max() * data-blured where data is max. """ cdef: - numpy.uint32_t[:] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) - float[:] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) - float[:] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) + numpy.uint32_t[::1] clabel = numpy.ascontiguousarray(label.ravel(), dtype=numpy.uint32) + float[::1] cdata = numpy.ascontiguousarray(data.ravel(), dtype=numpy.float32) + float[::1] cblured = numpy.ascontiguousarray(blured.ravel(), dtype=numpy.float32) size_t maxLabel = label.max() numpy.ndarray[numpy.uint_t, ndim = 1] count = numpy.zeros(maxLabel + 1, dtype=numpy.uint) numpy.ndarray[numpy.float32_t, ndim = 1] maxData = numpy.zeros(maxLabel + 1, dtype=numpy.float32) @@ -74,6 +76,3 @@ def countThem(numpy.ndarray label not None, \ if b > maxBlured[idx]: maxBlured[idx] = b return count, maxData, maxBlured, maxDelta - - - diff --git a/pyFAI/ext/sparse_utils.c b/pyFAI/ext/sparse_utils.c index d2c568f6a..7763a96ed 100644 --- a/pyFAI/ext/sparse_utils.c +++ b/pyFAI/ext/sparse_utils.c @@ -421,7 +421,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/sparse_utils.pyx", - "pyFAI/ext/stringsource", + "stringsource", "pyFAI/ext/sparse_common.pxi", }; struct __pyx_memoryview_obj; @@ -523,7 +523,7 @@ struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; struct __pyx_t_5pyFAI_3ext_12sparse_utils_lut_point; -/* "sparse_common.pxi":38 +/* "pyFAI/ext/sparse_common.pxi":38 * import numpy * * cdef struct lut_point: # <<<<<<<<<<<<<< @@ -1396,7 +1396,7 @@ static PyObject *__pyx_codeobj__17; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12sparse_utils_1LUT_to_CSR(PyObject *__pyx_self, PyObject *__pyx_v_lut); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12sparse_utils_LUT_to_CSR[] = "Conversion between sparse matrix representations\n\n @param lut: Look-up table as 2D array of (int idx, float coef)\n @return: the same matrix as CSR representation\n @rtype: 3-tuple of numpy array (data, indices, indptr)\n "; +static char __pyx_doc_5pyFAI_3ext_12sparse_utils_LUT_to_CSR[] = "LUT_to_CSR(lut)\nConversion between sparse matrix representations\n\n @param lut: Look-up table as 2D array of (int idx, float coef)\n @return: the same matrix as CSR representation\n @rtype: 3-tuple of numpy array (data, indices, indptr)\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12sparse_utils_1LUT_to_CSR = {"LUT_to_CSR", (PyCFunction)__pyx_pw_5pyFAI_3ext_12sparse_utils_1LUT_to_CSR, METH_O, __pyx_doc_5pyFAI_3ext_12sparse_utils_LUT_to_CSR}; static PyObject *__pyx_pw_5pyFAI_3ext_12sparse_utils_1LUT_to_CSR(PyObject *__pyx_self, PyObject *__pyx_v_lut) { PyObject *__pyx_r = 0; @@ -2060,7 +2060,7 @@ __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_t_25, 1, (PyObject *(*)(char *)) __ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12sparse_utils_3CSR_to_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12sparse_utils_2CSR_to_LUT[] = "Conversion between sparse matrix representations\n\n @param data: coef of the sparse matrix as 1D array\n @param indices: index of the col position in input array as 1D array\n @param indptr: index of the start of the row in the indices array\n @return: the same matrix as LUT representation\n @rtype: record array of (int idx, float coef)\n "; +static char __pyx_doc_5pyFAI_3ext_12sparse_utils_2CSR_to_LUT[] = "CSR_to_LUT(data, indices, indptr)\nConversion between sparse matrix representations\n\n @param data: coef of the sparse matrix as 1D array\n @param indices: index of the col position in input array as 1D array\n @param indptr: index of the start of the row in the indices array\n @return: the same matrix as LUT representation\n @rtype: record array of (int idx, float coef)\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12sparse_utils_3CSR_to_LUT = {"CSR_to_LUT", (PyCFunction)__pyx_pw_5pyFAI_3ext_12sparse_utils_3CSR_to_LUT, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12sparse_utils_2CSR_to_LUT}; static PyObject *__pyx_pw_5pyFAI_3ext_12sparse_utils_3CSR_to_LUT(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_data = 0; @@ -14483,7 +14483,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "sparse_common.pxi":28 + /* "pyFAI/ext/sparse_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common Look-Up table datatypes""" # <<<<<<<<<<<<<< @@ -14492,7 +14492,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_Look_Up_table_datatypes) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "sparse_common.pxi":29 + /* "pyFAI/ext/sparse_common.pxi":29 * * __doc__ = """Common Look-Up table datatypes""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -14501,7 +14501,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "sparse_common.pxi":30 + /* "pyFAI/ext/sparse_common.pxi":30 * __doc__ = """Common Look-Up table datatypes""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -14510,7 +14510,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "sparse_common.pxi":31 + /* "pyFAI/ext/sparse_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -14519,7 +14519,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "sparse_common.pxi":32 + /* "pyFAI/ext/sparse_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -14528,7 +14528,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "sparse_common.pxi":33 + /* "pyFAI/ext/sparse_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -14537,7 +14537,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "sparse_common.pxi":36 + /* "pyFAI/ext/sparse_common.pxi":36 * * import cython * import numpy # <<<<<<<<<<<<<< @@ -14549,7 +14549,7 @@ PyMODINIT_FUNC PyInit_sparse_utils(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "sparse_common.pxi":42 + /* "pyFAI/ext/sparse_common.pxi":42 * float coef * * dtype_lut = numpy.dtype([("idx", numpy.int32), ("coef", numpy.float32)]) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitBBox.c b/pyFAI/ext/splitBBox.c index a6e79d397..8499bc9fb 100644 --- a/pyFAI/ext/splitBBox.c +++ b/pyFAI/ext/splitBBox.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/splitBBox.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", "pyFAI/ext/regrid_common.pxi", }; @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -757,7 +757,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -766,7 +766,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -775,7 +775,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -784,7 +784,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -2000,7 +2000,7 @@ static PyObject *__pyx_tuple__27; static PyObject *__pyx_codeobj__20; static PyObject *__pyx_codeobj__22; -/* "regrid_common.pxi":50 +/* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2011,7 +2011,7 @@ static PyObject *__pyx_codeobj__22; static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_9splitBBox_get_bin_number(float __pyx_v_x0, float __pyx_v_pos0_min, float __pyx_v_delta) { float __pyx_r; - /* "regrid_common.pxi":59 + /* "pyFAI/ext/regrid_common.pxi":59 * @return: bin number as floating point. * """ * return (x0 - pos0_min) / delta # <<<<<<<<<<<<<< @@ -2019,7 +2019,7 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_9splitBBox_get_bin_nu __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta); goto __pyx_L0; - /* "regrid_common.pxi":50 + /* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2042,7 +2042,7 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_9splitBBox_get_bin_nu /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9splitBBox_1histoBBox1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9splitBBox_histoBBox1d[] = "\n Calculates histogram of pos0 (tth) weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D\n\n @param weights: array with intensities\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels & value of \"no good\" pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float32) with dark noise to be subtracted (or None)\n @param flat: array (of float32) with flat-field image\n @param solidangle: array (of float32) with solid angle corrections\n @param polarization: array (of float32) with polarization corrections\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the result by this value\n\n @return 2theta, I, weighted histogram, unweighted histogram\n "; +static char __pyx_doc_5pyFAI_3ext_9splitBBox_histoBBox1d[] = "histoBBox1d(ndarray weights, ndarray pos0, ndarray delta_pos0, pos1=None, delta_pos1=None, size_t bins=100, pos0Range=None, pos1Range=None, dummy=None, delta_dummy=None, mask=None, dark=None, flat=None, solidangle=None, polarization=None, empty=None, double normalization_factor=1.0)\n\n Calculates histogram of pos0 (tth) weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D\n\n @param weights: array with intensities\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels & value of \"no good\" pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float32) with dark noise to be subtracted (or None)\n @param flat: array (of float32) with flat-field image\n @param solidangle: array (of float32) with solid angle corrections\n @param polarization: array (of float32) with polarization corrections\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the result by this value\n\n @return 2theta, I, weighted histogram, unweighted histogram\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9splitBBox_1histoBBox1d = {"histoBBox1d", (PyCFunction)__pyx_pw_5pyFAI_3ext_9splitBBox_1histoBBox1d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9splitBBox_histoBBox1d}; static PyObject *__pyx_pw_5pyFAI_3ext_9splitBBox_1histoBBox1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_weights = 0; @@ -5116,7 +5116,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9splitBBox_histoBBox1d(CYTHON_UNUSED PyObj /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9splitBBox_3histoBBox2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9splitBBox_2histoBBox2d[] = "\n Calculate 2D histogram of pos0(tth),pos1(chi) weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D\n\n\n @param weights: array with intensities\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels & value of \"no good\" pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float32) with dark noise to be subtracted (or None)\n @param flat: array (of float32) with flat-field image\n @param solidangle: array (of float32) with solid angle corrections\n @param polarization: array (of float32) with polarization corrections\n @param chiDiscAtPi: boolean; by default the chi_range is in the range ]-pi,pi[ set to 0 to have the range ]0,2pi[\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the result by this value\n\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n "; +static char __pyx_doc_5pyFAI_3ext_9splitBBox_2histoBBox2d[] = "histoBBox2d(ndarray weights, ndarray pos0, ndarray delta_pos0, ndarray pos1, ndarray delta_pos1, bins=(100, 36), pos0Range=None, pos1Range=None, dummy=None, delta_dummy=None, mask=None, dark=None, flat=None, solidangle=None, polarization=None, bool allow_pos0_neg=0, bool chiDiscAtPi=1, empty=0.0, double normalization_factor=1.0)\n\n Calculate 2D histogram of pos0(tth),pos1(chi) weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D\n\n\n @param weights: array with intensities\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels & value of \"no good\" pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float32) with dark noise to be subtracted (or None)\n @param flat: array (of float32) with flat-field image\n @param solidangle: array (of float32) with solid angle corrections\n @param polarization: array (of float32) with polarization corrections\n @param chiDiscAtPi: boolean; by default the chi_range is in the range ]-pi,pi[ set to 0 to have the range ]0,2pi[\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the result by this value\n\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9splitBBox_3histoBBox2d = {"histoBBox2d", (PyCFunction)__pyx_pw_5pyFAI_3ext_9splitBBox_3histoBBox2d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9splitBBox_2histoBBox2d}; static PyObject *__pyx_pw_5pyFAI_3ext_9splitBBox_3histoBBox2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_weights = 0; @@ -9227,7 +9227,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9splitBBox_2histoBBox2d(CYTHON_UNUSED PyOb return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -9277,7 +9277,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -9290,7 +9290,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -9299,7 +9299,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -9308,7 +9308,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -9317,7 +9317,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -9327,7 +9327,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -9339,7 +9339,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -9350,7 +9350,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -9364,7 +9364,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -9376,7 +9376,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -9390,7 +9390,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -9404,7 +9404,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -9416,7 +9416,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -9430,7 +9430,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -9439,7 +9439,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -9448,7 +9448,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -9458,7 +9458,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -9467,7 +9467,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -9476,7 +9476,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -9487,7 +9487,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -9496,7 +9496,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -9509,7 +9509,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -9518,7 +9518,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -9529,7 +9529,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -9538,7 +9538,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -9547,7 +9547,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -9556,7 +9556,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -9565,7 +9565,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -9577,7 +9577,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -9586,7 +9586,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -9604,7 +9604,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -9620,7 +9620,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -9635,7 +9635,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -9645,7 +9645,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -9655,7 +9655,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -9675,7 +9675,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -9693,7 +9693,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -9707,7 +9707,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -9716,7 +9716,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -9727,7 +9727,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -9738,7 +9738,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -9749,7 +9749,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -9760,7 +9760,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -9771,7 +9771,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -9782,7 +9782,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -9793,7 +9793,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -9804,7 +9804,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -9815,7 +9815,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -9826,7 +9826,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -9837,7 +9837,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -9848,7 +9848,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -9859,7 +9859,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -9870,7 +9870,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -9881,7 +9881,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -9892,7 +9892,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -9904,7 +9904,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -9930,7 +9930,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -9939,7 +9939,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -9951,7 +9951,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -9960,7 +9960,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -9969,7 +9969,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -9978,7 +9978,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -9988,7 +9988,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -9998,7 +9998,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -10030,7 +10030,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -10054,7 +10054,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -10064,7 +10064,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -10076,7 +10076,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -10086,7 +10086,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -10098,7 +10098,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -10110,7 +10110,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -10127,7 +10127,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -10141,7 +10141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -10160,7 +10160,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -10177,7 +10177,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -10191,7 +10191,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -10210,7 +10210,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -10227,7 +10227,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -10241,7 +10241,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -10260,7 +10260,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -10277,7 +10277,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -10291,7 +10291,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -10310,7 +10310,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -10327,7 +10327,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -10341,7 +10341,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -10360,7 +10360,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -10392,7 +10392,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -10401,7 +10401,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -10410,7 +10410,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -10432,7 +10432,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -10445,7 +10445,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -10484,7 +10484,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -10501,7 +10501,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -10515,7 +10515,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -10535,7 +10535,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -10553,7 +10553,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -10567,7 +10567,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -10583,7 +10583,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -10592,7 +10592,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -10601,7 +10601,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -10612,7 +10612,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -10622,7 +10622,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -10632,7 +10632,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -10644,7 +10644,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -10654,7 +10654,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -10668,7 +10668,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -10686,7 +10686,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -10704,7 +10704,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -10722,7 +10722,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -10740,7 +10740,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -10758,7 +10758,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -10776,7 +10776,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -10794,7 +10794,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -10812,7 +10812,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -10830,7 +10830,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -10848,7 +10848,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -10866,7 +10866,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -10884,7 +10884,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -10902,7 +10902,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -10922,7 +10922,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -10942,7 +10942,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -10962,7 +10962,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -10981,7 +10981,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -11004,7 +11004,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -11016,7 +11016,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -11028,7 +11028,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -11038,7 +11038,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -11048,7 +11048,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -11073,7 +11073,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -11088,7 +11088,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -11099,7 +11099,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -11111,7 +11111,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -11120,7 +11120,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -11131,7 +11131,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -11140,7 +11140,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -11149,7 +11149,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -11161,7 +11161,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -11175,7 +11175,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -11185,7 +11185,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -11199,7 +11199,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -11210,7 +11210,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -22774,7 +22774,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -22785,7 +22785,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -22796,7 +22796,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -22807,7 +22807,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -22818,7 +22818,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -22829,7 +22829,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -23240,7 +23240,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":28 + /* "pyFAI/ext/regrid_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common cdef constants and functions for preprocessing""" # <<<<<<<<<<<<<< @@ -23249,7 +23249,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_cdef_constants_and_functi) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":29 + /* "pyFAI/ext/regrid_common.pxi":29 * * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -23258,7 +23258,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":30 + /* "pyFAI/ext/regrid_common.pxi":30 * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -23267,7 +23267,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":31 + /* "pyFAI/ext/regrid_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -23276,7 +23276,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":32 + /* "pyFAI/ext/regrid_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -23285,7 +23285,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":33 + /* "pyFAI/ext/regrid_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -23294,7 +23294,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "numpy_common.pxi":9 + /* "pyFAI/ext/numpy_common.pxi":9 * void import_umath() * * if FALSE: # <<<<<<<<<<<<<< @@ -23304,7 +23304,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) __pyx_t_1 = (0 != 0); if (__pyx_t_1) { - /* "numpy_common.pxi":10 + /* "pyFAI/ext/numpy_common.pxi":10 * * if FALSE: * import_array() # <<<<<<<<<<<<<< @@ -23312,7 +23312,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ import_array(); - /* "numpy_common.pxi":11 + /* "pyFAI/ext/numpy_common.pxi":11 * if FALSE: * import_array() * import_umath() # <<<<<<<<<<<<<< @@ -23322,7 +23322,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) } __pyx_L2:; - /* "regrid_common.pxi":38 + /* "pyFAI/ext/regrid_common.pxi":38 * import cython * cimport numpy * import numpy # <<<<<<<<<<<<<< @@ -23334,7 +23334,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "regrid_common.pxi":42 + /* "pyFAI/ext/regrid_common.pxi":42 * from libc.math cimport fabs, M_PI * cdef: * float pi = M_PI # <<<<<<<<<<<<<< @@ -23343,7 +23343,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ __pyx_v_5pyFAI_3ext_9splitBBox_pi = ((float)M_PI); - /* "regrid_common.pxi":43 + /* "pyFAI/ext/regrid_common.pxi":43 * cdef: * float pi = M_PI * float piover2 = (pi * 0.5) # <<<<<<<<<<<<<< @@ -23352,7 +23352,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ __pyx_v_5pyFAI_3ext_9splitBBox_piover2 = ((float)(__pyx_v_5pyFAI_3ext_9splitBBox_pi * 0.5)); - /* "regrid_common.pxi":44 + /* "pyFAI/ext/regrid_common.pxi":44 * float pi = M_PI * float piover2 = (pi * 0.5) * float onef = 1.0 # <<<<<<<<<<<<<< @@ -23361,7 +23361,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ __pyx_v_5pyFAI_3ext_9splitBBox_onef = ((float)1.0); - /* "regrid_common.pxi":45 + /* "pyFAI/ext/regrid_common.pxi":45 * float piover2 = (pi * 0.5) * float onef = 1.0 * float zerof = 1.0 # <<<<<<<<<<<<<< @@ -23370,7 +23370,7 @@ PyMODINIT_FUNC PyInit_splitBBox(void) */ __pyx_v_5pyFAI_3ext_9splitBBox_zerof = ((float)1.0); - /* "regrid_common.pxi":46 + /* "pyFAI/ext/regrid_common.pxi":46 * float onef = 1.0 * float zerof = 1.0 * double EPS32 = (1.0 + numpy.finfo(numpy.float32).eps) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitBBoxCSR.c b/pyFAI/ext/splitBBoxCSR.c index a8e3c71f9..1d187cbbb 100644 --- a/pyFAI/ext/splitBBoxCSR.c +++ b/pyFAI/ext/splitBBoxCSR.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/splitBBoxCSR.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", "pyFAI/ext/regrid_common.pxi", }; @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -757,7 +757,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -766,7 +766,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -775,7 +775,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -784,7 +784,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -2317,7 +2317,7 @@ static PyObject *__pyx_codeobj__62; static PyObject *__pyx_codeobj__64; static PyObject *__pyx_codeobj__66; -/* "regrid_common.pxi":50 +/* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2328,7 +2328,7 @@ static PyObject *__pyx_codeobj__66; static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_12splitBBoxCSR_get_bin_number(float __pyx_v_x0, float __pyx_v_pos0_min, float __pyx_v_delta) { float __pyx_r; - /* "regrid_common.pxi":59 + /* "pyFAI/ext/regrid_common.pxi":59 * @return: bin number as floating point. * """ * return (x0 - pos0_min) / delta # <<<<<<<<<<<<<< @@ -2336,7 +2336,7 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_12splitBBoxCSR_get_bi __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta); goto __pyx_L0; - /* "regrid_common.pxi":50 + /* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2359,7 +2359,7 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_12splitBBoxCSR_get_bi /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d___init__[] = "\n @param pos0: 1D array with pos0: tth or q_vect or r ...\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value to be assigned to bins without contribution from any pixel\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d___init__[] = "HistoBBox1d.__init__(self, pos0, delta_pos0, pos1=None, delta_pos1=None, int bins=100, pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', empty=0.0)\n\n @param pos0: 1D array with pos0: tth or q_vect or r ...\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value to be assigned to bins without contribution from any pixel\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -3878,7 +3878,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d___init__(CYTH /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_2calc_boundaries[] = "\n Calculate self.pos0_min and self.pos0_max\n\n @param pos0Range: 2-tuple containing the requested range\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_2calc_boundaries[] = "HistoBBox1d.calc_boundaries(self, pos0Range)\n\n Calculate self.pos0_min and self.pos0_max\n\n @param pos0Range: 2-tuple containing the requested range\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_3calc_boundaries = {"calc_boundaries", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_3calc_boundaries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_2calc_boundaries}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -4543,7 +4543,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_2calc_boundar /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_5calc_boundaries_nosplit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_4calc_boundaries_nosplit[] = "\n Calculate self.pos0_min and self.pos0_max when no splitting is requested\n\n @param pos0Range: 2-tuple containing the requested range\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_4calc_boundaries_nosplit[] = "HistoBBox1d.calc_boundaries_nosplit(self, pos0Range)\n\n Calculate self.pos0_min and self.pos0_max when no splitting is requested\n\n @param pos0Range: 2-tuple containing the requested range\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_5calc_boundaries_nosplit = {"calc_boundaries_nosplit", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_5calc_boundaries_nosplit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_4calc_boundaries_nosplit}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_5calc_boundaries_nosplit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -5099,7 +5099,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_4calc_boundar /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_7calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_6calc_lut[] = "\n calculate the max number of elements in the LUT and populate it\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_6calc_lut[] = "HistoBBox1d.calc_lut(self)\n\n calculate the max number of elements in the LUT and populate it\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_7calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_7calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_6calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_7calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -6075,12 +6075,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_6calc_lut(CYT __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0; goto __pyx_L36_try_end; __pyx_L29_error:; - __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); /* "pyFAI/ext/splitBBoxCSR.pyx":323 * try: @@ -6785,7 +6785,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_6calc_lut(CYT /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_9calc_lut_nosplit(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_8calc_lut_nosplit[] = "\n calculate the max number of elements in the LUT and populate it\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_8calc_lut_nosplit[] = "HistoBBox1d.calc_lut_nosplit(self)\n\n calculate the max number of elements in the LUT and populate it\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_9calc_lut_nosplit = {"calc_lut_nosplit", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_9calc_lut_nosplit, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_8calc_lut_nosplit}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_9calc_lut_nosplit(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -7605,11 +7605,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_8calc_lut_nos __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; goto __pyx_L31_try_end; __pyx_L24_error:; - __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); /* "pyFAI/ext/splitBBoxCSR.pyx":449 @@ -8049,7 +8049,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_8calc_lut_nos /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate[] = "HistoBBox1d.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, double normalization_factor=1.0)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_11integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_11integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -9258,7 +9258,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_20, __pyx_t_22, __pyx_t_21, __pyx_t_23, __pyx_t_13, __pyx_t_19, __pyx_t_12, __pyx_t_18, __pyx_t_24) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_21, __pyx_t_24, __pyx_t_19, __pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -9459,7 +9459,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates7) + #pragma omp critical(__pyx_parallel_lastprivates12) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -9586,7 +9586,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_27, __pyx_t_30, __pyx_t_25, __pyx_t_28, __pyx_t_29, __pyx_t_12, __pyx_t_26) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_25, __pyx_t_27, __pyx_t_30, __pyx_t_26, __pyx_t_28, __pyx_t_12, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -9742,7 +9742,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates8) + #pragma omp critical(__pyx_parallel_lastprivates13) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -10171,22 +10171,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_37, __pyx_t_38, __pyx_t_35, __pyx_t_36, __pyx_t_42, __pyx_t_40, __pyx_t_41, __pyx_t_13, __pyx_t_12) + #pragma omp parallel private(__pyx_t_38, __pyx_t_36, __pyx_t_40, __pyx_t_41, __pyx_t_39, __pyx_t_34, __pyx_t_35, __pyx_t_42, __pyx_t_13, __pyx_t_12, __pyx_t_37) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_j) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(guided) + #pragma omp for lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_2; __pyx_t_16++){ { __pyx_v_i = 0 + 1 * __pyx_t_16; /* Initialize private variables to invalid values */ - __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_data = ((float)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_sum_data = ((double)__PYX_NAN()); - __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_sum_count = ((double)__PYX_NAN()); + __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_sum_data = ((double)__PYX_NAN()); /* "pyFAI/ext/splitBBoxCSR.pyx":600 * @@ -10488,7 +10488,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d___init__[] = "\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param chiDiscAtPi: boolean; by default the chi_range is in the range ]-pi,pi[ set to 0 to have the range ]0,2pi[\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d___init__[] = "HistoBBox2d.__init__(self, pos0, delta_pos0, pos1, delta_pos1, bins=(100, 36), pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', chiDiscAtPi=True, empty=0.0)\n\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param chiDiscAtPi: boolean; by default the chi_range is in the range ]-pi,pi[ set to 0 to have the range ]0,2pi[\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -12193,7 +12193,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d___init__(CYTH /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_2calc_boundaries[] = "\n Calculate self.pos0_min/max and self.pos1_min/max\n\n @param pos0Range: 2-tuple containing the requested range\n @param pos1Range: 2-tuple containing the requested range\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_2calc_boundaries[] = "HistoBBox2d.calc_boundaries(self, pos0Range, pos1Range)\n\n Calculate self.pos0_min/max and self.pos1_min/max\n\n @param pos0Range: 2-tuple containing the requested range\n @param pos1Range: 2-tuple containing the requested range\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_3calc_boundaries = {"calc_boundaries", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_3calc_boundaries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_2calc_boundaries}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -13275,7 +13275,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_2calc_boundar /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_5calc_boundaries_nosplit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_4calc_boundaries_nosplit[] = "\n Calculate self.pos0_min/max and self.pos1_min/max\n\n @param pos0Range: 2-tuple containing the requested range\n @param pos1Range: 2-tuple containing the requested range\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_4calc_boundaries_nosplit[] = "HistoBBox2d.calc_boundaries_nosplit(self, pos0Range, pos1Range)\n\n Calculate self.pos0_min/max and self.pos1_min/max\n\n @param pos0Range: 2-tuple containing the requested range\n @param pos1Range: 2-tuple containing the requested range\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_5calc_boundaries_nosplit = {"calc_boundaries_nosplit", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_5calc_boundaries_nosplit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_4calc_boundaries_nosplit}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_5calc_boundaries_nosplit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -14093,7 +14093,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_4calc_boundar /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_7calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_6calc_lut[] = "calculate the max number of elements in the LUT and populate it"; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_6calc_lut[] = "HistoBBox2d.calc_lut(self)\ncalculate the max number of elements in the LUT and populate it"; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_7calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_7calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_6calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_7calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -15217,11 +15217,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_6calc_lut(CYT __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); /* "pyFAI/ext/splitBBoxCSR.pyx":944 * try: @@ -16676,7 +16676,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_6calc_lut(CYT /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_9calc_lut_nosplit(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_8calc_lut_nosplit[] = "\n \"calculate the max number of elements in the LUT and populate it\n\n This is the version which does not split pixels.\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_8calc_lut_nosplit[] = "HistoBBox2d.calc_lut_nosplit(self)\n\n \"calculate the max number of elements in the LUT and populate it\n\n This is the version which does not split pixels.\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_9calc_lut_nosplit = {"calc_lut_nosplit", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_9calc_lut_nosplit, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_8calc_lut_nosplit}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_9calc_lut_nosplit(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -17473,8 +17473,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_8calc_lut_nos __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_14, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_14, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); /* "pyFAI/ext/splitBBoxCSR.pyx":1153 @@ -17918,7 +17918,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_8calc_lut_nos /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate[] = "\n Actually perform the 2D integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n @return: I(2d), edges0(1d), edges1(1d), weighted histogram(2d), unweighted histogram (2d)\n @rtype: 5-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate[] = "HistoBBox2d.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, double normalization_factor=1.0)\n\n Actually perform the 2D integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n @return: I(2d), edges0(1d), edges1(1d), weighted histogram(2d), unweighted histogram (2d)\n @rtype: 5-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_11integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_11integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -19281,7 +19281,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_19 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_26, __pyx_t_20, __pyx_t_22, __pyx_t_23, __pyx_t_25, __pyx_t_24, __pyx_t_21) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_22, __pyx_t_16, __pyx_t_26, __pyx_t_15, __pyx_t_21, __pyx_t_24, __pyx_t_25, __pyx_t_23, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19482,7 +19482,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates9) + #pragma omp critical(__pyx_parallel_lastprivates14) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -19609,7 +19609,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_15, __pyx_t_31, __pyx_t_30, __pyx_t_27, __pyx_t_32, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_31, __pyx_t_28, __pyx_t_27, __pyx_t_29, __pyx_t_15, __pyx_t_30, __pyx_t_32) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19765,7 +19765,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates10) + #pragma omp critical(__pyx_parallel_lastprivates15) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -19996,7 +19996,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_19 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_15, __pyx_t_16, __pyx_t_35, __pyx_t_33) + #pragma omp parallel private(__pyx_t_34, __pyx_t_33, __pyx_t_16, __pyx_t_35, __pyx_t_15) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -20194,22 +20194,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_40, __pyx_t_41, __pyx_t_44, __pyx_t_37, __pyx_t_45, __pyx_t_43, __pyx_t_15, __pyx_t_16, __pyx_t_36, __pyx_t_39, __pyx_t_38, __pyx_t_42) + #pragma omp parallel private(__pyx_t_38, __pyx_t_42, __pyx_t_16, __pyx_t_43, __pyx_t_36, __pyx_t_15, __pyx_t_44, __pyx_t_45, __pyx_t_40, __pyx_t_41, __pyx_t_39, __pyx_t_37) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(guided) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_sum_data) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_3; __pyx_t_18++){ { __pyx_v_i = 0 + 1 * __pyx_t_18; /* Initialize private variables to invalid values */ + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_idx = ((int)0xbad0bad0); + __pyx_v_j = ((int)0xbad0bad0); + __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_sum_data = ((double)__PYX_NAN()); - __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_j = ((int)0xbad0bad0); - __pyx_v_idx = ((int)0xbad0bad0); - __pyx_v_data = ((float)__PYX_NAN()); /* "pyFAI/ext/splitBBoxCSR.pyx":1308 * @@ -20499,7 +20499,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -20549,7 +20549,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -20562,7 +20562,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -20571,7 +20571,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -20580,7 +20580,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -20589,7 +20589,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -20599,7 +20599,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -20611,7 +20611,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -20622,7 +20622,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -20636,7 +20636,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -20648,7 +20648,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -20662,7 +20662,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -20676,7 +20676,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -20688,7 +20688,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -20702,7 +20702,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -20711,7 +20711,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -20720,7 +20720,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -20730,7 +20730,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -20739,7 +20739,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -20748,7 +20748,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -20759,7 +20759,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -20768,7 +20768,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -20781,7 +20781,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -20790,7 +20790,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -20801,7 +20801,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -20810,7 +20810,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -20819,7 +20819,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -20828,7 +20828,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -20837,7 +20837,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -20849,7 +20849,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -20858,7 +20858,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -20876,7 +20876,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -20892,7 +20892,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -20907,7 +20907,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -20917,7 +20917,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -20927,7 +20927,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -20947,7 +20947,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -20965,7 +20965,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -20979,7 +20979,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -20988,7 +20988,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -20999,7 +20999,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -21010,7 +21010,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -21021,7 +21021,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -21032,7 +21032,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -21043,7 +21043,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -21054,7 +21054,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -21065,7 +21065,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -21076,7 +21076,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -21087,7 +21087,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -21098,7 +21098,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -21109,7 +21109,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -21120,7 +21120,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -21131,7 +21131,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -21142,7 +21142,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -21153,7 +21153,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -21164,7 +21164,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -21176,7 +21176,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -21202,7 +21202,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -21211,7 +21211,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -21223,7 +21223,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -21232,7 +21232,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -21241,7 +21241,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -21250,7 +21250,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -21260,7 +21260,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -21270,7 +21270,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -21302,7 +21302,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -21326,7 +21326,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -21336,7 +21336,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -21348,7 +21348,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -21358,7 +21358,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -21370,7 +21370,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -21382,7 +21382,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -21399,7 +21399,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -21413,7 +21413,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -21432,7 +21432,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -21449,7 +21449,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -21463,7 +21463,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -21482,7 +21482,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -21499,7 +21499,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -21513,7 +21513,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -21532,7 +21532,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -21549,7 +21549,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -21563,7 +21563,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -21582,7 +21582,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -21599,7 +21599,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -21613,7 +21613,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -21632,7 +21632,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -21664,7 +21664,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -21673,7 +21673,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -21682,7 +21682,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -21704,7 +21704,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -21717,7 +21717,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -21756,7 +21756,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -21773,7 +21773,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -21787,7 +21787,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -21807,7 +21807,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -21825,7 +21825,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -21839,7 +21839,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -21855,7 +21855,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -21864,7 +21864,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -21873,7 +21873,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -21884,7 +21884,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -21894,7 +21894,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -21904,7 +21904,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -21916,7 +21916,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -21926,7 +21926,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -21940,7 +21940,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -21958,7 +21958,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -21976,7 +21976,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -21994,7 +21994,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -22012,7 +22012,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -22030,7 +22030,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -22048,7 +22048,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -22066,7 +22066,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -22084,7 +22084,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -22102,7 +22102,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -22120,7 +22120,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -22138,7 +22138,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -22156,7 +22156,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -22174,7 +22174,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -22194,7 +22194,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -22214,7 +22214,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -22234,7 +22234,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -22253,7 +22253,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -22276,7 +22276,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -22288,7 +22288,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -22300,7 +22300,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -22310,7 +22310,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -22320,7 +22320,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -22345,7 +22345,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -22360,7 +22360,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -22371,7 +22371,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -22383,7 +22383,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -22392,7 +22392,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -22403,7 +22403,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -22412,7 +22412,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -22421,7 +22421,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -22433,7 +22433,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -22447,7 +22447,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -22457,7 +22457,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -22471,7 +22471,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -22482,7 +22482,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -34307,7 +34307,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -34318,7 +34318,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -34329,7 +34329,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -34340,7 +34340,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -34351,7 +34351,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -34362,7 +34362,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -34993,7 +34993,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":28 + /* "pyFAI/ext/regrid_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common cdef constants and functions for preprocessing""" # <<<<<<<<<<<<<< @@ -35002,7 +35002,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_cdef_constants_and_functi) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":29 + /* "pyFAI/ext/regrid_common.pxi":29 * * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -35011,7 +35011,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":30 + /* "pyFAI/ext/regrid_common.pxi":30 * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -35020,7 +35020,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":31 + /* "pyFAI/ext/regrid_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -35029,7 +35029,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":32 + /* "pyFAI/ext/regrid_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -35038,7 +35038,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":33 + /* "pyFAI/ext/regrid_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -35047,7 +35047,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "numpy_common.pxi":9 + /* "pyFAI/ext/numpy_common.pxi":9 * void import_umath() * * if FALSE: # <<<<<<<<<<<<<< @@ -35057,7 +35057,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) __pyx_t_3 = (0 != 0); if (__pyx_t_3) { - /* "numpy_common.pxi":10 + /* "pyFAI/ext/numpy_common.pxi":10 * * if FALSE: * import_array() # <<<<<<<<<<<<<< @@ -35065,7 +35065,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ import_array(); - /* "numpy_common.pxi":11 + /* "pyFAI/ext/numpy_common.pxi":11 * if FALSE: * import_array() * import_umath() # <<<<<<<<<<<<<< @@ -35075,7 +35075,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) } __pyx_L2:; - /* "regrid_common.pxi":38 + /* "pyFAI/ext/regrid_common.pxi":38 * import cython * cimport numpy * import numpy # <<<<<<<<<<<<<< @@ -35087,7 +35087,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":42 + /* "pyFAI/ext/regrid_common.pxi":42 * from libc.math cimport fabs, M_PI * cdef: * float pi = M_PI # <<<<<<<<<<<<<< @@ -35096,7 +35096,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxCSR_pi = ((float)M_PI); - /* "regrid_common.pxi":43 + /* "pyFAI/ext/regrid_common.pxi":43 * cdef: * float pi = M_PI * float piover2 = (pi * 0.5) # <<<<<<<<<<<<<< @@ -35105,7 +35105,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxCSR_piover2 = ((float)(__pyx_v_5pyFAI_3ext_12splitBBoxCSR_pi * 0.5)); - /* "regrid_common.pxi":44 + /* "pyFAI/ext/regrid_common.pxi":44 * float pi = M_PI * float piover2 = (pi * 0.5) * float onef = 1.0 # <<<<<<<<<<<<<< @@ -35114,7 +35114,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxCSR_onef = ((float)1.0); - /* "regrid_common.pxi":45 + /* "pyFAI/ext/regrid_common.pxi":45 * float piover2 = (pi * 0.5) * float onef = 1.0 * float zerof = 1.0 # <<<<<<<<<<<<<< @@ -35123,7 +35123,7 @@ PyMODINIT_FUNC PyInit_splitBBoxCSR(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxCSR_zerof = ((float)1.0); - /* "regrid_common.pxi":46 + /* "pyFAI/ext/regrid_common.pxi":46 * float onef = 1.0 * float zerof = 1.0 * double EPS32 = (1.0 + numpy.finfo(numpy.float32).eps) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitBBoxLUT.c b/pyFAI/ext/splitBBoxLUT.c index b73b8b6ec..2d9aa7dd0 100644 --- a/pyFAI/ext/splitBBoxLUT.c +++ b/pyFAI/ext/splitBBoxLUT.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/splitBBoxLUT.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", "pyFAI/ext/regrid_common.pxi", }; @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -758,7 +758,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -767,7 +767,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -776,7 +776,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -785,7 +785,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -2654,7 +2654,7 @@ static PyObject *__pyx_gb_5pyFAI_3ext_12splitBBoxLUT_4generator(__pyx_GeneratorO return NULL; } -/* "regrid_common.pxi":50 +/* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2665,7 +2665,7 @@ static PyObject *__pyx_gb_5pyFAI_3ext_12splitBBoxLUT_4generator(__pyx_GeneratorO static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_12splitBBoxLUT_get_bin_number(float __pyx_v_x0, float __pyx_v_pos0_min, float __pyx_v_delta) { float __pyx_r; - /* "regrid_common.pxi":59 + /* "pyFAI/ext/regrid_common.pxi":59 * @return: bin number as floating point. * """ * return (x0 - pos0_min) / delta # <<<<<<<<<<<<<< @@ -2673,7 +2673,7 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_12splitBBoxLUT_get_bi __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta); goto __pyx_L0; - /* "regrid_common.pxi":50 + /* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2696,7 +2696,8 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_12splitBBoxLUT_get_bi /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_1int0(PyObject *__pyx_self, PyObject *__pyx_v_a); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_1int0 = {"int0", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_1int0, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_int0[] = "int0(a)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_1int0 = {"int0", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_1int0, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_int0}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_1int0(PyObject *__pyx_self, PyObject *__pyx_v_a) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -2845,7 +2846,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_int0(CYTHON_UNUSED PyObject /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d___init__[] = "\n @param pos0: 1D array with pos0: tth or q_vect or r ...\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value for bins without contributing pixels\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d___init__[] = "HistoBBox1d.__init__(self, pos0, delta_pos0, pos1=None, delta_pos1=None, int bins=100, pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', empty=0.0)\n\n @param pos0: 1D array with pos0: tth or q_vect or r ...\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value for bins without contributing pixels\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -4098,7 +4099,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d___init__(CYTH /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_2calc_boundaries[] = "\n Called by constructor to calculate the boundaries and the bin position\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_2calc_boundaries[] = "HistoBBox1d.calc_boundaries(self, pos0Range)\n\n Called by constructor to calculate the boundaries and the bin position\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_3calc_boundaries = {"calc_boundaries", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_3calc_boundaries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_2calc_boundaries}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -4740,7 +4741,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_2calc_boundar /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_5calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_4calc_lut[] = "\n calculate the max number of elements in the LUT and populate it\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_4calc_lut[] = "HistoBBox1d.calc_lut(self)\n\n calculate the max number of elements in the LUT and populate it\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_5calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_5calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_4calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_5calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -5646,15 +5647,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_4calc_lut(CYT __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0; goto __pyx_L36_try_end; __pyx_L29_error:; - __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); /* "pyFAI/ext/splitBBoxLUT.pyx":279 * try: @@ -6366,7 +6367,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_4calc_lut(CYT /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_7get_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_6get_lut[] = "Getter for the LUT as actual numpy array:\n there is an issue with python2.6 and ref counting"; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_6get_lut[] = "HistoBBox1d.get_lut(self)\nGetter for the LUT as actual numpy array:\n there is an issue with python2.6 and ref counting"; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_7get_lut = {"get_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_7get_lut, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_6get_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_7get_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -6879,7 +6880,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_6get_lut(CYTH /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_9get_lut_checksum(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_9get_lut_checksum = {"get_lut_checksum", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_9get_lut_checksum, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_8get_lut_checksum[] = "HistoBBox1d.get_lut_checksum(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_9get_lut_checksum = {"get_lut_checksum", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_9get_lut_checksum, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_8get_lut_checksum}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_9get_lut_checksum(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -6995,7 +6997,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_8get_lut_chec /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate[] = "HistoBBox1d.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, double normalization_factor=1.0)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_11integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_11integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -8299,7 +8301,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C if (__pyx_t_18 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_24, __pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_25, __pyx_t_21, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_20, __pyx_t_25, __pyx_t_13, __pyx_t_21, __pyx_t_24, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -8500,7 +8502,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates11) + #pragma omp critical(__pyx_parallel_lastprivates6) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -8627,7 +8629,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_31, __pyx_t_26, __pyx_t_30, __pyx_t_12, __pyx_t_27, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_30, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_31, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -8783,7 +8785,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates12) + #pragma omp critical(__pyx_parallel_lastprivates7) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -9212,22 +9214,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_40, __pyx_t_44, __pyx_t_41, __pyx_t_43, __pyx_t_37, __pyx_t_35, __pyx_t_12, __pyx_t_39, __pyx_t_42, __pyx_t_38, __pyx_t_36, __pyx_t_13) + #pragma omp parallel private(__pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_42, __pyx_t_37, __pyx_t_44, __pyx_t_41, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_idx) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_j) lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_data) schedule(guided) + #pragma omp for lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_2; __pyx_t_17++){ { __pyx_v_i = 0 + 1 * __pyx_t_17; /* Initialize private variables to invalid values */ + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_sum_data = ((double)__PYX_NAN()); __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_sum_data = ((double)__PYX_NAN()); /* "pyFAI/ext/splitBBoxLUT.pyx":505 * @@ -9619,7 +9621,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_13integrate_kahan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_kahan[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n Single precision implementation using Kahan summation\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_kahan[] = "HistoBBox1d.integrate_kahan(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, double normalization_factor=1.0)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n Single precision implementation using Kahan summation\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_13integrate_kahan = {"integrate_kahan", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_13integrate_kahan, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_kahan}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_13integrate_kahan(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -10915,7 +10917,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_18, __pyx_t_24, __pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_13, __pyx_t_21, __pyx_t_24, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -11116,7 +11118,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates13) + #pragma omp critical(__pyx_parallel_lastprivates8) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_i; @@ -11243,7 +11245,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_26, __pyx_t_27, __pyx_t_12, __pyx_t_30, __pyx_t_25, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_30, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -11399,7 +11401,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates14) + #pragma omp critical(__pyx_parallel_lastprivates9) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_i; @@ -11828,28 +11830,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_41, __pyx_t_40, __pyx_t_43, __pyx_t_12, __pyx_t_37, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_42, __pyx_t_38, __pyx_t_36, __pyx_t_13) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_42, __pyx_t_37, __pyx_t_40, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_41, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_t_data) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_y_count) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_y_data) lastprivate(__pyx_v_data) lastprivate(__pyx_v_c_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_c_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_t_count) schedule(guided) + #pragma omp for lastprivate(__pyx_v_y_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_c_count) lastprivate(__pyx_v_t_data) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_y_count) lastprivate(__pyx_v_c_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_t_count) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_2; __pyx_t_16++){ { __pyx_v_i = 0 + 1 * __pyx_t_16; /* Initialize private variables to invalid values */ + __pyx_v_y_data = ((float)__PYX_NAN()); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_c_count = ((float)__PYX_NAN()); __pyx_v_t_data = ((float)__PYX_NAN()); __pyx_v_sum_data = ((float)__PYX_NAN()); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_y_count = ((float)__PYX_NAN()); + __pyx_v_c_data = ((float)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_t_count = ((float)__PYX_NAN()); __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_y_data = ((float)__PYX_NAN()); __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_c_data = ((float)__PYX_NAN()); - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_c_count = ((float)__PYX_NAN()); __pyx_v_sum_count = ((float)__PYX_NAN()); - __pyx_v_t_count = ((float)__PYX_NAN()); /* "pyFAI/ext/splitBBoxLUT.pyx":661 * @@ -12320,7 +12322,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d___init__[] = "\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param chiDiscAtPi: boolean; by default the chi_range is in the range ]-pi,pi[ set to 0 to have the range ]0,2pi[\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d___init__[] = "HistoBBox2d.__init__(self, pos0, delta_pos0, pos1, delta_pos1, bins=(100, 36), pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', chiDiscAtPi=True)\n\n @param pos0: 1D array with pos0: tth or q_vect\n @param delta_pos0: 1D array with delta pos0: max center-corner distance\n @param pos1: 1D array with pos1: chi\n @param delta_pos1: 1D array with max pos1: max center-corner distance, unused !\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param chiDiscAtPi: boolean; by default the chi_range is in the range ]-pi,pi[ set to 0 to have the range ]0,2pi[\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -13798,7 +13800,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d___init__(CYTH /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_2calc_boundaries[] = "\n Called by constructor to calculate the boundaries and the bin position\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_2calc_boundaries[] = "HistoBBox2d.calc_boundaries(self, pos0Range, pos1Range)\n\n Called by constructor to calculate the boundaries and the bin position\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_3calc_boundaries = {"calc_boundaries", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_3calc_boundaries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_2calc_boundaries}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_3calc_boundaries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -14866,7 +14868,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_2calc_boundar /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_5calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_4calc_lut[] = "calculate the max number of elements in the LUT and populate it"; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_4calc_lut[] = "HistoBBox2d.calc_lut(self)\ncalculate the max number of elements in the LUT and populate it"; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_5calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_5calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_4calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_5calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -15927,16 +15929,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_4calc_lut(CYT __Pyx_XDECREF(__pyx_t_31); __pyx_t_31 = 0; goto __pyx_L36_try_end; __pyx_L29_error:; - __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_14, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); /* "pyFAI/ext/splitBBoxLUT.pyx":954 * try: @@ -17362,7 +17364,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_4calc_lut(CYT /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_7get_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_6get_lut[] = "Getter for the LUT as actual numpy array\n Hack against a bug in ref-counting under python2.6\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_6get_lut[] = "HistoBBox2d.get_lut(self)\nGetter for the LUT as actual numpy array\n Hack against a bug in ref-counting under python2.6\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_7get_lut = {"get_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_7get_lut, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_6get_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_7get_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -17909,7 +17911,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_6get_lut(CYTH /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_9get_lut_checksum(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_9get_lut_checksum = {"get_lut_checksum", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_9get_lut_checksum, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_8get_lut_checksum[] = "HistoBBox2d.get_lut_checksum(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_9get_lut_checksum = {"get_lut_checksum", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_9get_lut_checksum, METH_O, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_8get_lut_checksum}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_9get_lut_checksum(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -18025,7 +18028,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_8get_lut_chec /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate[] = "\n Actually perform the 2D integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return: I(2d), edges0(1d), edges1(1d), weighted histogram(2d), unweighted histogram (2d)\n @rtype: 5-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate[] = "HistoBBox2d.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, double normalization_factor=1.0)\n\n Actually perform the 2D integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return: I(2d), edges0(1d), edges1(1d), weighted histogram(2d), unweighted histogram (2d)\n @rtype: 5-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_11integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_11integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_11integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -19336,7 +19339,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_18, __pyx_t_24, __pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_13, __pyx_t_21, __pyx_t_24, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19537,7 +19540,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C goto __pyx_L29; __pyx_L29:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates15) + #pragma omp critical(__pyx_parallel_lastprivates10) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -19664,7 +19667,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_26, __pyx_t_27, __pyx_t_12, __pyx_t_30, __pyx_t_25, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_30, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19820,7 +19823,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C goto __pyx_L42; __pyx_L42:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates16) + #pragma omp critical(__pyx_parallel_lastprivates11) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -20249,23 +20252,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_40, __pyx_t_46, __pyx_t_41, __pyx_t_44, __pyx_t_45, __pyx_t_48, __pyx_t_43, __pyx_t_13, __pyx_t_49, __pyx_t_47, __pyx_t_12, __pyx_t_37, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_51, __pyx_t_38, __pyx_t_50, __pyx_t_36, __pyx_t_42) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_47, __pyx_t_42, __pyx_t_37, __pyx_t_50, __pyx_t_45, __pyx_t_48, __pyx_t_49, __pyx_t_44, __pyx_t_36, __pyx_t_51, __pyx_t_12, __pyx_t_40, __pyx_t_46, __pyx_t_41, __pyx_t_35, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_i1) lastprivate(__pyx_v_data) firstprivate(__pyx_v_i0) lastprivate(__pyx_v_i0) schedule(guided) + #pragma omp for firstprivate(__pyx_v_i0) lastprivate(__pyx_v_i0) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_i1) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_data) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_3; __pyx_t_16++){ { __pyx_v_i0 = 0 + 1 * __pyx_t_16; /* Initialize private variables to invalid values */ + __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_sum_count = ((double)__PYX_NAN()); - __pyx_v_sum_data = ((double)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_i1 = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_sum_data = ((double)__PYX_NAN()); /* "pyFAI/ext/splitBBoxLUT.pyx":1264 * @@ -20666,7 +20669,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -20716,7 +20719,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -20729,7 +20732,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -20738,7 +20741,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -20747,7 +20750,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -20756,7 +20759,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -20766,7 +20769,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -20778,7 +20781,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -20789,7 +20792,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -20803,7 +20806,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -20815,7 +20818,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -20829,7 +20832,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -20843,7 +20846,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -20855,7 +20858,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -20869,7 +20872,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -20878,7 +20881,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -20887,7 +20890,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -20897,7 +20900,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -20906,7 +20909,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -20915,7 +20918,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -20926,7 +20929,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -20935,7 +20938,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -20948,7 +20951,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -20957,7 +20960,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -20968,7 +20971,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -20977,7 +20980,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -20986,7 +20989,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -20995,7 +20998,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -21004,7 +21007,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -21016,7 +21019,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -21025,7 +21028,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -21043,7 +21046,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -21059,7 +21062,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -21074,7 +21077,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -21084,7 +21087,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -21094,7 +21097,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -21114,7 +21117,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -21132,7 +21135,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -21146,7 +21149,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -21155,7 +21158,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -21166,7 +21169,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -21177,7 +21180,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -21188,7 +21191,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -21199,7 +21202,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -21210,7 +21213,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -21221,7 +21224,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -21232,7 +21235,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -21243,7 +21246,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -21254,7 +21257,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -21265,7 +21268,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -21276,7 +21279,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -21287,7 +21290,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -21298,7 +21301,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -21309,7 +21312,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -21320,7 +21323,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -21331,7 +21334,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -21343,7 +21346,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -21369,7 +21372,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -21378,7 +21381,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -21390,7 +21393,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -21399,7 +21402,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -21408,7 +21411,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -21417,7 +21420,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -21427,7 +21430,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -21437,7 +21440,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -21469,7 +21472,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -21493,7 +21496,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -21503,7 +21506,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -21515,7 +21518,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -21525,7 +21528,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -21537,7 +21540,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -21549,7 +21552,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -21566,7 +21569,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -21580,7 +21583,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -21599,7 +21602,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -21616,7 +21619,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -21630,7 +21633,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -21649,7 +21652,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -21666,7 +21669,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -21680,7 +21683,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -21699,7 +21702,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -21716,7 +21719,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -21730,7 +21733,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -21749,7 +21752,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -21766,7 +21769,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -21780,7 +21783,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -21799,7 +21802,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -21831,7 +21834,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -21840,7 +21843,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -21849,7 +21852,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -21871,7 +21874,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -21884,7 +21887,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -21923,7 +21926,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -21940,7 +21943,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -21954,7 +21957,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -21974,7 +21977,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -21992,7 +21995,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -22006,7 +22009,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -22022,7 +22025,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -22031,7 +22034,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -22040,7 +22043,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -22051,7 +22054,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -22061,7 +22064,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -22071,7 +22074,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -22083,7 +22086,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -22093,7 +22096,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -22107,7 +22110,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -22125,7 +22128,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -22143,7 +22146,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -22161,7 +22164,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -22179,7 +22182,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -22197,7 +22200,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -22215,7 +22218,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -22233,7 +22236,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -22251,7 +22254,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -22269,7 +22272,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -22287,7 +22290,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -22305,7 +22308,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -22323,7 +22326,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -22341,7 +22344,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -22361,7 +22364,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -22381,7 +22384,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -22401,7 +22404,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -22420,7 +22423,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -22443,7 +22446,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -22455,7 +22458,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -22467,7 +22470,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -22477,7 +22480,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -22487,7 +22490,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -22512,7 +22515,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -22527,7 +22530,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -22538,7 +22541,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -22550,7 +22553,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -22559,7 +22562,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -22570,7 +22573,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -22579,7 +22582,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -22588,7 +22591,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -22600,7 +22603,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -22614,7 +22617,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -22624,7 +22627,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -22638,7 +22641,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -22649,7 +22652,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -34502,7 +34505,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -34513,7 +34516,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -34524,7 +34527,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -34535,7 +34538,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -34546,7 +34549,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__13); __Pyx_GIVEREF(__pyx_tuple__13); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -34557,7 +34560,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -35233,7 +35236,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":28 + /* "pyFAI/ext/regrid_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common cdef constants and functions for preprocessing""" # <<<<<<<<<<<<<< @@ -35242,7 +35245,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_cdef_constants_and_functi) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":29 + /* "pyFAI/ext/regrid_common.pxi":29 * * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -35251,7 +35254,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":30 + /* "pyFAI/ext/regrid_common.pxi":30 * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -35260,7 +35263,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":31 + /* "pyFAI/ext/regrid_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -35269,7 +35272,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":32 + /* "pyFAI/ext/regrid_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -35278,7 +35281,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":33 + /* "pyFAI/ext/regrid_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -35287,7 +35290,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "numpy_common.pxi":9 + /* "pyFAI/ext/numpy_common.pxi":9 * void import_umath() * * if FALSE: # <<<<<<<<<<<<<< @@ -35297,7 +35300,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) __pyx_t_3 = (0 != 0); if (__pyx_t_3) { - /* "numpy_common.pxi":10 + /* "pyFAI/ext/numpy_common.pxi":10 * * if FALSE: * import_array() # <<<<<<<<<<<<<< @@ -35305,7 +35308,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ import_array(); - /* "numpy_common.pxi":11 + /* "pyFAI/ext/numpy_common.pxi":11 * if FALSE: * import_array() * import_umath() # <<<<<<<<<<<<<< @@ -35315,7 +35318,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) } __pyx_L2:; - /* "regrid_common.pxi":38 + /* "pyFAI/ext/regrid_common.pxi":38 * import cython * cimport numpy * import numpy # <<<<<<<<<<<<<< @@ -35327,7 +35330,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":42 + /* "pyFAI/ext/regrid_common.pxi":42 * from libc.math cimport fabs, M_PI * cdef: * float pi = M_PI # <<<<<<<<<<<<<< @@ -35336,7 +35339,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxLUT_pi = ((float)M_PI); - /* "regrid_common.pxi":43 + /* "pyFAI/ext/regrid_common.pxi":43 * cdef: * float pi = M_PI * float piover2 = (pi * 0.5) # <<<<<<<<<<<<<< @@ -35345,7 +35348,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxLUT_piover2 = ((float)(__pyx_v_5pyFAI_3ext_12splitBBoxLUT_pi * 0.5)); - /* "regrid_common.pxi":44 + /* "pyFAI/ext/regrid_common.pxi":44 * float pi = M_PI * float piover2 = (pi * 0.5) * float onef = 1.0 # <<<<<<<<<<<<<< @@ -35354,7 +35357,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxLUT_onef = ((float)1.0); - /* "regrid_common.pxi":45 + /* "pyFAI/ext/regrid_common.pxi":45 * float piover2 = (pi * 0.5) * float onef = 1.0 * float zerof = 1.0 # <<<<<<<<<<<<<< @@ -35363,7 +35366,7 @@ PyMODINIT_FUNC PyInit_splitBBoxLUT(void) */ __pyx_v_5pyFAI_3ext_12splitBBoxLUT_zerof = ((float)1.0); - /* "regrid_common.pxi":46 + /* "pyFAI/ext/regrid_common.pxi":46 * float onef = 1.0 * float zerof = 1.0 * double EPS32 = (1.0 + numpy.finfo(numpy.float32).eps) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitPixel.c b/pyFAI/ext/splitPixel.c index 5f0962e83..248878d78 100644 --- a/pyFAI/ext/splitPixel.c +++ b/pyFAI/ext/splitPixel.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/splitPixel.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", "pyFAI/ext/regrid_common.pxi", }; @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -775,7 +775,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -784,7 +784,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -793,7 +793,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -802,7 +802,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -2064,7 +2064,7 @@ static PyObject *__pyx_tuple__48; static PyObject *__pyx_codeobj__41; static PyObject *__pyx_codeobj__43; -/* "regrid_common.pxi":50 +/* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2075,7 +2075,7 @@ static PyObject *__pyx_codeobj__43; static CYTHON_INLINE double __pyx_fuse_1__pyx_f_5pyFAI_3ext_10splitPixel_get_bin_number(double __pyx_v_x0, double __pyx_v_pos0_min, double __pyx_v_delta) { double __pyx_r; - /* "regrid_common.pxi":59 + /* "pyFAI/ext/regrid_common.pxi":59 * @return: bin number as floating point. * """ * return (x0 - pos0_min) / delta # <<<<<<<<<<<<<< @@ -2083,7 +2083,7 @@ static CYTHON_INLINE double __pyx_fuse_1__pyx_f_5pyFAI_3ext_10splitPixel_get_bin __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta); goto __pyx_L0; - /* "regrid_common.pxi":50 + /* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2489,7 +2489,7 @@ static CYTHON_INLINE void __pyx_f_5pyFAI_3ext_10splitPixel_integrate(__Pyx_memvi /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_10splitPixel_1fullSplit1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_10splitPixel_fullSplit1D[] = "\n Calculates histogram of pos weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D.\n No compromise for speed has been made here.\n\n\n @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n @param weights: array with intensities\n @param bins: number of output bins\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat image\n @param polarization: array (of float64) with polarization correction\n @param solidangle: array (of float64) with flat image\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return 2theta, I, weighted histogram, unweighted histogram\n "; +static char __pyx_doc_5pyFAI_3ext_10splitPixel_fullSplit1D[] = "fullSplit1D(ndarray pos, ndarray weights, int bins=100, pos0Range=None, pos1Range=None, dummy=None, delta_dummy=None, mask=None, dark=None, flat=None, solidangle=None, polarization=None, float empty=0.0, double normalization_factor=1.0)\n\n Calculates histogram of pos weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D.\n No compromise for speed has been made here.\n\n\n @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n @param weights: array with intensities\n @param bins: number of output bins\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat image\n @param polarization: array (of float64) with polarization correction\n @param solidangle: array (of float64) with flat image\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return 2theta, I, weighted histogram, unweighted histogram\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_10splitPixel_1fullSplit1D = {"fullSplit1D", (PyCFunction)__pyx_pw_5pyFAI_3ext_10splitPixel_1fullSplit1D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_10splitPixel_fullSplit1D}; static PyObject *__pyx_pw_5pyFAI_3ext_10splitPixel_1fullSplit1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_pos = 0; @@ -5931,7 +5931,7 @@ __pyx_t_14.strides[0] = __pyx_v_buffer.strides[0]; /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_10splitPixel_3fullSplit2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_10splitPixel_2fullSplit2D[] = "\n Calculate 2D histogram of pos weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D\n\n\n @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n @param weights: array with intensities\n @param bins: number of output bins int or 2-tuple of int\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat-field image\n @param polarization: array (of float64) with polarization correction\n @param solidangle: array (of float64)with solid angle corrections\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n "; +static char __pyx_doc_5pyFAI_3ext_10splitPixel_2fullSplit2D[] = "fullSplit2D(ndarray pos, ndarray weights, bins, pos0Range=None, pos1Range=None, dummy=None, delta_dummy=None, mask=None, dark=None, flat=None, solidangle=None, polarization=None, float empty=0.0, double normalization_factor=1.0)\n\n Calculate 2D histogram of pos weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D\n\n\n @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n @param weights: array with intensities\n @param bins: number of output bins int or 2-tuple of int\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat-field image\n @param polarization: array (of float64) with polarization correction\n @param solidangle: array (of float64)with solid angle corrections\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_10splitPixel_3fullSplit2D = {"fullSplit2D", (PyCFunction)__pyx_pw_5pyFAI_3ext_10splitPixel_3fullSplit2D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_10splitPixel_2fullSplit2D}; static PyObject *__pyx_pw_5pyFAI_3ext_10splitPixel_3fullSplit2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_pos = 0; @@ -9925,7 +9925,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_10splitPixel_2fullSplit2D(CYTHON_UNUSED Py return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -9975,7 +9975,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -9988,7 +9988,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -9997,7 +9997,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -10006,7 +10006,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -10015,7 +10015,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -10025,7 +10025,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -10037,7 +10037,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -10048,7 +10048,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -10062,7 +10062,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -10074,7 +10074,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -10088,7 +10088,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -10102,7 +10102,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -10114,7 +10114,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -10128,7 +10128,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -10137,7 +10137,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -10146,7 +10146,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -10156,7 +10156,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -10165,7 +10165,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -10174,7 +10174,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -10185,7 +10185,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -10194,7 +10194,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -10207,7 +10207,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -10216,7 +10216,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -10227,7 +10227,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -10236,7 +10236,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -10245,7 +10245,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -10254,7 +10254,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -10263,7 +10263,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -10275,7 +10275,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -10284,7 +10284,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -10302,7 +10302,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -10318,7 +10318,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -10333,7 +10333,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -10343,7 +10343,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -10353,7 +10353,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -10373,7 +10373,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -10391,7 +10391,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -10405,7 +10405,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -10414,7 +10414,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -10425,7 +10425,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -10436,7 +10436,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -10447,7 +10447,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -10458,7 +10458,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -10469,7 +10469,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -10480,7 +10480,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -10491,7 +10491,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -10502,7 +10502,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -10513,7 +10513,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -10524,7 +10524,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -10535,7 +10535,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -10546,7 +10546,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -10557,7 +10557,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -10568,7 +10568,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -10579,7 +10579,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -10590,7 +10590,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -10602,7 +10602,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -10628,7 +10628,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -10637,7 +10637,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -10649,7 +10649,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -10658,7 +10658,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -10667,7 +10667,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -10676,7 +10676,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -10686,7 +10686,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -10696,7 +10696,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -10728,7 +10728,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -10752,7 +10752,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -10762,7 +10762,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -10774,7 +10774,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -10784,7 +10784,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -10796,7 +10796,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -10808,7 +10808,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -10825,7 +10825,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -10839,7 +10839,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -10858,7 +10858,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -10875,7 +10875,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -10889,7 +10889,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -10908,7 +10908,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -10925,7 +10925,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -10939,7 +10939,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -10958,7 +10958,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -10975,7 +10975,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -10989,7 +10989,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -11008,7 +11008,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -11025,7 +11025,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -11039,7 +11039,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -11058,7 +11058,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -11090,7 +11090,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -11099,7 +11099,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -11108,7 +11108,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -11130,7 +11130,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -11143,7 +11143,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -11182,7 +11182,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -11199,7 +11199,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -11213,7 +11213,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -11233,7 +11233,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -11251,7 +11251,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -11265,7 +11265,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -11281,7 +11281,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -11290,7 +11290,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -11299,7 +11299,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -11310,7 +11310,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -11320,7 +11320,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -11330,7 +11330,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -11342,7 +11342,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -11352,7 +11352,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -11366,7 +11366,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -11384,7 +11384,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -11402,7 +11402,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -11420,7 +11420,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -11438,7 +11438,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -11456,7 +11456,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -11474,7 +11474,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -11492,7 +11492,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -11510,7 +11510,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -11528,7 +11528,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -11546,7 +11546,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -11564,7 +11564,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -11582,7 +11582,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -11600,7 +11600,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -11620,7 +11620,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -11640,7 +11640,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -11660,7 +11660,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -11679,7 +11679,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -11702,7 +11702,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -11714,7 +11714,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -11726,7 +11726,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -11736,7 +11736,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -11746,7 +11746,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -11771,7 +11771,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -11786,7 +11786,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -11797,7 +11797,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -11809,7 +11809,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -11818,7 +11818,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -11829,7 +11829,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -11838,7 +11838,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -11847,7 +11847,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -11859,7 +11859,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -11873,7 +11873,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -11883,7 +11883,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -11897,7 +11897,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -11908,7 +11908,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -23597,7 +23597,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -23608,7 +23608,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -23619,7 +23619,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -23630,7 +23630,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -23641,7 +23641,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -23652,7 +23652,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -24083,7 +24083,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":28 + /* "pyFAI/ext/regrid_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common cdef constants and functions for preprocessing""" # <<<<<<<<<<<<<< @@ -24092,7 +24092,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_cdef_constants_and_functi) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":29 + /* "pyFAI/ext/regrid_common.pxi":29 * * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -24101,7 +24101,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":30 + /* "pyFAI/ext/regrid_common.pxi":30 * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -24110,7 +24110,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":31 + /* "pyFAI/ext/regrid_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -24119,7 +24119,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":32 + /* "pyFAI/ext/regrid_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -24128,7 +24128,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":33 + /* "pyFAI/ext/regrid_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -24137,7 +24137,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "numpy_common.pxi":9 + /* "pyFAI/ext/numpy_common.pxi":9 * void import_umath() * * if FALSE: # <<<<<<<<<<<<<< @@ -24147,7 +24147,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) __pyx_t_2 = (0 != 0); if (__pyx_t_2) { - /* "numpy_common.pxi":10 + /* "pyFAI/ext/numpy_common.pxi":10 * * if FALSE: * import_array() # <<<<<<<<<<<<<< @@ -24155,7 +24155,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ import_array(); - /* "numpy_common.pxi":11 + /* "pyFAI/ext/numpy_common.pxi":11 * if FALSE: * import_array() * import_umath() # <<<<<<<<<<<<<< @@ -24165,7 +24165,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) } __pyx_L2:; - /* "regrid_common.pxi":38 + /* "pyFAI/ext/regrid_common.pxi":38 * import cython * cimport numpy * import numpy # <<<<<<<<<<<<<< @@ -24177,7 +24177,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":42 + /* "pyFAI/ext/regrid_common.pxi":42 * from libc.math cimport fabs, M_PI * cdef: * float pi = M_PI # <<<<<<<<<<<<<< @@ -24186,7 +24186,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ __pyx_v_5pyFAI_3ext_10splitPixel_pi = ((float)M_PI); - /* "regrid_common.pxi":43 + /* "pyFAI/ext/regrid_common.pxi":43 * cdef: * float pi = M_PI * float piover2 = (pi * 0.5) # <<<<<<<<<<<<<< @@ -24195,7 +24195,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ __pyx_v_5pyFAI_3ext_10splitPixel_piover2 = ((float)(__pyx_v_5pyFAI_3ext_10splitPixel_pi * 0.5)); - /* "regrid_common.pxi":44 + /* "pyFAI/ext/regrid_common.pxi":44 * float pi = M_PI * float piover2 = (pi * 0.5) * float onef = 1.0 # <<<<<<<<<<<<<< @@ -24204,7 +24204,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ __pyx_v_5pyFAI_3ext_10splitPixel_onef = ((float)1.0); - /* "regrid_common.pxi":45 + /* "pyFAI/ext/regrid_common.pxi":45 * float piover2 = (pi * 0.5) * float onef = 1.0 * float zerof = 1.0 # <<<<<<<<<<<<<< @@ -24213,7 +24213,7 @@ PyMODINIT_FUNC PyInit_splitPixel(void) */ __pyx_v_5pyFAI_3ext_10splitPixel_zerof = ((float)1.0); - /* "regrid_common.pxi":46 + /* "pyFAI/ext/regrid_common.pxi":46 * float onef = 1.0 * float zerof = 1.0 * double EPS32 = (1.0 + numpy.finfo(numpy.float32).eps) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitPixelFull.c b/pyFAI/ext/splitPixelFull.c index 5ee0d4972..58baf4766 100644 --- a/pyFAI/ext/splitPixelFull.c +++ b/pyFAI/ext/splitPixelFull.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/splitPixelFull.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", "pyFAI/ext/regrid_common.pxi", }; @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -775,7 +775,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -784,7 +784,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -793,7 +793,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -802,7 +802,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -2136,7 +2136,7 @@ static PyObject *__pyx_tuple__54; static PyObject *__pyx_codeobj__47; static PyObject *__pyx_codeobj__49; -/* "regrid_common.pxi":50 +/* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2147,7 +2147,7 @@ static PyObject *__pyx_codeobj__49; static CYTHON_INLINE double __pyx_fuse_1__pyx_f_5pyFAI_3ext_14splitPixelFull_get_bin_number(double __pyx_v_x0, double __pyx_v_pos0_min, double __pyx_v_delta) { double __pyx_r; - /* "regrid_common.pxi":59 + /* "pyFAI/ext/regrid_common.pxi":59 * @return: bin number as floating point. * """ * return (x0 - pos0_min) / delta # <<<<<<<<<<<<<< @@ -2155,7 +2155,7 @@ static CYTHON_INLINE double __pyx_fuse_1__pyx_f_5pyFAI_3ext_14splitPixelFull_get __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta); goto __pyx_L0; - /* "regrid_common.pxi":50 + /* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2860,7 +2860,7 @@ static double __pyx_f_5pyFAI_3ext_14splitPixelFull_area_n(struct __pyx_t_5pyFAI_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_14splitPixelFull_1fullSplit1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_14splitPixelFull_fullSplit1D[] = "\n Calculates histogram of pos weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D.\n No compromise for speed has been made here.\n\n\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param weights: array with intensities\n @param bins: number of output bins\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat image\n @param solidangle: array (of float64) with flat image\n @param polarization: array (of float64) with polarization correction\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return 2theta, I, weighted histogram, unweighted histogram\n "; +static char __pyx_doc_5pyFAI_3ext_14splitPixelFull_fullSplit1D[] = "fullSplit1D(ndarray pos, ndarray weights, size_t bins=100, pos0Range=None, pos1Range=None, dummy=None, delta_dummy=None, mask=None, dark=None, flat=None, solidangle=None, polarization=None, data_t empty=0.0, double normalization_factor=1.0)\n\n Calculates histogram of pos weighted by weights\n\n Splitting is done on the pixel's bounding box like fit2D.\n No compromise for speed has been made here.\n\n\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param weights: array with intensities\n @param bins: number of output bins\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat image\n @param solidangle: array (of float64) with flat image\n @param polarization: array (of float64) with polarization correction\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return 2theta, I, weighted histogram, unweighted histogram\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_14splitPixelFull_1fullSplit1D = {"fullSplit1D", (PyCFunction)__pyx_pw_5pyFAI_3ext_14splitPixelFull_1fullSplit1D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_14splitPixelFull_fullSplit1D}; static PyObject *__pyx_pw_5pyFAI_3ext_14splitPixelFull_1fullSplit1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_pos = 0; @@ -5888,7 +5888,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_14splitPixelFull_fullSplit1D(CYTHON_UNUSED /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_14splitPixelFull_3fullSplit2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_14splitPixelFull_2fullSplit2D[] = "\n Calculate 2D histogram of pos weighted by weights\n\n\n\n @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n @param weights: array with intensities\n @param bins: number of output bins int or 2-tuple of int\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat-field image\n @param polarization: array (of float64) with polarization correction\n @param solidangle: array (of float64)with solid angle corrections\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n "; +static char __pyx_doc_5pyFAI_3ext_14splitPixelFull_2fullSplit2D[] = "fullSplit2D(ndarray pos, ndarray weights, bins, pos0Range=None, pos1Range=None, dummy=None, delta_dummy=None, mask=None, dark=None, flat=None, solidangle=None, polarization=None, data_t empty=0.0, double normalization_factor=1.0)\n\n Calculate 2D histogram of pos weighted by weights\n\n\n\n @param pos: 3D array with pos0; Corner A,B,C,D; tth or chi\n @param weights: array with intensities\n @param bins: number of output bins int or 2-tuple of int\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param dummy: value for bins without pixels\n @param delta_dummy: precision of dummy value\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param dark: array (of float64) with dark noise to be subtracted (or None)\n @param flat: array (of float64) with flat-field image\n @param polarization: array (of float64) with polarization correction\n @param solidangle: array (of float64)with solid angle corrections\n @param empty: value of output bins without any contribution when dummy is None\n @param normalization_factor: divide the valid result by this value\n\n @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_14splitPixelFull_3fullSplit2D = {"fullSplit2D", (PyCFunction)__pyx_pw_5pyFAI_3ext_14splitPixelFull_3fullSplit2D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_14splitPixelFull_2fullSplit2D}; static PyObject *__pyx_pw_5pyFAI_3ext_14splitPixelFull_3fullSplit2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_pos = 0; @@ -10728,7 +10728,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_14splitPixelFull_2fullSplit2D(CYTHON_UNUSE return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -10778,7 +10778,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -10791,7 +10791,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -10800,7 +10800,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -10809,7 +10809,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -10818,7 +10818,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -10828,7 +10828,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -10840,7 +10840,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -10851,7 +10851,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -10865,7 +10865,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -10877,7 +10877,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -10891,7 +10891,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -10905,7 +10905,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -10917,7 +10917,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -10931,7 +10931,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -10940,7 +10940,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -10949,7 +10949,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -10959,7 +10959,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -10968,7 +10968,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -10977,7 +10977,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -10988,7 +10988,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -10997,7 +10997,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -11010,7 +11010,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -11019,7 +11019,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -11030,7 +11030,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -11039,7 +11039,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -11048,7 +11048,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -11057,7 +11057,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -11066,7 +11066,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -11078,7 +11078,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -11087,7 +11087,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -11105,7 +11105,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -11121,7 +11121,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -11136,7 +11136,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -11146,7 +11146,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -11156,7 +11156,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -11176,7 +11176,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -11194,7 +11194,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -11208,7 +11208,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -11217,7 +11217,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -11228,7 +11228,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -11239,7 +11239,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -11250,7 +11250,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -11261,7 +11261,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -11272,7 +11272,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -11283,7 +11283,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -11294,7 +11294,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -11305,7 +11305,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -11316,7 +11316,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -11327,7 +11327,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -11338,7 +11338,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -11349,7 +11349,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -11360,7 +11360,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -11371,7 +11371,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -11382,7 +11382,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -11393,7 +11393,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -11405,7 +11405,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -11431,7 +11431,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -11440,7 +11440,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -11452,7 +11452,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -11461,7 +11461,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -11470,7 +11470,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -11479,7 +11479,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -11489,7 +11489,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -11499,7 +11499,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -11531,7 +11531,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -11555,7 +11555,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -11565,7 +11565,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -11577,7 +11577,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -11587,7 +11587,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -11599,7 +11599,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -11611,7 +11611,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -11628,7 +11628,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -11642,7 +11642,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -11661,7 +11661,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -11678,7 +11678,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -11692,7 +11692,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -11711,7 +11711,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -11728,7 +11728,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -11742,7 +11742,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -11761,7 +11761,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -11778,7 +11778,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -11792,7 +11792,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -11811,7 +11811,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -11828,7 +11828,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -11842,7 +11842,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -11861,7 +11861,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -11893,7 +11893,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -11902,7 +11902,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -11911,7 +11911,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -11933,7 +11933,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -11946,7 +11946,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -11985,7 +11985,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -12002,7 +12002,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -12016,7 +12016,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -12036,7 +12036,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -12054,7 +12054,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -12068,7 +12068,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -12084,7 +12084,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -12093,7 +12093,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -12102,7 +12102,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -12113,7 +12113,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -12123,7 +12123,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -12133,7 +12133,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -12145,7 +12145,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -12155,7 +12155,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -12169,7 +12169,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -12187,7 +12187,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -12205,7 +12205,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -12223,7 +12223,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -12241,7 +12241,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -12259,7 +12259,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -12277,7 +12277,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -12295,7 +12295,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -12313,7 +12313,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -12331,7 +12331,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -12349,7 +12349,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -12367,7 +12367,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -12385,7 +12385,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -12403,7 +12403,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -12423,7 +12423,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -12443,7 +12443,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -12463,7 +12463,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -12482,7 +12482,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -12505,7 +12505,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -12517,7 +12517,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -12529,7 +12529,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -12539,7 +12539,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -12549,7 +12549,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -12574,7 +12574,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -12589,7 +12589,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -12600,7 +12600,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -12612,7 +12612,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -12621,7 +12621,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -12632,7 +12632,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -12641,7 +12641,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -12650,7 +12650,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -12662,7 +12662,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -12676,7 +12676,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -12686,7 +12686,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -12700,7 +12700,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -12711,7 +12711,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -24452,7 +24452,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -24463,7 +24463,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -24474,7 +24474,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -24485,7 +24485,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -24496,7 +24496,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__32); __Pyx_GIVEREF(__pyx_tuple__32); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -24507,7 +24507,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__33); __Pyx_GIVEREF(__pyx_tuple__33); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -24929,7 +24929,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":28 + /* "pyFAI/ext/regrid_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common cdef constants and functions for preprocessing""" # <<<<<<<<<<<<<< @@ -24938,7 +24938,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_cdef_constants_and_functi) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":29 + /* "pyFAI/ext/regrid_common.pxi":29 * * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -24947,7 +24947,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":30 + /* "pyFAI/ext/regrid_common.pxi":30 * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -24956,7 +24956,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":31 + /* "pyFAI/ext/regrid_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -24965,7 +24965,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":32 + /* "pyFAI/ext/regrid_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -24974,7 +24974,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":33 + /* "pyFAI/ext/regrid_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -24983,7 +24983,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "numpy_common.pxi":9 + /* "pyFAI/ext/numpy_common.pxi":9 * void import_umath() * * if FALSE: # <<<<<<<<<<<<<< @@ -24993,7 +24993,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) __pyx_t_2 = (0 != 0); if (__pyx_t_2) { - /* "numpy_common.pxi":10 + /* "pyFAI/ext/numpy_common.pxi":10 * * if FALSE: * import_array() # <<<<<<<<<<<<<< @@ -25001,7 +25001,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ import_array(); - /* "numpy_common.pxi":11 + /* "pyFAI/ext/numpy_common.pxi":11 * if FALSE: * import_array() * import_umath() # <<<<<<<<<<<<<< @@ -25011,7 +25011,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) } __pyx_L2:; - /* "regrid_common.pxi":38 + /* "pyFAI/ext/regrid_common.pxi":38 * import cython * cimport numpy * import numpy # <<<<<<<<<<<<<< @@ -25023,7 +25023,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":42 + /* "pyFAI/ext/regrid_common.pxi":42 * from libc.math cimport fabs, M_PI * cdef: * float pi = M_PI # <<<<<<<<<<<<<< @@ -25032,7 +25032,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ __pyx_v_5pyFAI_3ext_14splitPixelFull_pi = ((float)M_PI); - /* "regrid_common.pxi":43 + /* "pyFAI/ext/regrid_common.pxi":43 * cdef: * float pi = M_PI * float piover2 = (pi * 0.5) # <<<<<<<<<<<<<< @@ -25041,7 +25041,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ __pyx_v_5pyFAI_3ext_14splitPixelFull_piover2 = ((float)(__pyx_v_5pyFAI_3ext_14splitPixelFull_pi * 0.5)); - /* "regrid_common.pxi":44 + /* "pyFAI/ext/regrid_common.pxi":44 * float pi = M_PI * float piover2 = (pi * 0.5) * float onef = 1.0 # <<<<<<<<<<<<<< @@ -25050,7 +25050,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ __pyx_v_5pyFAI_3ext_14splitPixelFull_onef = ((float)1.0); - /* "regrid_common.pxi":45 + /* "pyFAI/ext/regrid_common.pxi":45 * float piover2 = (pi * 0.5) * float onef = 1.0 * float zerof = 1.0 # <<<<<<<<<<<<<< @@ -25059,7 +25059,7 @@ PyMODINIT_FUNC PyInit_splitPixelFull(void) */ __pyx_v_5pyFAI_3ext_14splitPixelFull_zerof = ((float)1.0); - /* "regrid_common.pxi":46 + /* "pyFAI/ext/regrid_common.pxi":46 * float onef = 1.0 * float zerof = 1.0 * double EPS32 = (1.0 + numpy.finfo(numpy.float32).eps) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitPixelFullCSR.c b/pyFAI/ext/splitPixelFullCSR.c index ed25a0766..c859a9975 100644 --- a/pyFAI/ext/splitPixelFullCSR.c +++ b/pyFAI/ext/splitPixelFullCSR.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/splitPixelFullCSR.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", "pyFAI/ext/regrid_common.pxi", }; @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -757,7 +757,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -766,7 +766,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -775,7 +775,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -784,7 +784,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -2307,7 +2307,7 @@ static PyObject *__pyx_codeobj__58; static PyObject *__pyx_codeobj__61; static PyObject *__pyx_codeobj__63; -/* "regrid_common.pxi":50 +/* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2318,7 +2318,7 @@ static PyObject *__pyx_codeobj__63; static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_17splitPixelFullCSR_get_bin_number(float __pyx_v_x0, float __pyx_v_pos0_min, float __pyx_v_delta) { float __pyx_r; - /* "regrid_common.pxi":59 + /* "pyFAI/ext/regrid_common.pxi":59 * @return: bin number as floating point. * """ * return (x0 - pos0_min) / delta # <<<<<<<<<<<<<< @@ -2326,7 +2326,7 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_17splitPixelFullCSR_g __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta); goto __pyx_L0; - /* "regrid_common.pxi":50 + /* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -3031,7 +3031,7 @@ static CYTHON_INLINE int __pyx_f_5pyFAI_3ext_17splitPixelFullCSR_on_boundary(flo /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d___init__[] = "\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value of output bins without any contribution when dummy is None\n\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d___init__[] = "FullSplitCSR_1d.__init__(self, ndarray pos, int bins=100, pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', empty=None)\n\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value of output bins without any contribution when dummy is None\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -3903,7 +3903,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d___in /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_3calc_lut, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_2calc_lut[] = "FullSplitCSR_1d.calc_lut(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_3calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_2calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -6234,7 +6235,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_2cal /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4integrate[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4integrate[] = "FullSplitCSR_1d.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, double normalization_factor=1.0)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_5integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_5integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -7652,7 +7653,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates17) + #pragma omp critical(__pyx_parallel_lastprivates16) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -7935,7 +7936,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates18) + #pragma omp critical(__pyx_parallel_lastprivates17) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -8364,22 +8365,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_37, __pyx_t_33, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_41, __pyx_t_35) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_33, __pyx_t_37, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_41, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_idx) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(guided) + #pragma omp for lastprivate(__pyx_v_sum_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_2; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_sum_data = ((float)__PYX_NAN()); __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_sum_count = ((float)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_sum_count = ((float)__PYX_NAN()); + __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); /* "pyFAI/ext/splitPixelFullCSR.pyx":563 * @@ -8681,7 +8682,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d___init__[] = "\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value for bins where no pixels are contributing\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d___init__[] = "FullSplitCSR_2d.__init__(self, ndarray pos, bins=(100, 36), pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', empty=None)\n\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n @param empty: value for bins where no pixels are contributing\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -9482,7 +9483,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d___in /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_3calc_lut, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_2calc_lut[] = "FullSplitCSR_2d.calc_lut(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_3calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_2calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -14171,7 +14173,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_2cal /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4integrate[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4integrate[] = "FullSplitCSR_2d.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, double normalization_factor=1.0)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @param normalization_factor: divide the valid result by this value\n\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_5integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_5integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -15601,7 +15603,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates19) + #pragma omp critical(__pyx_parallel_lastprivates18) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -15884,7 +15886,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates20) + #pragma omp critical(__pyx_parallel_lastprivates19) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -16313,22 +16315,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int if (__pyx_t_4 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_37, __pyx_t_33, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_41, __pyx_t_35) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_33, __pyx_t_37, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_41, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_sum_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) schedule(guided) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_4; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ - __pyx_v_sum_count = ((float)__PYX_NAN()); __pyx_v_sum_data = ((float)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_sum_count = ((float)__PYX_NAN()); /* "pyFAI/ext/splitPixelFullCSR.pyx":1201 * @@ -16613,7 +16615,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -16663,7 +16665,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -16676,7 +16678,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -16685,7 +16687,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -16694,7 +16696,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -16703,7 +16705,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -16713,7 +16715,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -16725,7 +16727,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -16736,7 +16738,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -16750,7 +16752,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -16762,7 +16764,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -16776,7 +16778,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -16790,7 +16792,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -16802,7 +16804,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -16816,7 +16818,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -16825,7 +16827,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -16834,7 +16836,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -16844,7 +16846,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -16853,7 +16855,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -16862,7 +16864,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -16873,7 +16875,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -16882,7 +16884,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -16895,7 +16897,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -16904,7 +16906,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -16915,7 +16917,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -16924,7 +16926,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -16933,7 +16935,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -16942,7 +16944,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -16951,7 +16953,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -16963,7 +16965,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -16972,7 +16974,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -16990,7 +16992,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -17006,7 +17008,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -17021,7 +17023,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -17031,7 +17033,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -17041,7 +17043,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -17061,7 +17063,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -17079,7 +17081,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17093,7 +17095,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -17102,7 +17104,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -17113,7 +17115,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -17124,7 +17126,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -17135,7 +17137,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -17146,7 +17148,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -17157,7 +17159,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -17168,7 +17170,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -17179,7 +17181,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -17190,7 +17192,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -17201,7 +17203,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -17212,7 +17214,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -17223,7 +17225,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -17234,7 +17236,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -17245,7 +17247,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -17256,7 +17258,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -17267,7 +17269,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -17278,7 +17280,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -17290,7 +17292,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -17316,7 +17318,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -17325,7 +17327,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -17337,7 +17339,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -17346,7 +17348,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -17355,7 +17357,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -17364,7 +17366,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -17374,7 +17376,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -17384,7 +17386,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -17416,7 +17418,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -17440,7 +17442,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -17450,7 +17452,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -17462,7 +17464,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -17472,7 +17474,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -17484,7 +17486,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -17496,7 +17498,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17513,7 +17515,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -17527,7 +17529,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17546,7 +17548,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17563,7 +17565,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -17577,7 +17579,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17596,7 +17598,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17613,7 +17615,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -17627,7 +17629,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17646,7 +17648,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17663,7 +17665,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -17677,7 +17679,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17696,7 +17698,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17713,7 +17715,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -17727,7 +17729,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17746,7 +17748,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -17778,7 +17780,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -17787,7 +17789,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -17796,7 +17798,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -17818,7 +17820,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -17831,7 +17833,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -17870,7 +17872,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -17887,7 +17889,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -17901,7 +17903,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -17921,7 +17923,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -17939,7 +17941,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17953,7 +17955,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -17969,7 +17971,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -17978,7 +17980,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -17987,7 +17989,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -17998,7 +18000,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -18008,7 +18010,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -18018,7 +18020,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -18030,7 +18032,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -18040,7 +18042,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -18054,7 +18056,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -18072,7 +18074,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -18090,7 +18092,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -18108,7 +18110,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -18126,7 +18128,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -18144,7 +18146,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -18162,7 +18164,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -18180,7 +18182,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -18198,7 +18200,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -18216,7 +18218,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -18234,7 +18236,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -18252,7 +18254,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -18270,7 +18272,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -18288,7 +18290,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -18308,7 +18310,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -18328,7 +18330,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -18348,7 +18350,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -18367,7 +18369,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -18390,7 +18392,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -18402,7 +18404,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -18414,7 +18416,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -18424,7 +18426,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -18434,7 +18436,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -18459,7 +18461,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -18474,7 +18476,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -18485,7 +18487,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -18497,7 +18499,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -18506,7 +18508,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -18517,7 +18519,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -18526,7 +18528,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -18535,7 +18537,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -18547,7 +18549,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18561,7 +18563,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -18571,7 +18573,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -18585,7 +18587,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -18596,7 +18598,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -30424,7 +30426,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_slice__33); __Pyx_GIVEREF(__pyx_slice__33); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -30435,7 +30437,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -30446,7 +30448,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__35); __Pyx_GIVEREF(__pyx_tuple__35); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -30457,7 +30459,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -30468,7 +30470,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__37); __Pyx_GIVEREF(__pyx_tuple__37); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -30479,7 +30481,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -30989,7 +30991,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":28 + /* "pyFAI/ext/regrid_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common cdef constants and functions for preprocessing""" # <<<<<<<<<<<<<< @@ -30998,7 +31000,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_cdef_constants_and_functi) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":29 + /* "pyFAI/ext/regrid_common.pxi":29 * * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -31007,7 +31009,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":30 + /* "pyFAI/ext/regrid_common.pxi":30 * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -31016,7 +31018,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":31 + /* "pyFAI/ext/regrid_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -31025,7 +31027,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":32 + /* "pyFAI/ext/regrid_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -31034,7 +31036,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":33 + /* "pyFAI/ext/regrid_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -31043,7 +31045,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "numpy_common.pxi":9 + /* "pyFAI/ext/numpy_common.pxi":9 * void import_umath() * * if FALSE: # <<<<<<<<<<<<<< @@ -31053,7 +31055,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) __pyx_t_2 = (0 != 0); if (__pyx_t_2) { - /* "numpy_common.pxi":10 + /* "pyFAI/ext/numpy_common.pxi":10 * * if FALSE: * import_array() # <<<<<<<<<<<<<< @@ -31061,7 +31063,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ import_array(); - /* "numpy_common.pxi":11 + /* "pyFAI/ext/numpy_common.pxi":11 * if FALSE: * import_array() * import_umath() # <<<<<<<<<<<<<< @@ -31071,7 +31073,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) } __pyx_L2:; - /* "regrid_common.pxi":38 + /* "pyFAI/ext/regrid_common.pxi":38 * import cython * cimport numpy * import numpy # <<<<<<<<<<<<<< @@ -31083,7 +31085,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":42 + /* "pyFAI/ext/regrid_common.pxi":42 * from libc.math cimport fabs, M_PI * cdef: * float pi = M_PI # <<<<<<<<<<<<<< @@ -31092,7 +31094,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullCSR_pi = ((float)M_PI); - /* "regrid_common.pxi":43 + /* "pyFAI/ext/regrid_common.pxi":43 * cdef: * float pi = M_PI * float piover2 = (pi * 0.5) # <<<<<<<<<<<<<< @@ -31101,7 +31103,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullCSR_piover2 = ((float)(__pyx_v_5pyFAI_3ext_17splitPixelFullCSR_pi * 0.5)); - /* "regrid_common.pxi":44 + /* "pyFAI/ext/regrid_common.pxi":44 * float pi = M_PI * float piover2 = (pi * 0.5) * float onef = 1.0 # <<<<<<<<<<<<<< @@ -31110,7 +31112,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullCSR_onef = ((float)1.0); - /* "regrid_common.pxi":45 + /* "pyFAI/ext/regrid_common.pxi":45 * float piover2 = (pi * 0.5) * float onef = 1.0 * float zerof = 1.0 # <<<<<<<<<<<<<< @@ -31119,7 +31121,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullCSR(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullCSR_zerof = ((float)1.0); - /* "regrid_common.pxi":46 + /* "pyFAI/ext/regrid_common.pxi":46 * float onef = 1.0 * float zerof = 1.0 * double EPS32 = (1.0 + numpy.finfo(numpy.float32).eps) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitPixelFullLUT.c b/pyFAI/ext/splitPixelFullLUT.c index 7b9d0030f..f4abdb2a0 100644 --- a/pyFAI/ext/splitPixelFullLUT.c +++ b/pyFAI/ext/splitPixelFullLUT.c @@ -446,7 +446,7 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "pyFAI/ext/splitPixelFullLUT.pyx", "__init__.pxd", - "pyFAI/ext/stringsource", + "stringsource", "type.pxd", "pyFAI/ext/regrid_common.pxi", }; @@ -542,7 +542,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #endif -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -551,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -560,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -569,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -578,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -587,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -596,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -605,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -614,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -623,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -632,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -641,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -650,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -659,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -668,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -677,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -686,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -695,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -704,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -713,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -722,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -757,7 +757,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -766,7 +766,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -775,7 +775,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -784,7 +784,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -2320,7 +2320,7 @@ static PyObject *__pyx_codeobj__58; static PyObject *__pyx_codeobj__61; static PyObject *__pyx_codeobj__63; -/* "regrid_common.pxi":50 +/* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2331,7 +2331,7 @@ static PyObject *__pyx_codeobj__63; static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_17splitPixelFullLUT_get_bin_number(float __pyx_v_x0, float __pyx_v_pos0_min, float __pyx_v_delta) { float __pyx_r; - /* "regrid_common.pxi":59 + /* "pyFAI/ext/regrid_common.pxi":59 * @return: bin number as floating point. * """ * return (x0 - pos0_min) / delta # <<<<<<<<<<<<<< @@ -2339,7 +2339,7 @@ static CYTHON_INLINE float __pyx_fuse_0__pyx_f_5pyFAI_3ext_17splitPixelFullLUT_g __pyx_r = ((__pyx_v_x0 - __pyx_v_pos0_min) / __pyx_v_delta); goto __pyx_L0; - /* "regrid_common.pxi":50 + /* "pyFAI/ext/regrid_common.pxi":50 * * @cython.cdivision(True) * cdef inline floating get_bin_number(floating x0, floating pos0_min, floating delta) nogil: # <<<<<<<<<<<<<< @@ -2535,7 +2535,7 @@ static CYTHON_INLINE float __pyx_f_5pyFAI_3ext_17splitPixelFullLUT_integrate(flo /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit___init__[] = "\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit___init__[] = "HistoLUT1dFullSplit.__init__(self, ndarray pos, int bins=100, pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', empty=None)\n\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -3407,7 +3407,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_3calc_lut, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_2calc_lut[] = "HistoLUT1dFullSplit.calc_lut(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_3calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_2calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5738,7 +5739,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_4integrate[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_4integrate[] = "HistoLUT1dFullSplit.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_5integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_5integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_4integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -6877,7 +6878,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_17, __pyx_t_18, __pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_21, __pyx_t_19, __pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_17, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7078,7 +7079,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates23) + #pragma omp critical(__pyx_parallel_lastprivates0) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -7205,7 +7206,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_24, __pyx_t_26, __pyx_t_27, __pyx_t_12, __pyx_t_25, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_24, __pyx_t_25, __pyx_t_27, __pyx_t_26, __pyx_t_28, __pyx_t_12, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7361,7 +7362,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates24) + #pragma omp critical(__pyx_parallel_lastprivates1) #endif /* _OPENMP */ { __pyx_parallel_temp0 = __pyx_v_data; @@ -7592,7 +7593,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_30, __pyx_t_13) + #pragma omp parallel private(__pyx_t_30, __pyx_t_12, __pyx_t_13, __pyx_t_32, __pyx_t_31) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7790,22 +7791,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_40, __pyx_t_41, __pyx_t_33, __pyx_t_12, __pyx_t_37, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_36, __pyx_t_13) + #pragma omp parallel private(__pyx_t_36, __pyx_t_40, __pyx_t_33, __pyx_t_41, __pyx_t_39, __pyx_t_38, __pyx_t_35, __pyx_t_34, __pyx_t_13, __pyx_t_12, __pyx_t_37) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_j) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_coef) schedule(guided) + #pragma omp for lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_2; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_sum_data = ((float)__PYX_NAN()); __pyx_v_sum_count = ((float)__PYX_NAN()); - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_coef = ((float)__PYX_NAN()); /* "pyFAI/ext/splitPixelFullLUT.pyx":586 * @@ -8616,7 +8617,7 @@ static CYTHON_INLINE int __pyx_f_5pyFAI_3ext_17splitPixelFullLUT_foo(float __pyx /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit___init__[] = "\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit___init__[] = "HistoLUT2dFullSplit.__init__(self, ndarray pos, bins=(100, 36), pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined')\n\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins (tth=100, chi=36 by default)\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -9377,7 +9378,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_3calc_lut, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_2calc_lut[] = "HistoLUT2dFullSplit.calc_lut(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_3calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_2calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -14112,7 +14114,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_4integrate[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; +static char __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_4integrate[] = "HistoLUT2dFullSplit.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_5integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_5integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_4integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -15232,8 +15234,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ __pyx_t_4 = __pyx_v_size; if (1 == 0) abort(); { - __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; - float __pyx_parallel_temp1 = __PYX_NAN(); + float __pyx_parallel_temp0 = __PYX_NAN(); + __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -15248,7 +15250,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_17, __pyx_t_18, __pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_21, __pyx_t_19, __pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_17, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -15258,7 +15260,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_16; __pyx_t_15++){ if (__pyx_parallel_why < 2) @@ -15449,11 +15451,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates25) + #pragma omp critical(__pyx_parallel_lastprivates2) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_data; + __pyx_parallel_temp0 = __pyx_v_data; + __pyx_parallel_temp1 = __pyx_v_i; } __pyx_L28:; #ifdef _OPENMP @@ -15483,8 +15485,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_data = __pyx_parallel_temp1; + __pyx_v_data = __pyx_parallel_temp0; + __pyx_v_i = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L11_return; case 4: @@ -15560,8 +15562,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ __pyx_t_16 = __pyx_v_size; if (1 == 0) abort(); { - __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; - float __pyx_parallel_temp1 = __PYX_NAN(); + float __pyx_parallel_temp0 = __PYX_NAN(); + __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -15576,7 +15578,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_4 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_24, __pyx_t_26, __pyx_t_27, __pyx_t_12, __pyx_t_25, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_24, __pyx_t_25, __pyx_t_27, __pyx_t_26, __pyx_t_28, __pyx_t_12, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -15586,7 +15588,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_4; __pyx_t_15++){ if (__pyx_parallel_why < 2) @@ -15732,11 +15734,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates26) + #pragma omp critical(__pyx_parallel_lastprivates3) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_data; + __pyx_parallel_temp0 = __pyx_v_data; + __pyx_parallel_temp1 = __pyx_v_i; } __pyx_L41:; #ifdef _OPENMP @@ -15766,8 +15768,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_data = __pyx_parallel_temp1; + __pyx_v_data = __pyx_parallel_temp0; + __pyx_v_i = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L29_return; case 4: @@ -15963,11 +15965,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_30, __pyx_t_13) + #pragma omp parallel private(__pyx_t_30, __pyx_t_12, __pyx_t_13, __pyx_t_32, __pyx_t_31) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_16; __pyx_t_15++){ { @@ -16161,22 +16163,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_4 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_40, __pyx_t_41, __pyx_t_33, __pyx_t_12, __pyx_t_37, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_36, __pyx_t_13) + #pragma omp parallel private(__pyx_t_36, __pyx_t_40, __pyx_t_33, __pyx_t_41, __pyx_t_39, __pyx_t_38, __pyx_t_35, __pyx_t_34, __pyx_t_13, __pyx_t_12, __pyx_t_37) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) schedule(guided) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_j) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_4; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ - __pyx_v_sum_data = ((float)__PYX_NAN()); - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_sum_data = ((float)__PYX_NAN()); __pyx_v_sum_count = ((float)__PYX_NAN()); + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); /* "pyFAI/ext/splitPixelFullLUT.pyx":1326 * @@ -16463,7 +16465,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -16513,7 +16515,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -16526,7 +16528,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -16535,7 +16537,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -16544,7 +16546,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -16553,7 +16555,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -16563,7 +16565,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -16575,7 +16577,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -16586,7 +16588,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -16600,7 +16602,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -16612,7 +16614,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L6_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -16626,7 +16628,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -16640,7 +16642,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -16652,7 +16654,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -16666,7 +16668,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -16675,7 +16677,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -16684,7 +16686,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -16694,7 +16696,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -16703,7 +16705,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -16712,7 +16714,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -16723,7 +16725,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -16732,7 +16734,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -16745,7 +16747,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -16754,7 +16756,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -16765,7 +16767,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -16774,7 +16776,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -16783,7 +16785,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -16792,7 +16794,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -16801,7 +16803,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -16813,7 +16815,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -16822,7 +16824,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -16840,7 +16842,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -16856,7 +16858,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -16871,7 +16873,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -16881,7 +16883,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -16891,7 +16893,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16911,7 +16913,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -16929,7 +16931,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L19_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16943,7 +16945,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -16952,7 +16954,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ switch (__pyx_v_t) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -16963,7 +16965,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_b; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -16974,7 +16976,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -16985,7 +16987,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -16996,7 +16998,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -17007,7 +17009,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -17018,7 +17020,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -17029,7 +17031,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -17040,7 +17042,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -17051,7 +17053,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -17062,7 +17064,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -17073,7 +17075,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -17084,7 +17086,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -17095,7 +17097,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -17106,7 +17108,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -17117,7 +17119,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -17128,7 +17130,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -17140,7 +17142,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -17166,7 +17168,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -17175,7 +17177,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -17187,7 +17189,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -17196,7 +17198,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -17205,7 +17207,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -17214,7 +17216,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -17224,7 +17226,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -17234,7 +17236,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -17266,7 +17268,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -17290,7 +17292,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -17300,7 +17302,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -17312,7 +17314,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -17322,7 +17324,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -17334,7 +17336,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s } __pyx_L4:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -17346,7 +17348,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17363,7 +17365,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -17377,7 +17379,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17396,7 +17398,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17413,7 +17415,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -17427,7 +17429,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17446,7 +17448,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17463,7 +17465,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -17477,7 +17479,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17496,7 +17498,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17513,7 +17515,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -17527,7 +17529,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17546,7 +17548,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17563,7 +17565,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -17577,7 +17579,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17596,7 +17598,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -17628,7 +17630,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 * cdef int delta_offset * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -17637,7 +17639,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -17646,7 +17648,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -17668,7 +17670,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -17681,7 +17683,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -17720,7 +17722,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -17737,7 +17739,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -17751,7 +17753,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -17771,7 +17773,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -17789,7 +17791,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_L7_bool_binop_done:; if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -17803,7 +17805,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -17819,7 +17821,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -17828,7 +17830,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 120; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -17837,7 +17839,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -17848,7 +17850,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -17858,7 +17860,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -17868,7 +17870,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -17880,7 +17882,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -17890,7 +17892,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -17904,7 +17906,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx {__pyx_filename = __pyx_f[1]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -17922,7 +17924,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -17940,7 +17942,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -17958,7 +17960,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -17976,7 +17978,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -17994,7 +17996,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -18012,7 +18014,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -18030,7 +18032,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -18048,7 +18050,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -18066,7 +18068,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -18084,7 +18086,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -18102,7 +18104,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -18120,7 +18122,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -18138,7 +18140,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -18158,7 +18160,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -18178,7 +18180,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -18198,7 +18200,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -18217,7 +18219,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -18240,7 +18242,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -18252,7 +18254,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -18264,7 +18266,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -18274,7 +18276,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -18284,7 +18286,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -18309,7 +18311,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -18324,7 +18326,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -18335,7 +18337,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -18347,7 +18349,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -18356,7 +18358,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -18367,7 +18369,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -18376,7 +18378,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -18385,7 +18387,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -18397,7 +18399,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18411,7 +18413,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -18421,7 +18423,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -18435,7 +18437,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } /*else*/ { - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -18446,7 +18448,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -30265,7 +30267,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_slice__32); __Pyx_GIVEREF(__pyx_slice__32); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -30276,7 +30278,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__33); __Pyx_GIVEREF(__pyx_tuple__33); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -30287,7 +30289,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -30298,7 +30300,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__35); __Pyx_GIVEREF(__pyx_tuple__35); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -30309,7 +30311,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -30320,7 +30322,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__37); __Pyx_GIVEREF(__pyx_tuple__37); - /* "../../../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -30836,7 +30838,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":28 + /* "pyFAI/ext/regrid_common.pxi":28 * # THE SOFTWARE. * * __doc__ = """Common cdef constants and functions for preprocessing""" # <<<<<<<<<<<<<< @@ -30845,7 +30847,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Common_cdef_constants_and_functi) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":29 + /* "pyFAI/ext/regrid_common.pxi":29 * * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< @@ -30854,7 +30856,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":30 + /* "pyFAI/ext/regrid_common.pxi":30 * __doc__ = """Common cdef constants and functions for preprocessing""" * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< @@ -30863,7 +30865,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":31 + /* "pyFAI/ext/regrid_common.pxi":31 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" # <<<<<<<<<<<<<< @@ -30872,7 +30874,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_13_05_2016) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":32 + /* "pyFAI/ext/regrid_common.pxi":32 * __contact__ = "Jerome.kieffer@esrf.fr" * __date__ = "13/05/2016" * __status__ = "stable" # <<<<<<<<<<<<<< @@ -30881,7 +30883,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "regrid_common.pxi":33 + /* "pyFAI/ext/regrid_common.pxi":33 * __date__ = "13/05/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< @@ -30890,7 +30892,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_license, __pyx_n_s_MIT) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "numpy_common.pxi":9 + /* "pyFAI/ext/numpy_common.pxi":9 * void import_umath() * * if FALSE: # <<<<<<<<<<<<<< @@ -30900,7 +30902,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) __pyx_t_2 = (0 != 0); if (__pyx_t_2) { - /* "numpy_common.pxi":10 + /* "pyFAI/ext/numpy_common.pxi":10 * * if FALSE: * import_array() # <<<<<<<<<<<<<< @@ -30908,7 +30910,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ import_array(); - /* "numpy_common.pxi":11 + /* "pyFAI/ext/numpy_common.pxi":11 * if FALSE: * import_array() * import_umath() # <<<<<<<<<<<<<< @@ -30918,7 +30920,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) } __pyx_L2:; - /* "regrid_common.pxi":38 + /* "pyFAI/ext/regrid_common.pxi":38 * import cython * cimport numpy * import numpy # <<<<<<<<<<<<<< @@ -30930,7 +30932,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "regrid_common.pxi":42 + /* "pyFAI/ext/regrid_common.pxi":42 * from libc.math cimport fabs, M_PI * cdef: * float pi = M_PI # <<<<<<<<<<<<<< @@ -30939,7 +30941,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullLUT_pi = ((float)M_PI); - /* "regrid_common.pxi":43 + /* "pyFAI/ext/regrid_common.pxi":43 * cdef: * float pi = M_PI * float piover2 = (pi * 0.5) # <<<<<<<<<<<<<< @@ -30948,7 +30950,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullLUT_piover2 = ((float)(__pyx_v_5pyFAI_3ext_17splitPixelFullLUT_pi * 0.5)); - /* "regrid_common.pxi":44 + /* "pyFAI/ext/regrid_common.pxi":44 * float pi = M_PI * float piover2 = (pi * 0.5) * float onef = 1.0 # <<<<<<<<<<<<<< @@ -30957,7 +30959,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullLUT_onef = ((float)1.0); - /* "regrid_common.pxi":45 + /* "pyFAI/ext/regrid_common.pxi":45 * float piover2 = (pi * 0.5) * float onef = 1.0 * float zerof = 1.0 # <<<<<<<<<<<<<< @@ -30966,7 +30968,7 @@ PyMODINIT_FUNC PyInit_splitPixelFullLUT(void) */ __pyx_v_5pyFAI_3ext_17splitPixelFullLUT_zerof = ((float)1.0); - /* "regrid_common.pxi":46 + /* "pyFAI/ext/regrid_common.pxi":46 * float onef = 1.0 * float zerof = 1.0 * double EPS32 = (1.0 + numpy.finfo(numpy.float32).eps) # <<<<<<<<<<<<<< diff --git a/pyFAI/ext/splitPixelFullLUT_double.c b/pyFAI/ext/splitPixelFullLUT_double.c index df29c8694..00aa4908c 100644 --- a/pyFAI/ext/splitPixelFullLUT_double.c +++ b/pyFAI/ext/splitPixelFullLUT_double.c @@ -1898,8 +1898,8 @@ static char __pyx_k_HistoLUT1dFullSplit_integrate[] = "HistoLUT1dFullSplit.integ static char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data."; static char __pyx_k_Now_uses_CSR_Compressed_Sparse[] = "\n Now uses CSR (Compressed Sparse raw) with main attributes:\n * nnz: number of non zero elements\n * data: coefficient of the matrix in a 1D vector of float64\n * indices: Column index position for the data (same size as\n * indptr: row pointer indicates the start of a given row. len nrow+1\n\n Nota: nnz = indptr[-1]\n "; static char __pyx_k_strided_and_direct_or_indirect[] = ""; -static char __pyx_k_home_kieffer_workspace_pyFAI_py[] = "/home/kieffer/workspace/pyFAI/pyFAI/ext/splitPixelFullLUT_double.pyx"; static char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; +static char __pyx_k_users_kieffer_workspace_400_pyF[] = "/users/kieffer/workspace-400/pyFAI/pyFAI/ext/splitPixelFullLUT_double.pyx"; static char __pyx_k_All_dimensions_preceding_dimensi[] = "All dimensions preceding dimension %d must be indexed and not sliced"; static char __pyx_k_Buffer_view_does_not_expose_stri[] = "Buffer view does not expose strides"; static char __pyx_k_Can_only_create_a_buffer_that_is[] = "Can only create a buffer that is contiguous in memory."; @@ -2038,7 +2038,6 @@ static PyObject *__pyx_n_s_format; static PyObject *__pyx_n_s_fortran; static PyObject *__pyx_n_u_fortran; static PyObject *__pyx_kp_s_got_differing_extents_in_dimensi; -static PyObject *__pyx_kp_s_home_kieffer_workspace_pyFAI_py; static PyObject *__pyx_n_s_i; static PyObject *__pyx_n_s_id; static PyObject *__pyx_n_s_idx; @@ -2144,6 +2143,7 @@ static PyObject *__pyx_n_s_undefined; static PyObject *__pyx_n_s_unit; static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd; static PyObject *__pyx_n_s_unpack; +static PyObject *__pyx_kp_s_users_kieffer_workspace_400_pyF; static PyObject *__pyx_n_s_weights; static PyObject *__pyx_kp_s_weights_size; static PyObject *__pyx_n_s_xrange; @@ -2335,7 +2335,7 @@ static double __pyx_f_5pyFAI_3ext_24splitPixelFullLUT_double_integrate(double __ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit___init__[] = "\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; +static char __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit___init__[] = "HistoLUT1dFullSplit.__init__(self, ndarray pos, int bins=100, pos0Range=None, pos1Range=None, mask=None, mask_checksum=None, allow_pos0_neg=False, unit='undefined', bad_pixel=False)\n\n @param pos: 3D or 4D array with the coordinates of each pixel point\n @param bins: number of output bins, 100 by default\n @param pos0Range: minimum and maximum of the 2th range\n @param pos1Range: minimum and maximum of the chi range\n @param mask: array (of int8) with masked pixels with 1 (0=not masked)\n @param allow_pos0_neg: enforce the q<0 is usually not possible\n @param unit: can be 2th_deg or r_nm^-1 ...\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -3194,7 +3194,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_3calc_lut, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_2calc_lut[] = "HistoLUT1dFullSplit.calc_lut(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_3calc_lut = {"calc_lut", (PyCFunction)__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_3calc_lut, METH_O, __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_2calc_lut}; static PyObject *__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_3calc_lut(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5701,7 +5702,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_4integrate[] = "\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n "; +static char __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_4integrate[] = "HistoLUT1dFullSplit.integrate(self, weights, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None)\n\n Actually perform the integration which in this case looks more like a matrix-vector product\n\n @param weights: input image\n @type weights: ndarray\n @param dummy: value for dead pixels (optional)\n @type dummy: float\n @param delta_dummy: precision for dead-pixel value in dynamic masking\n @type delta_dummy: float\n @param dark: array with the dark-current value to be subtracted (if any)\n @type dark: ndarray\n @param flat: array with the dark-current value to be divided by (if any)\n @type flat: ndarray\n @param solidAngle: array with the solid angle of each pixel to be divided by (if any)\n @type solidAngle: ndarray\n @param polarization: array with the polarization correction values to be divided by (if any)\n @type polarization: ndarray\n @return : positions, pattern, weighted_histogram and unweighted_histogram\n @rtype: 4-tuple of ndarrays\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_5integrate = {"integrate", (PyCFunction)__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_5integrate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_4integrate}; static PyObject *__pyx_pw_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFullSplit_5integrate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -6809,8 +6810,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul __pyx_t_2 = __pyx_v_size; if (1 == 0) abort(); { - __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; - double __pyx_parallel_temp1 = __PYX_NAN(); + double __pyx_parallel_temp0 = __PYX_NAN(); + __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -6825,7 +6826,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_17, __pyx_t_18, __pyx_t_20, __pyx_t_22, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_21) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_19, __pyx_t_17, __pyx_t_18, __pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -6835,7 +6836,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_16; __pyx_t_15++){ if (__pyx_parallel_why < 2) @@ -7026,11 +7027,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul goto __pyx_L27; __pyx_L27:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates0) + #pragma omp critical(__pyx_parallel_lastprivates4) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_data; + __pyx_parallel_temp0 = __pyx_v_data; + __pyx_parallel_temp1 = __pyx_v_i; } __pyx_L28:; #ifdef _OPENMP @@ -7060,8 +7061,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_data = __pyx_parallel_temp1; + __pyx_v_data = __pyx_parallel_temp0; + __pyx_v_i = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L11_return; case 4: @@ -7137,8 +7138,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul __pyx_t_16 = __pyx_v_size; if (1 == 0) abort(); { - __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; - double __pyx_parallel_temp1 = __PYX_NAN(); + double __pyx_parallel_temp0 = __PYX_NAN(); + __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -7153,7 +7154,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_24, __pyx_t_26, __pyx_t_27, __pyx_t_25, __pyx_t_28, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_29, __pyx_t_24, __pyx_t_26, __pyx_t_27, __pyx_t_12, __pyx_t_25, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7163,7 +7164,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_2; __pyx_t_15++){ if (__pyx_parallel_why < 2) @@ -7309,11 +7310,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul goto __pyx_L40; __pyx_L40:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates1) + #pragma omp critical(__pyx_parallel_lastprivates5) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_data; + __pyx_parallel_temp0 = __pyx_v_data; + __pyx_parallel_temp1 = __pyx_v_i; } __pyx_L41:; #ifdef _OPENMP @@ -7343,8 +7344,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_data = __pyx_parallel_temp1; + __pyx_v_data = __pyx_parallel_temp0; + __pyx_v_i = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L29_return; case 4: @@ -7540,11 +7541,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_31, __pyx_t_12, __pyx_t_32, __pyx_t_30, __pyx_t_13) + #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_30, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_16; __pyx_t_15++){ { @@ -7738,21 +7739,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_40, __pyx_t_41, __pyx_t_12, __pyx_t_37, __pyx_t_35, __pyx_t_13, __pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_36, __pyx_t_33) + #pragma omp parallel private(__pyx_t_40, __pyx_t_41, __pyx_t_33, __pyx_t_12, __pyx_t_37, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_36, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) schedule(guided) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_2; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ __pyx_v_data = ((double)__PYX_NAN()); - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_coef = ((double)__PYX_NAN()); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_sum_data = ((double)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_sum_count = ((double)__PYX_NAN()); /* "pyFAI/ext/splitPixelFullLUT_double.pyx":521 @@ -21475,7 +21476,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1}, {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1}, {&__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 0, 1, 0}, - {&__pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_k_home_kieffer_workspace_pyFAI_py, sizeof(__pyx_k_home_kieffer_workspace_pyFAI_py), 0, 0, 1, 0}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1}, @@ -21581,6 +21581,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_unit, __pyx_k_unit, sizeof(__pyx_k_unit), 0, 0, 1, 1}, {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0}, {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1}, + {&__pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_k_users_kieffer_workspace_400_pyF, sizeof(__pyx_k_users_kieffer_workspace_400_pyF), 0, 0, 1, 0}, {&__pyx_n_s_weights, __pyx_k_weights, sizeof(__pyx_k_weights), 0, 0, 1, 1}, {&__pyx_kp_s_weights_size, __pyx_k_weights_size, sizeof(__pyx_k_weights_size), 0, 0, 1, 0}, {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1}, @@ -21906,7 +21907,7 @@ static int __Pyx_InitCachedConstants(void) { __pyx_tuple__34 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_pos, __pyx_n_s_bins, __pyx_n_s_pos0Range, __pyx_n_s_pos1Range, __pyx_n_s_mask, __pyx_n_s_mask_checksum, __pyx_n_s_allow_pos0_neg, __pyx_n_s_unit, __pyx_n_s_bad_pixel, __pyx_n_s_i); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); - __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(10, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_init, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(10, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/splitPixelFullLUT_double.pyx":153 * @cython.boundscheck(False) @@ -21918,7 +21919,7 @@ static int __Pyx_InitCachedConstants(void) { __pyx_tuple__36 = PyTuple_Pack(53, __pyx_n_s_self, __pyx_n_s_cpos, __pyx_n_s_cmask, __pyx_n_s_outMax, __pyx_n_s_indptr, __pyx_n_s_pos0_min, __pyx_n_s_pos0_max, __pyx_n_s_pos0_maxin, __pyx_n_s_pos1_min, __pyx_n_s_pos1_max, __pyx_n_s_pos1_maxin, __pyx_n_s_max0, __pyx_n_s_min0, __pyx_n_s_areaPixel, __pyx_n_s_delta, __pyx_n_s_areaPixel2, __pyx_n_s_A0, __pyx_n_s_B0, __pyx_n_s_C0, __pyx_n_s_D0, __pyx_n_s_A1, __pyx_n_s_B1, __pyx_n_s_C1, __pyx_n_s_D1, __pyx_n_s_A_lim, __pyx_n_s_B_lim, __pyx_n_s_C_lim, __pyx_n_s_D_lim, __pyx_n_s_oneOverArea, __pyx_n_s_partialArea, __pyx_n_s_tmp, __pyx_n_s_AB, __pyx_n_s_BC, __pyx_n_s_CD, __pyx_n_s_DA, __pyx_n_s_bins, __pyx_n_s_i, __pyx_n_s_idx, __pyx_n_s_bin, __pyx_n_s_bin0_max, __pyx_n_s_bin0_min, __pyx_n_s_pixel_bins, __pyx_n_s_k, __pyx_n_s_size, __pyx_n_s_check_pos1, __pyx_n_s_check_mask, __pyx_n_s_range1, __pyx_n_s_range2, __pyx_n_s_indices, __pyx_n_s_data, __pyx_n_s_areas, __pyx_n_s_oneOverPixelArea, __pyx_n_s_partialArea2); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); - __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 53, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_calc_lut, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 53, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_calc_lut, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/splitPixelFullLUT_double.pyx":417 * @cython.boundscheck(False) @@ -21930,7 +21931,7 @@ static int __Pyx_InitCachedConstants(void) { __pyx_tuple__38 = PyTuple_Pack(37, __pyx_n_s_self, __pyx_n_s_weights, __pyx_n_s_dummy, __pyx_n_s_delta_dummy, __pyx_n_s_dark, __pyx_n_s_flat, __pyx_n_s_solidAngle, __pyx_n_s_polarization, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_idx, __pyx_n_s_bins, __pyx_n_s_size, __pyx_n_s_sum_data, __pyx_n_s_sum_count, __pyx_n_s_epsilon, __pyx_n_s_data, __pyx_n_s_coef, __pyx_n_s_cdummy, __pyx_n_s_cddummy, __pyx_n_s_do_dummy, __pyx_n_s_do_dark, __pyx_n_s_do_flat, __pyx_n_s_do_polarization, __pyx_n_s_do_solidAngle, __pyx_n_s_outData, __pyx_n_s_outCount, __pyx_n_s_outMerge, __pyx_n_s_ccoef, __pyx_n_s_cdata, __pyx_n_s_tdata, __pyx_n_s_cflat, __pyx_n_s_cdark, __pyx_n_s_csolidAngle, __pyx_n_s_cpolarization, __pyx_n_s_indices, __pyx_n_s_indptr); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); - __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(8, 0, 37, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_integrate, 417, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(8, 0, 37, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_integrate, 417, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_tuple__40 = PyTuple_Pack(6, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40); diff --git a/pyFAI/ext/watershed.c b/pyFAI/ext/watershed.c index 8fd3cb31e..72db0941a 100644 --- a/pyFAI/ext/watershed.c +++ b/pyFAI/ext/watershed.c @@ -1,29 +1,25 @@ -/* Generated by Cython 0.23.4 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h", - "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ufuncobject.h" - ], - "include_dirs": [ - "pyFAI/ext/include", - "pyFAI/ext", - "/usr/lib/python2.7/dist-packages/numpy/core/include" - ] - } -} -END: Cython Metadata */ +/* Generated by Cython 0.21.1 */ #define PY_SSIZE_T_CLEAN +#ifndef CYTHON_USE_PYLONG_INTERNALS +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 0 +#else +#include "pyconfig.h" +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 1 +#else +#define CYTHON_USE_PYLONG_INTERNALS 0 +#endif +#endif +#endif #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else -#define CYTHON_ABI "0_23_4" +#define CYTHON_ABI "0_21_1" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) @@ -58,40 +54,33 @@ END: Cython Metadata */ #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #endif -#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000 -#define CYTHON_USE_PYLONG_INTERNALS 1 -#endif -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif -#ifndef Py_TPFLAGS_CHECKTYPES +#if PY_MAJOR_VERSION >= 3 #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE +#if PY_VERSION_HEX < 0x030400a1 && !defined(Py_TPFLAGS_HAVE_FINALIZE) #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) @@ -110,13 +99,12 @@ END: Cython Metadata */ #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) + #define __Pyx_PyFrozenSet_Size(s) PyObject_Size(s) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ? \ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #define __Pyx_PyFrozenSet_Size(s) PySet_Size(s) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) @@ -181,32 +169,6 @@ END: Cython Metadata */ #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif -#if PY_VERSION_HEX >= 0x030500B1 -#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods -#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) -#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; -} __Pyx_PyAsyncMethodsStruct; -#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) -#else -#define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) - #ifndef CYTHON_INLINE #if defined(__GNUC__) #define CYTHON_INLINE __inline__ @@ -218,20 +180,35 @@ typedef struct { #define CYTHON_INLINE #endif #endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif #endif -#include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { + /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and + a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is + a quiet NaN. */ float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif +#ifdef __cplusplus +template +void __Pyx_call_destructor(T* x) { + x->~T(); +} +#endif #if PY_MAJOR_VERSION >= 3 @@ -250,6 +227,10 @@ static CYTHON_INLINE float __PYX_NAN() { #endif #endif +#if defined(WIN32) || defined(MS_WINDOWS) +#define _USE_MATH_DEFINES +#endif +#include #define __PYX_HAVE__pyFAI__ext__watershed #define __PYX_HAVE_API__pyFAI__ext__watershed #include "string.h" @@ -281,13 +262,6 @@ static CYTHON_INLINE float __PYX_NAN() { # define CYTHON_UNUSED # endif #endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; @@ -296,34 +270,16 @@ typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) ( \ + (sizeof(type) < sizeof(Py_ssize_t)) || \ + (sizeof(type) > sizeof(Py_ssize_t) && \ + likely(v < (type)PY_SSIZE_T_MAX || \ + v == (type)PY_SSIZE_T_MAX) && \ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN || \ + v == (type)PY_SSIZE_T_MIN))) || \ + (sizeof(type) == sizeof(Py_ssize_t) && \ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX || \ v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) && defined (_M_X64) - #define __Pyx_sst_abs(value) _abs64(value) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) @@ -340,11 +296,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyObject_FromUString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromUString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromUString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { @@ -358,9 +314,8 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) +#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) +#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); @@ -381,7 +336,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) { const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); @@ -544,22 +499,21 @@ typedef struct { #define CYTHON_ATOMICS 1 #endif #define __pyx_atomic_int_type int -#if CYTHON_ATOMICS && __GNUC__ >= 4 && (__GNUC_MINOR__ > 1 ||\ - (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL >= 2)) &&\ +#if CYTHON_ATOMICS && __GNUC__ >= 4 && (__GNUC_MINOR__ > 1 || \ + (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL >= 2)) && \ !defined(__i386__) #define __pyx_atomic_incr_aligned(value, lock) __sync_fetch_and_add(value, 1) #define __pyx_atomic_decr_aligned(value, lock) __sync_fetch_and_sub(value, 1) #ifdef __PYX_DEBUG_ATOMICS #warning "Using GNU atomics" #endif -#elif CYTHON_ATOMICS && defined(_MSC_VER) && 0 +#elif CYTHON_ATOMICS && MSC_VER #include - #undef __pyx_atomic_int_type #define __pyx_atomic_int_type LONG #define __pyx_atomic_incr_aligned(value, lock) InterlockedIncrement(value) #define __pyx_atomic_decr_aligned(value, lock) InterlockedDecrement(value) #ifdef __PYX_DEBUG_ATOMICS - #pragma message ("Using MSVC atomics") + #warning "Using MSVC atomics" #endif #elif CYTHON_ATOMICS && (defined(__ICC) || defined(__INTEL_COMPILER)) && 0 #define __pyx_atomic_incr_aligned(value, lock) _InterlockedIncrement(value) @@ -576,19 +530,19 @@ typedef struct { #endif typedef volatile __pyx_atomic_int_type __pyx_atomic_int; #if CYTHON_ATOMICS - #define __pyx_add_acquisition_count(memview)\ + #define __pyx_add_acquisition_count(memview) \ __pyx_atomic_incr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock) - #define __pyx_sub_acquisition_count(memview)\ + #define __pyx_sub_acquisition_count(memview) \ __pyx_atomic_decr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock) #else - #define __pyx_add_acquisition_count(memview)\ + #define __pyx_add_acquisition_count(memview) \ __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) - #define __pyx_sub_acquisition_count(memview)\ + #define __pyx_sub_acquisition_count(memview) \ __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) #endif -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":723 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -597,7 +551,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":724 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -606,7 +560,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":727 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":725 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -615,7 +569,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":728 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":726 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -624,7 +578,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":730 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -633,7 +587,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":731 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -642,7 +596,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":734 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":732 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -651,7 +605,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":735 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":733 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -660,7 +614,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":739 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":737 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -669,7 +623,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":740 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":738 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -678,7 +632,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":747 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -687,7 +641,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":750 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":748 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -696,7 +650,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":749 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -705,7 +659,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -714,7 +668,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":754 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":752 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -723,7 +677,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -732,7 +686,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":757 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -741,7 +695,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":756 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -750,7 +704,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":758 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -759,7 +713,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":761 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":759 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -768,7 +722,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -805,7 +759,7 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -814,7 +768,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":765 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":763 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -823,7 +777,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -832,7 +786,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -880,7 +834,7 @@ struct __pyx_obj_5pyFAI_3ext_9watershed_Region { }; -/* "View.MemoryView":101 +/* "View.MemoryView":99 * * @cname("__pyx_array") * cdef class array: # <<<<<<<<<<<<<< @@ -904,7 +858,7 @@ struct __pyx_array_obj { }; -/* "View.MemoryView":271 +/* "View.MemoryView":269 * * @cname('__pyx_MemviewEnum') * cdef class Enum(object): # <<<<<<<<<<<<<< @@ -917,7 +871,7 @@ struct __pyx_MemviewEnum_obj { }; -/* "View.MemoryView":304 +/* "View.MemoryView":302 * * @cname('__pyx_memoryview') * cdef class memoryview(object): # <<<<<<<<<<<<<< @@ -940,7 +894,7 @@ struct __pyx_memoryview_obj { }; -/* "View.MemoryView":923 +/* "View.MemoryView":922 * * @cname('__pyx_memoryviewslice') * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< @@ -972,7 +926,7 @@ struct __pyx_vtabstruct_5pyFAI_3ext_9watershed_Bilinear { static struct __pyx_vtabstruct_5pyFAI_3ext_9watershed_Bilinear *__pyx_vtabptr_5pyFAI_3ext_9watershed_Bilinear; -/* "View.MemoryView":304 +/* "View.MemoryView":302 * * @cname('__pyx_memoryview') * cdef class memoryview(object): # <<<<<<<<<<<<<< @@ -992,7 +946,7 @@ struct __pyx_vtabstruct_memoryview { static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview; -/* "View.MemoryView":923 +/* "View.MemoryView":922 * * @cname('__pyx_memoryviewslice') * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< @@ -1004,8 +958,6 @@ struct __pyx_vtabstruct__memoryviewslice { struct __pyx_vtabstruct_memoryview __pyx_base; }; static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; - -/* --- Runtime support code (head) --- */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif @@ -1022,19 +974,19 @@ static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + #define __Pyx_RefNannySetupContext(name, acquire_gil) \ + if (acquire_gil) { \ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ + PyGILState_Release(__pyx_gilstate_save); \ + } else { \ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \ } #else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + #define __Pyx_RefNannySetupContext(name, acquire_gil) \ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif - #define __Pyx_RefNannyFinishContext()\ + #define __Pyx_RefNannyFinishContext() \ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) @@ -1057,13 +1009,13 @@ static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ +#define __Pyx_XDECREF_SET(r, v) do { \ + PyObject *tmp = (PyObject *) r; \ + r = v; __Pyx_XDECREF(tmp); \ } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ +#define __Pyx_DECREF_SET(r, v) do { \ + PyObject *tmp = (PyObject *) r; \ + r = v; __Pyx_DECREF(tmp); \ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) @@ -1087,34 +1039,27 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name); static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \ const char* function_name); static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); -#else -#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ - PyObject_RichCompare(op1, op2, Py_EQ) - #endif - -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) : \ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) : \ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); @@ -1176,12 +1121,12 @@ static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyOb static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, - int full_traceback, int nogil); + int full_traceback); static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); -static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { +static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) { int result = PySequence_Contains(seq, item); return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } @@ -1227,8 +1172,6 @@ static CYTHON_INLINE int __Pyx_IterFinish(void); static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000 static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) { PyObject *res; @@ -1263,7 +1206,7 @@ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); -#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +#if PY_MAJOR_VERSION >= 3 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { PyObject *value; value = PyDict_GetItemWithError(d, key); @@ -1283,36 +1226,21 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) #endif -static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d); +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CallUnboundCMethod0(cfunc, self)\ - ((likely((cfunc)->func)) ?\ - (likely((cfunc)->flag == METH_NOARGS) ? (*((cfunc)->func))(self, NULL) :\ - (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ? ((*(PyCFunctionWithKeywords)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\ - ((cfunc)->flag == METH_VARARGS ? (*((cfunc)->func))(self, __pyx_empty_tuple) : __Pyx__CallUnboundCMethod0(cfunc, self)))) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)) -#else -#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) -#endif +static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d); static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d); -static CYTHON_INLINE int __Pyx_div_int(int, int); +static CYTHON_INLINE int __Pyx_div_int(int, int); /* proto */ + +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif -#define UNARY_NEG_WOULD_OVERFLOW(x)\ - (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) +#define UNARY_NEG_WOULD_OVERFLOW(x) (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) -static CYTHON_INLINE int __Pyx_mod_int(int, int); +static CYTHON_INLINE int __Pyx_mod_int(int, int); /* proto */ static void __Pyx_RaiseBufferIndexError(int axis); @@ -1324,10 +1252,10 @@ static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(PyObject* src, Py_ssize_t #define __Pyx_PyTuple_GetSlice(seq, start, stop) PySequence_GetSlice(seq, start, stop) #endif -#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ +#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \ + __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) : \ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) : \ __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, @@ -1365,7 +1293,7 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals #endif -static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t); +static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t); /* proto */ static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ static PyObject *get_memview(PyObject *__pyx_v_self); /*proto*/ @@ -1388,13 +1316,6 @@ static PyObject *__pyx_memoryview_get_ndim(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_memoryview_get_itemsize(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_memoryview_get_nbytes(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_memoryview_get_size(PyObject *__pyx_v_self); /*proto*/ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); -#else -#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ - (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) -#endif - static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { #if CYTHON_COMPILING_IN_CPYTHON PyObject* none = _PyList_Extend((PyListObject*)L, v); @@ -1407,11 +1328,7 @@ static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { #endif } -#ifndef __PYX_FORCE_INIT_THREADS - #define __PYX_FORCE_INIT_THREADS 0 -#endif - -static CYTHON_INLINE long __Pyx_div_long(long, long); +static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */ static PyObject *__pyx_memoryviewslice__get__base(PyObject *__pyx_v_self); /*proto*/ static int __Pyx_SetVtable(PyObject *dict, void *vtable); @@ -1427,13 +1344,13 @@ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 #define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ +#define __Pyx_CyFunction_GetClosure(f) \ (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ +#define __Pyx_CyFunction_GetClassObj(f) \ (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ +#define __Pyx_CyFunction_Defaults(type, f) \ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ +#define __Pyx_CyFunction_SetDefaultsGetter(f, g) \ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) typedef struct { PyCFunctionObject func; @@ -1457,7 +1374,7 @@ typedef struct { PyObject *func_annotations; } __pyx_CyFunctionObject; static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ +#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code) \ __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, int flags, PyObject* qualname, @@ -1473,7 +1390,7 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, PyObject *dict); static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, PyObject *dict); -static int __pyx_CyFunction_init(void); +static int __Pyx_CyFunction_init(void); static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc); @@ -1497,6 +1414,8 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + typedef struct { Py_ssize_t shape, strides, suboffsets; } __Pyx_Buf_DimInfo; @@ -1522,6 +1441,8 @@ typedef struct { static Py_ssize_t __Pyx_zeros[] = {0, 0, 0, 0, 0, 0, 0, 0}; static Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1, -1, -1, -1, -1}; +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); @@ -1538,12 +1459,10 @@ static int __Pyx_ValidateAndInit_memviewslice( __Pyx_memviewslice *memviewslice, PyObject *original_obj); -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *); static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - static PyObject *__pyx_memview_get_float(const char *itemp); static int __pyx_memview_set_float(const char *itemp, PyObject *obj); @@ -1668,8 +1587,6 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do #endif #endif -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value); - static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice *mvs, char order, int ndim); @@ -1695,8 +1612,14 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_n static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint8_t(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(PyObject *); + +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(PyObject *); + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *); + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(PyObject *); static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_int(PyObject *); @@ -1737,21 +1660,19 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo /* Module declarations from 'cpython.buffer' */ +/* Module declarations from 'cpython.ref' */ + /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ +/* Module declarations from 'cpython.object' */ + /* Module declarations from '__builtin__' */ /* Module declarations from 'cpython.type' */ static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; -/* Module declarations from 'cpython' */ - -/* Module declarations from 'cpython.object' */ - -/* Module declarations from 'cpython.ref' */ - /* Module declarations from 'libc.stdlib' */ /* Module declarations from 'numpy' */ @@ -1829,8 +1750,94 @@ static PyObject *__pyx_builtin_MemoryError; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_Ellipsis; static PyObject *__pyx_builtin_TypeError; +static PyObject *__pyx_builtin_xrange; static PyObject *__pyx_builtin_id; static PyObject *__pyx_builtin_IndexError; +static int __pyx_pf_5pyFAI_3ext_9watershed_8Bilinear___cinit__(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self, PyObject *__pyx_v_data); /* proto */ +static void __pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_2__dealloc__(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self, PyObject *__pyx_v_x); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_8cp_local_maxi(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self, size_t __pyx_v_x); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4data___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4maxi___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4mini___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_5width___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6height___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *__pyx_v_self); /* proto */ +static int __pyx_pf_5pyFAI_3ext_9watershed_6Region___cinit__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self, int __pyx_v_idx); /* proto */ +static void __pyx_pf_5pyFAI_3ext_9watershed_6Region_2__dealloc__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_4__repr__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self, __Pyx_memviewslice __pyx_v_flat); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_8get_size(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_10get_highest_pass(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_12get_maxi(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_14get_mini(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_16get_pass_to(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_18get_index(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_20get_borders(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_22get_neighbors(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self, struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_5index___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_4size___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_7pass_to___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_4mini___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_4maxi___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_12highest_pass___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_9neighbors___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6border___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_5peaks___get__(struct __pyx_obj_5pyFAI_3ext_9watershed_Region *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_thres); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_2__dealloc__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_fname); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_labels(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regions(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_singleton(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twins(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_intense(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_thres); /* proto */ +static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from_area(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_mask, PyObject *__pyx_v_Imin, PyObject *__pyx_v_keep, int __pyx_v_refine, float __pyx_v_dmin, CYTHON_UNUSED PyObject *__pyx_v_kwarg); /* proto */ +static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ +static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */ +static int __pyx_array_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */ +static int __pyx_array_getbuffer_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ +static void __pyx_array_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self); /* proto */ +static PyObject *get_memview_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_array_MemoryView_5array_6__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr); /* proto */ +static PyObject *__pyx_array_MemoryView_5array_8__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ +static int __pyx_array_MemoryView_5array_10__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */ +static int __pyx_MemviewEnum_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ +static PyObject *__pyx_MemviewEnum_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */ +static int __pyx_memoryview_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object); /* proto */ +static void __pyx_memoryview_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto */ +static int __pyx_memoryview_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */ +static int __pyx_memoryview_getbuffer_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ +static PyObject *__pyx_memoryview_transpose_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview__get__base_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_get_shape_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_get_strides_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_get_suboffsets_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_get_ndim_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_get_itemsize_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_get_nbytes_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_get_size_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static Py_ssize_t __pyx_memoryview_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static void __pyx_memoryviewslice_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryviewslice__get__base_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_tp_new_5pyFAI_3ext_9watershed_Bilinear(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_5pyFAI_3ext_9watershed_Region(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static char __pyx_k_B[] = "B"; static char __pyx_k_H[] = "H"; static char __pyx_k_I[] = "I"; @@ -1913,7 +1920,6 @@ static char __pyx_k_size[] = "size"; static char __pyx_k_step[] = "step"; static char __pyx_k_stop[] = "stop"; static char __pyx_k_test[] = "__test__"; -static char __pyx_k_ASCII[] = "ASCII"; static char __pyx_k_class[] = "__class__"; static char __pyx_k_debug[] = "debug"; static char __pyx_k_dmin2[] = "dmin2"; @@ -1945,7 +1951,6 @@ static char __pyx_k_zeros[] = "zeros"; static char __pyx_k_astype[] = "astype"; static char __pyx_k_author[] = "__author__"; static char __pyx_k_border[] = "border"; -static char __pyx_k_encode[] = "encode"; static char __pyx_k_format[] = "format"; static char __pyx_k_height[] = "height"; static char __pyx_k_import[] = "__import__"; @@ -1965,6 +1970,7 @@ static char __pyx_k_struct[] = "struct"; static char __pyx_k_timeit[] = "timeit"; static char __pyx_k_unpack[] = "unpack"; static char __pyx_k_values[] = "values"; +static char __pyx_k_xrange[] = "xrange"; static char __pyx_k_VERSION[] = "VERSION"; static char __pyx_k_argsort[] = "argsort"; static char __pyx_k_borders[] = "borders"; @@ -1998,7 +2004,7 @@ static char __pyx_k_init_pass[] = "init_pass"; static char __pyx_k_mask_flat[] = "mask_flat"; static char __pyx_k_metaclass[] = "__metaclass__"; static char __pyx_k_neighbors[] = "neighbors"; -static char __pyx_k_27_10_2016[] = "27/10/2016"; +static char __pyx_k_01_12_2016[] = "01/12/2016"; static char __pyx_k_IndexError[] = "IndexError"; static char __pyx_k_ValueError[] = "ValueError"; static char __pyx_k_decorators[] = "decorators"; @@ -2069,9 +2075,9 @@ static char __pyx_k_strided_and_direct_or_indirect[] = "mini + __pyx_v_d0); - - /* "pyFAI/ext/bilinear.pxi":73 - * j0 = < int > y0 - * j1 = < int > y1 - * if d0 < 0: # <<<<<<<<<<<<<< - * res = self.mini + d0 - * elif d1 < 0: - */ goto __pyx_L6; } @@ -3037,14 +2944,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_ob * res = self.mini - d0 + self.height - 1 */ __pyx_v_res = (__pyx_v_self->mini + __pyx_v_d1); - - /* "pyFAI/ext/bilinear.pxi":75 - * if d0 < 0: - * res = self.mini + d0 - * elif d1 < 0: # <<<<<<<<<<<<<< - * res = self.mini + d1 - * elif d0 > (self.height - 1): - */ goto __pyx_L6; } @@ -3066,14 +2965,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_ob * res = self.mini - d1 + self.width - 1 */ __pyx_v_res = (((__pyx_v_self->mini - __pyx_v_d0) + __pyx_v_self->height) - 1.0); - - /* "pyFAI/ext/bilinear.pxi":77 - * elif d1 < 0: - * res = self.mini + d1 - * elif d0 > (self.height - 1): # <<<<<<<<<<<<<< - * res = self.mini - d0 + self.height - 1 - * elif d1 > self.width - 1: - */ goto __pyx_L6; } @@ -3095,14 +2986,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_ob * res = self.data[i0, j0] */ __pyx_v_res = (((__pyx_v_self->mini - __pyx_v_d1) + __pyx_v_self->width) - 1.0); - - /* "pyFAI/ext/bilinear.pxi":79 - * elif d0 > (self.height - 1): - * res = self.mini - d0 + self.height - 1 - * elif d1 > self.width - 1: # <<<<<<<<<<<<<< - * res = self.mini - d1 + self.width - 1 - * elif (i0 == i1) and (j0 == j1): - */ goto __pyx_L6; } @@ -3135,14 +3018,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_ob __pyx_t_5 = __pyx_v_i0; __pyx_t_6 = __pyx_v_j0; __pyx_v_res = (*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_5 * __pyx_v_self->data.strides[0]) )) + __pyx_t_6)) ))); - - /* "pyFAI/ext/bilinear.pxi":81 - * elif d1 > self.width - 1: - * res = self.mini - d1 + self.width - 1 - * elif (i0 == i1) and (j0 == j1): # <<<<<<<<<<<<<< - * res = self.data[i0, j0] - * elif i0 == i1: - */ goto __pyx_L6; } @@ -3170,14 +3045,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_ob __pyx_t_9 = __pyx_v_i0; __pyx_t_10 = __pyx_v_j1; __pyx_v_res = (((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_7 * __pyx_v_self->data.strides[0]) )) + __pyx_t_8)) ))) * (__pyx_v_y1 - __pyx_v_d1)) + ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_9 * __pyx_v_self->data.strides[0]) )) + __pyx_t_10)) ))) * (__pyx_v_d1 - __pyx_v_y0))); - - /* "pyFAI/ext/bilinear.pxi":83 - * elif (i0 == i1) and (j0 == j1): - * res = self.data[i0, j0] - * elif i0 == i1: # <<<<<<<<<<<<<< - * res = (self.data[i0, j0] * (y1 - d1)) + (self.data[i0, j1] * (d1 - y0)) - * elif j0 == j1: - */ goto __pyx_L6; } @@ -3205,24 +3072,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_ob __pyx_t_13 = __pyx_v_i1; __pyx_t_14 = __pyx_v_j0; __pyx_v_res = (((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_11 * __pyx_v_self->data.strides[0]) )) + __pyx_t_12)) ))) * (__pyx_v_x1 - __pyx_v_d0)) + ((*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_self->data.data + __pyx_t_13 * __pyx_v_self->data.strides[0]) )) + __pyx_t_14)) ))) * (__pyx_v_d0 - __pyx_v_x0))); - - /* "pyFAI/ext/bilinear.pxi":85 - * elif i0 == i1: - * res = (self.data[i0, j0] * (y1 - d1)) + (self.data[i0, j1] * (d1 - y0)) - * elif j0 == j1: # <<<<<<<<<<<<<< - * res = (self.data[i0, j0] * (x1 - d0)) + (self.data[i1, j0] * (d0 - x0)) - * else: - */ goto __pyx_L6; } - - /* "pyFAI/ext/bilinear.pxi":91 - * + (self.data[i1, j0] * (d0 - x0) * (y1 - d1)) \ - * + (self.data[i0, j1] * (x1 - d0) * (d1 - y0)) \ - * + (self.data[i1, j1] * (d0 - x0) * (d1 - y0)) # <<<<<<<<<<<<<< - * return - res - * - */ /*else*/ { /* "pyFAI/ext/bilinear.pxi":88 @@ -3340,7 +3191,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_4f_cy(struct __pyx_ob /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_7local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi[] = "\n Return the local maximum ... with sub-pixel refinement\n\n @param x: 2-tuple of integers\n @param w: half with of the window: 1 or 2 are advised\n @return: 2-tuple of float with the nearest local maximum\n\n\n Sub-pixel refinement:\n Second order Taylor expansion of the function; first derivative is null\n delta = x-i = -Inverse[Hessian].gradient\n\n if Hessian is singular or |delta|>1: use a center of mass.\n\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi[] = "Bilinear.local_maxi(self, x)\n\n Return the local maximum ... with sub-pixel refinement\n\n @param x: 2-tuple of integers\n @param w: half with of the window: 1 or 2 are advised\n @return: 2-tuple of float with the nearest local maximum\n\n\n Sub-pixel refinement:\n Second order Taylor expansion of the function; first derivative is null\n delta = x-i = -Inverse[Hessian].gradient\n\n if Hessian is singular or |delta|>1: use a center of mass.\n\n "; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_7local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_v_x) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -3385,30 +3236,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __ size_t __pyx_t_4; int __pyx_t_5; int __pyx_t_6; - Py_ssize_t __pyx_t_7; - Py_ssize_t __pyx_t_8; - Py_ssize_t __pyx_t_9; - Py_ssize_t __pyx_t_10; - Py_ssize_t __pyx_t_11; - Py_ssize_t __pyx_t_12; - Py_ssize_t __pyx_t_13; - Py_ssize_t __pyx_t_14; - Py_ssize_t __pyx_t_15; - Py_ssize_t __pyx_t_16; - Py_ssize_t __pyx_t_17; - Py_ssize_t __pyx_t_18; - Py_ssize_t __pyx_t_19; - Py_ssize_t __pyx_t_20; - Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - Py_ssize_t __pyx_t_23; - Py_ssize_t __pyx_t_24; + long __pyx_t_7; + long __pyx_t_8; + long __pyx_t_9; + int __pyx_t_10; + long __pyx_t_11; + long __pyx_t_12; + int __pyx_t_13; + long __pyx_t_14; + int __pyx_t_15; + int __pyx_t_16; + int __pyx_t_17; + long __pyx_t_18; + long __pyx_t_19; + long __pyx_t_20; + long __pyx_t_21; + int __pyx_t_22; + long __pyx_t_23; + long __pyx_t_24; long __pyx_t_25; int __pyx_t_26; long __pyx_t_27; int __pyx_t_28; - Py_ssize_t __pyx_t_29; - Py_ssize_t __pyx_t_30; + int __pyx_t_29; + int __pyx_t_30; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -3436,8 +3287,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __ __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_round, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); @@ -3452,8 +3303,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __ __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_round, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -3684,25 +3535,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __ __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "pyFAI/ext/bilinear.pxi":139 - * d01 = (a00 - a02 - a20 + a22) / 4.0 - * denom = 2.0 * (d00 * d11 - d01 * d01) - * if abs(denom) < 1e-10: # <<<<<<<<<<<<<< - * logger.debug("Singular determinant, Hessian undefined") - * else: - */ goto __pyx_L8; } + /*else*/ { - /* "pyFAI/ext/bilinear.pxi":142 + /* "pyFAI/ext/bilinear.pxi":142 * logger.debug("Singular determinant, Hessian undefined") * else: * delta0 = ((a12 - a10) * d01 + (a01 - a21) * d11) / denom # <<<<<<<<<<<<<< * delta1 = ((a10 - a12) * d00 + (a21 - a01) * d01) / denom * if abs(delta0) <= 1.0 and abs(delta1) <= 1.0: */ - /*else*/ { __pyx_v_delta0 = ((((__pyx_v_a12 - __pyx_v_a10) * __pyx_v_d01) + ((__pyx_v_a01 - __pyx_v_a21) * __pyx_v_d11)) / __pyx_v_denom); /* "pyFAI/ext/bilinear.pxi":143 @@ -3746,33 +3589,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __ __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - - /* "pyFAI/ext/bilinear.pxi":144 - * delta0 = ((a12 - a10) * d01 + (a01 - a21) * d11) / denom - * delta1 = ((a10 - a12) * d00 + (a21 - a01) * d01) / denom - * if abs(delta0) <= 1.0 and abs(delta1) <= 1.0: # <<<<<<<<<<<<<< - * # Result is OK if lower than 0.5. - * return (delta0 + float(current0), delta1 + float(current1)) - */ } + /*else*/ { - /* "pyFAI/ext/bilinear.pxi":148 + /* "pyFAI/ext/bilinear.pxi":148 * return (delta0 + float(current0), delta1 + float(current1)) * else: * logger.debug("Failed to find root using second order expansion") # <<<<<<<<<<<<<< * # refinement of the position by a simple center of mass of the last valid region used * for i0 in range(current0 - 1, current0 + 2): */ - /*else*/ { __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -3873,33 +3708,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __ __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - - /* "pyFAI/ext/bilinear.pxi":156 - * sum1 += tmp * i1 - * sum += tmp - * if sum > 0: # <<<<<<<<<<<<<< - * return (sum0 / sum, sum1 / sum) - * - */ } - - /* "pyFAI/ext/bilinear.pxi":124 - * current0 = res // self.width - * current1 = res % self.width - * if (current0 > 0) and (current0 < self.height - 1) and (current1 > 0) and (current1 < self.width - 1): # <<<<<<<<<<<<<< - * # Use second order polynomial Taylor expansion - * a00 = self.data[current0 - 1, current1 - 1] - */ + goto __pyx_L3; } + __pyx_L3:; /* "pyFAI/ext/bilinear.pxi":159 * return (sum0 / sum, sum1 / sum) @@ -3915,10 +3736,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi(struct __ __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_3; @@ -3996,9 +3817,9 @@ static size_t __pyx_f_5pyFAI_3ext_9watershed_8Bilinear_cp_local_maxi(struct __py } else { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -4040,7 +3861,7 @@ static size_t __pyx_f_5pyFAI_3ext_9watershed_8Bilinear_cp_local_maxi(struct __py __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - __Pyx_WriteUnraisable("pyFAI.ext.watershed.Bilinear.cp_local_maxi", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); + __Pyx_WriteUnraisable("pyFAI.ext.watershed.Bilinear.cp_local_maxi", __pyx_clineno, __pyx_lineno, __pyx_filename, 0); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -4049,6 +3870,7 @@ static size_t __pyx_f_5pyFAI_3ext_9watershed_8Bilinear_cp_local_maxi(struct __py /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_9cp_local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_8Bilinear_8cp_local_maxi[] = "Bilinear.cp_local_maxi(self, size_t x) -> size_t"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_9cp_local_maxi(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) { size_t __pyx_v_x; int __pyx_lineno = 0; @@ -4122,8 +3944,8 @@ static size_t __pyx_f_5pyFAI_3ext_9watershed_8Bilinear_c_local_maxi(struct __pyx float __pyx_v_value; float __pyx_v_old_value; size_t __pyx_r; - Py_ssize_t __pyx_t_1; - Py_ssize_t __pyx_t_2; + int __pyx_t_1; + int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; @@ -4134,8 +3956,8 @@ static size_t __pyx_f_5pyFAI_3ext_9watershed_8Bilinear_c_local_maxi(struct __pyx size_t __pyx_t_10; int __pyx_t_11; int __pyx_t_12; - Py_ssize_t __pyx_t_13; - Py_ssize_t __pyx_t_14; + int __pyx_t_13; + int __pyx_t_14; int __pyx_t_15; int __pyx_t_16; int __pyx_lineno = 0; @@ -4341,15 +4163,9 @@ static size_t __pyx_f_5pyFAI_3ext_9watershed_8Bilinear_c_local_maxi(struct __pyx * return self.width * current0 + current1 */ __pyx_v_value = __pyx_v_tmp; - - /* "pyFAI/ext/bilinear.pxi":195 - * for i1 in range(start1, stop1): - * tmp = self.data[i0, i1] - * if tmp > value: # <<<<<<<<<<<<<< - * new0, new1 = i0, i1 - * value = tmp - */ + goto __pyx_L9; } + __pyx_L9:; } } @@ -4383,7 +4199,7 @@ static size_t __pyx_f_5pyFAI_3ext_9watershed_8Bilinear_c_local_maxi(struct __pyx /* function exit code */ __pyx_L1_error:; - __Pyx_WriteUnraisable("pyFAI.ext.watershed.Bilinear.c_local_maxi", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); + __Pyx_WriteUnraisable("pyFAI.ext.watershed.Bilinear.c_local_maxi", __pyx_clineno, __pyx_lineno, __pyx_filename, 0); __pyx_r = 0; __pyx_L0:; return __pyx_r; @@ -4764,8 +4580,8 @@ static int __pyx_pf_5pyFAI_3ext_9watershed_6Region___cinit__(struct __pyx_obj_5p __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->peaks); @@ -4972,16 +4788,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_4__repr__(struct __pyx_ __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_self->neighbors); - __Pyx_GIVEREF(__pyx_v_self->neighbors); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->neighbors); + __Pyx_GIVEREF(__pyx_v_self->neighbors); __Pyx_INCREF(__pyx_v_self->border); - __Pyx_GIVEREF(__pyx_v_self->border); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->border); + __Pyx_GIVEREF(__pyx_v_self->border); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Region_s_of_size_s_neighbors_s_b, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -5006,16 +4822,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_4__repr__(struct __pyx_ __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_self->peaks); - __Pyx_GIVEREF(__pyx_v_self->peaks); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_self->peaks); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_v_self->peaks); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; @@ -5063,17 +4879,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_4__repr__(struct __pyx_ return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":83 - * @cython.boundscheck(False) +/* "pyFAI/ext/watershed.pyx":84 * @cython.wraparound(False) - * def init_values(self, float[:] flat): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def init_values(self, float[::1] flat): # <<<<<<<<<<<<<< * """ * Initialize the values : maxi, mini and pass both height and so on */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_7init_values(PyObject *__pyx_v_self, PyObject *__pyx_arg_flat); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_6init_values[] = "\n Initialize the values : maxi, mini and pass both height and so on\n @param flat: flat view on the data (intensity)\n @return: True if there is a problem and the region should be removed\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_6init_values[] = "Region.init_values(self, __Pyx_memviewslice flat)\n\n Initialize the values : maxi, mini and pass both height and so on\n :param flat: flat view on the data (intensity)\n :return: True if there is a problem and the region should be removed\n "; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_7init_values(PyObject *__pyx_v_self, PyObject *__pyx_arg_flat) { __Pyx_memviewslice __pyx_v_flat = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_lineno = 0; @@ -5083,7 +4899,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_7init_values(PyObject * __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init_values (wrapper)", 0); assert(__pyx_arg_flat); { - __pyx_v_flat = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_arg_flat); if (unlikely(!__pyx_v_flat.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_flat = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_arg_flat); if (unlikely(!__pyx_v_flat.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -5112,23 +4928,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; - Py_ssize_t __pyx_t_3; + int __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; - Py_ssize_t __pyx_t_9; - float __pyx_t_10; + float __pyx_t_9; + int __pyx_t_10; int __pyx_t_11; int __pyx_t_12; - Py_ssize_t __pyx_t_13; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("init_values", 0); - /* "pyFAI/ext/watershed.pyx":92 + /* "pyFAI/ext/watershed.pyx":93 * int i, k, imax, imin * float mini, maxi, val * int border_size = len(self.border) # <<<<<<<<<<<<<< @@ -5139,13 +4954,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_border_size = __pyx_t_2; - /* "pyFAI/ext/watershed.pyx":93 + /* "pyFAI/ext/watershed.pyx":94 * float mini, maxi, val * int border_size = len(self.border) * int neighbors_size = len(self.neighbors) # <<<<<<<<<<<<<< @@ -5156,13 +4971,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_neighbors_size = __pyx_t_2; - /* "pyFAI/ext/watershed.pyx":94 + /* "pyFAI/ext/watershed.pyx":95 * int border_size = len(self.border) * int neighbors_size = len(self.neighbors) * self.maxi = flat[self.index] # <<<<<<<<<<<<<< @@ -5170,9 +4985,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p * print(self.index, neighbors_size, border_size) */ __pyx_t_3 = __pyx_v_self->index; - __pyx_v_self->maxi = (*((float *) ( /* dim=0 */ (__pyx_v_flat.data + __pyx_t_3 * __pyx_v_flat.strides[0]) ))); + __pyx_v_self->maxi = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_flat.data) + __pyx_t_3)) ))); - /* "pyFAI/ext/watershed.pyx":95 + /* "pyFAI/ext/watershed.pyx":96 * int neighbors_size = len(self.neighbors) * self.maxi = flat[self.index] * if neighbors_size != border_size: # <<<<<<<<<<<<<< @@ -5182,43 +4997,43 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __pyx_t_4 = ((__pyx_v_neighbors_size != __pyx_v_border_size) != 0); if (__pyx_t_4) { - /* "pyFAI/ext/watershed.pyx":96 + /* "pyFAI/ext/watershed.pyx":97 * self.maxi = flat[self.index] * if neighbors_size != border_size: * print(self.index, neighbors_size, border_size) # <<<<<<<<<<<<<< * print(self) * return True */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_neighbors_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_neighbors_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_border_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_border_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; - if (__Pyx_PrintOne(0, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PrintOne(0, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/watershed.pyx":97 + /* "pyFAI/ext/watershed.pyx":98 * if neighbors_size != border_size: * print(self.index, neighbors_size, border_size) * print(self) # <<<<<<<<<<<<<< * return True * if neighbors_size: */ - if (__Pyx_PrintOne(0, ((PyObject *)__pyx_v_self)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PrintOne(0, ((PyObject *)__pyx_v_self)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":98 + /* "pyFAI/ext/watershed.pyx":99 * print(self.index, neighbors_size, border_size) * print(self) * return True # <<<<<<<<<<<<<< @@ -5229,17 +5044,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __Pyx_INCREF(Py_True); __pyx_r = Py_True; goto __pyx_L0; - - /* "pyFAI/ext/watershed.pyx":95 - * int neighbors_size = len(self.neighbors) - * self.maxi = flat[self.index] - * if neighbors_size != border_size: # <<<<<<<<<<<<<< - * print(self.index, neighbors_size, border_size) - * print(self) - */ } - /* "pyFAI/ext/watershed.pyx":99 + /* "pyFAI/ext/watershed.pyx":100 * print(self) * return True * if neighbors_size: # <<<<<<<<<<<<<< @@ -5249,7 +5056,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __pyx_t_4 = (__pyx_v_neighbors_size != 0); if (__pyx_t_4) { - /* "pyFAI/ext/watershed.pyx":100 + /* "pyFAI/ext/watershed.pyx":101 * return True * if neighbors_size: * imax = imin = 0 # <<<<<<<<<<<<<< @@ -5259,7 +5066,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __pyx_v_imax = 0; __pyx_v_imin = 0; - /* "pyFAI/ext/watershed.pyx":101 + /* "pyFAI/ext/watershed.pyx":102 * if neighbors_size: * imax = imin = 0 * i = self.border[imax] # <<<<<<<<<<<<<< @@ -5268,36 +5075,36 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p */ if (unlikely(__pyx_v_self->border == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_8 = __Pyx_PyInt_As_int(PyList_GET_ITEM(__pyx_v_self->border, __pyx_v_imax)); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_As_int(PyList_GET_ITEM(__pyx_v_self->border, __pyx_v_imax)); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_i = __pyx_t_8; - /* "pyFAI/ext/watershed.pyx":102 + /* "pyFAI/ext/watershed.pyx":103 * imax = imin = 0 * i = self.border[imax] * val = mini = maxi = flat[i] # <<<<<<<<<<<<<< * for k in range(1, border_size): * i = self.border[k] */ - __pyx_t_9 = __pyx_v_i; - __pyx_t_10 = (*((float *) ( /* dim=0 */ (__pyx_v_flat.data + __pyx_t_9 * __pyx_v_flat.strides[0]) ))); - __pyx_v_val = __pyx_t_10; - __pyx_v_mini = __pyx_t_10; - __pyx_v_maxi = __pyx_t_10; + __pyx_t_8 = __pyx_v_i; + __pyx_t_9 = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_flat.data) + __pyx_t_8)) ))); + __pyx_v_val = __pyx_t_9; + __pyx_v_mini = __pyx_t_9; + __pyx_v_maxi = __pyx_t_9; - /* "pyFAI/ext/watershed.pyx":103 + /* "pyFAI/ext/watershed.pyx":104 * i = self.border[imax] * val = mini = maxi = flat[i] * for k in range(1, border_size): # <<<<<<<<<<<<<< * i = self.border[k] * val = flat[i] */ - __pyx_t_8 = __pyx_v_border_size; - for (__pyx_t_11 = 1; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) { + __pyx_t_10 = __pyx_v_border_size; + for (__pyx_t_11 = 1; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_v_k = __pyx_t_11; - /* "pyFAI/ext/watershed.pyx":104 + /* "pyFAI/ext/watershed.pyx":105 * val = mini = maxi = flat[i] * for k in range(1, border_size): * i = self.border[k] # <<<<<<<<<<<<<< @@ -5306,22 +5113,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p */ if (unlikely(__pyx_v_self->border == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_12 = __Pyx_PyInt_As_int(PyList_GET_ITEM(__pyx_v_self->border, __pyx_v_k)); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_As_int(PyList_GET_ITEM(__pyx_v_self->border, __pyx_v_k)); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_i = __pyx_t_12; - /* "pyFAI/ext/watershed.pyx":105 + /* "pyFAI/ext/watershed.pyx":106 * for k in range(1, border_size): * i = self.border[k] * val = flat[i] # <<<<<<<<<<<<<< * if val < mini: * mini = val */ - __pyx_t_13 = __pyx_v_i; - __pyx_v_val = (*((float *) ( /* dim=0 */ (__pyx_v_flat.data + __pyx_t_13 * __pyx_v_flat.strides[0]) ))); + __pyx_t_12 = __pyx_v_i; + __pyx_v_val = (*((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_flat.data) + __pyx_t_12)) ))); - /* "pyFAI/ext/watershed.pyx":106 + /* "pyFAI/ext/watershed.pyx":107 * i = self.border[k] * val = flat[i] * if val < mini: # <<<<<<<<<<<<<< @@ -5331,7 +5138,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __pyx_t_4 = ((__pyx_v_val < __pyx_v_mini) != 0); if (__pyx_t_4) { - /* "pyFAI/ext/watershed.pyx":107 + /* "pyFAI/ext/watershed.pyx":108 * val = flat[i] * if val < mini: * mini = val # <<<<<<<<<<<<<< @@ -5340,7 +5147,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p */ __pyx_v_mini = __pyx_v_val; - /* "pyFAI/ext/watershed.pyx":108 + /* "pyFAI/ext/watershed.pyx":109 * if val < mini: * mini = val * imin = k # <<<<<<<<<<<<<< @@ -5348,18 +5155,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p * maxi = val */ __pyx_v_imin = __pyx_v_k; - - /* "pyFAI/ext/watershed.pyx":106 - * i = self.border[k] - * val = flat[i] - * if val < mini: # <<<<<<<<<<<<<< - * mini = val - * imin = k - */ goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":109 + /* "pyFAI/ext/watershed.pyx":110 * mini = val * imin = k * elif val > maxi: # <<<<<<<<<<<<<< @@ -5369,7 +5168,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __pyx_t_4 = ((__pyx_v_val > __pyx_v_maxi) != 0); if (__pyx_t_4) { - /* "pyFAI/ext/watershed.pyx":110 + /* "pyFAI/ext/watershed.pyx":111 * imin = k * elif val > maxi: * maxi = val # <<<<<<<<<<<<<< @@ -5378,7 +5177,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p */ __pyx_v_maxi = __pyx_v_val; - /* "pyFAI/ext/watershed.pyx":111 + /* "pyFAI/ext/watershed.pyx":112 * elif val > maxi: * maxi = val * imax = k # <<<<<<<<<<<<<< @@ -5386,19 +5185,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p * self.mini = mini */ __pyx_v_imax = __pyx_v_k; - - /* "pyFAI/ext/watershed.pyx":109 - * mini = val - * imin = k - * elif val > maxi: # <<<<<<<<<<<<<< - * maxi = val - * imax = k - */ + goto __pyx_L7; } __pyx_L7:; } - /* "pyFAI/ext/watershed.pyx":112 + /* "pyFAI/ext/watershed.pyx":113 * maxi = val * imax = k * if self.mini == - 1: # <<<<<<<<<<<<<< @@ -5408,7 +5200,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p __pyx_t_4 = ((__pyx_v_self->mini == -1.0) != 0); if (__pyx_t_4) { - /* "pyFAI/ext/watershed.pyx":113 + /* "pyFAI/ext/watershed.pyx":114 * imax = k * if self.mini == - 1: * self.mini = mini # <<<<<<<<<<<<<< @@ -5416,17 +5208,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p * self.pass_to = self.neighbors[imax] */ __pyx_v_self->mini = __pyx_v_mini; - - /* "pyFAI/ext/watershed.pyx":112 - * maxi = val - * imax = k - * if self.mini == - 1: # <<<<<<<<<<<<<< - * self.mini = mini - * self.highest_pass = maxi - */ + goto __pyx_L8; } + __pyx_L8:; - /* "pyFAI/ext/watershed.pyx":114 + /* "pyFAI/ext/watershed.pyx":115 * if self.mini == - 1: * self.mini = mini * self.highest_pass = maxi # <<<<<<<<<<<<<< @@ -5435,7 +5221,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p */ __pyx_v_self->highest_pass = __pyx_v_maxi; - /* "pyFAI/ext/watershed.pyx":115 + /* "pyFAI/ext/watershed.pyx":116 * self.mini = mini * self.highest_pass = maxi * self.pass_to = self.neighbors[imax] # <<<<<<<<<<<<<< @@ -5444,29 +5230,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p */ if (unlikely(__pyx_v_self->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_8 = __Pyx_PyInt_As_int(PyList_GET_ITEM(__pyx_v_self->neighbors, __pyx_v_imax)); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_v_self->pass_to = __pyx_t_8; - - /* "pyFAI/ext/watershed.pyx":99 - * print(self) - * return True - * if neighbors_size: # <<<<<<<<<<<<<< - * imax = imin = 0 - * i = self.border[imax] - */ + __pyx_t_10 = __Pyx_PyInt_As_int(PyList_GET_ITEM(__pyx_v_self->neighbors, __pyx_v_imax)); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_v_self->pass_to = __pyx_t_10; goto __pyx_L4; } + /*else*/ { - /* "pyFAI/ext/watershed.pyx":117 + /* "pyFAI/ext/watershed.pyx":118 * self.pass_to = self.neighbors[imax] * else: * return True # <<<<<<<<<<<<<< * * def get_size(self): */ - /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_True); __pyx_r = Py_True; @@ -5474,10 +5252,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p } __pyx_L4:; - /* "pyFAI/ext/watershed.pyx":83 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":84 * @cython.wraparound(False) - * def init_values(self, float[:] flat): # <<<<<<<<<<<<<< + * @cython.initializedcheck(False) + * def init_values(self, float[::1] flat): # <<<<<<<<<<<<<< * """ * Initialize the values : maxi, mini and pass both height and so on */ @@ -5499,7 +5277,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":119 +/* "pyFAI/ext/watershed.pyx":120 * return True * * def get_size(self): # <<<<<<<<<<<<<< @@ -5509,6 +5287,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_6init_values(struct __p /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_9get_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_8get_size[] = "Region.get_size(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_9get_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5529,7 +5308,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_8get_size(struct __pyx_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_size", 0); - /* "pyFAI/ext/watershed.pyx":120 + /* "pyFAI/ext/watershed.pyx":121 * * def get_size(self): * return self.size # <<<<<<<<<<<<<< @@ -5537,13 +5316,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_8get_size(struct __pyx_ * def get_highest_pass(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":119 + /* "pyFAI/ext/watershed.pyx":120 * return True * * def get_size(self): # <<<<<<<<<<<<<< @@ -5562,7 +5341,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_8get_size(struct __pyx_ return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":122 +/* "pyFAI/ext/watershed.pyx":123 * return self.size * * def get_highest_pass(self): # <<<<<<<<<<<<<< @@ -5572,6 +5351,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_8get_size(struct __pyx_ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_11get_highest_pass(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_10get_highest_pass[] = "Region.get_highest_pass(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_11get_highest_pass(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5592,7 +5372,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_10get_highest_pass(stru int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_highest_pass", 0); - /* "pyFAI/ext/watershed.pyx":123 + /* "pyFAI/ext/watershed.pyx":124 * * def get_highest_pass(self): * return self.highest_pass # <<<<<<<<<<<<<< @@ -5600,13 +5380,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_10get_highest_pass(stru * def get_maxi(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->highest_pass); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->highest_pass); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":122 + /* "pyFAI/ext/watershed.pyx":123 * return self.size * * def get_highest_pass(self): # <<<<<<<<<<<<<< @@ -5625,7 +5405,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_10get_highest_pass(stru return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":125 +/* "pyFAI/ext/watershed.pyx":126 * return self.highest_pass * * def get_maxi(self): # <<<<<<<<<<<<<< @@ -5635,6 +5415,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_10get_highest_pass(stru /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_13get_maxi(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_12get_maxi[] = "Region.get_maxi(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_13get_maxi(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5655,7 +5436,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_12get_maxi(struct __pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_maxi", 0); - /* "pyFAI/ext/watershed.pyx":126 + /* "pyFAI/ext/watershed.pyx":127 * * def get_maxi(self): * return self.maxi # <<<<<<<<<<<<<< @@ -5663,13 +5444,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_12get_maxi(struct __pyx * def get_mini(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->maxi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->maxi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":125 + /* "pyFAI/ext/watershed.pyx":126 * return self.highest_pass * * def get_maxi(self): # <<<<<<<<<<<<<< @@ -5688,7 +5469,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_12get_maxi(struct __pyx return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":128 +/* "pyFAI/ext/watershed.pyx":129 * return self.maxi * * def get_mini(self): # <<<<<<<<<<<<<< @@ -5698,6 +5479,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_12get_maxi(struct __pyx /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_15get_mini(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_14get_mini[] = "Region.get_mini(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_15get_mini(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5718,7 +5500,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_14get_mini(struct __pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_mini", 0); - /* "pyFAI/ext/watershed.pyx":129 + /* "pyFAI/ext/watershed.pyx":130 * * def get_mini(self): * return self.mini # <<<<<<<<<<<<<< @@ -5726,13 +5508,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_14get_mini(struct __pyx * def get_pass_to(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mini); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mini); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":128 + /* "pyFAI/ext/watershed.pyx":129 * return self.maxi * * def get_mini(self): # <<<<<<<<<<<<<< @@ -5751,7 +5533,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_14get_mini(struct __pyx return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":131 +/* "pyFAI/ext/watershed.pyx":132 * return self.mini * * def get_pass_to(self): # <<<<<<<<<<<<<< @@ -5761,6 +5543,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_14get_mini(struct __pyx /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_17get_pass_to(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_16get_pass_to[] = "Region.get_pass_to(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_17get_pass_to(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5781,7 +5564,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_16get_pass_to(struct __ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_pass_to", 0); - /* "pyFAI/ext/watershed.pyx":132 + /* "pyFAI/ext/watershed.pyx":133 * * def get_pass_to(self): * return self.pass_to # <<<<<<<<<<<<<< @@ -5789,13 +5572,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_16get_pass_to(struct __ * def get_index(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pass_to); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->pass_to); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":131 + /* "pyFAI/ext/watershed.pyx":132 * return self.mini * * def get_pass_to(self): # <<<<<<<<<<<<<< @@ -5814,7 +5597,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_16get_pass_to(struct __ return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":134 +/* "pyFAI/ext/watershed.pyx":135 * return self.pass_to * * def get_index(self): # <<<<<<<<<<<<<< @@ -5824,6 +5607,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_16get_pass_to(struct __ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_19get_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_18get_index[] = "Region.get_index(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_19get_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5844,7 +5628,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_18get_index(struct __py int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_index", 0); - /* "pyFAI/ext/watershed.pyx":135 + /* "pyFAI/ext/watershed.pyx":136 * * def get_index(self): * return self.index # <<<<<<<<<<<<<< @@ -5852,13 +5636,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_18get_index(struct __py * def get_borders(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":134 + /* "pyFAI/ext/watershed.pyx":135 * return self.pass_to * * def get_index(self): # <<<<<<<<<<<<<< @@ -5877,7 +5661,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_18get_index(struct __py return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":137 +/* "pyFAI/ext/watershed.pyx":138 * return self.index * * def get_borders(self): # <<<<<<<<<<<<<< @@ -5887,6 +5671,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_18get_index(struct __py /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_21get_borders(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_20get_borders[] = "Region.get_borders(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_21get_borders(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5903,7 +5688,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_20get_borders(struct __ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_borders", 0); - /* "pyFAI/ext/watershed.pyx":138 + /* "pyFAI/ext/watershed.pyx":139 * * def get_borders(self): * return self.border # <<<<<<<<<<<<<< @@ -5915,7 +5700,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_20get_borders(struct __ __pyx_r = __pyx_v_self->border; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":137 + /* "pyFAI/ext/watershed.pyx":138 * return self.index * * def get_borders(self): # <<<<<<<<<<<<<< @@ -5930,7 +5715,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_20get_borders(struct __ return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":140 +/* "pyFAI/ext/watershed.pyx":141 * return self.border * * def get_neighbors(self): # <<<<<<<<<<<<<< @@ -5940,6 +5725,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_20get_borders(struct __ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_23get_neighbors(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_22get_neighbors[] = "Region.get_neighbors(self)"; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_23get_neighbors(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -5956,7 +5742,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_22get_neighbors(struct __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_neighbors", 0); - /* "pyFAI/ext/watershed.pyx":141 + /* "pyFAI/ext/watershed.pyx":142 * * def get_neighbors(self): * return self.neighbors # <<<<<<<<<<<<<< @@ -5968,7 +5754,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_22get_neighbors(struct __pyx_r = __pyx_v_self->neighbors; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":140 + /* "pyFAI/ext/watershed.pyx":141 * return self.border * * def get_neighbors(self): # <<<<<<<<<<<<<< @@ -5983,9 +5769,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_22get_neighbors(struct return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":146 - * @cython.boundscheck(False) +/* "pyFAI/ext/watershed.pyx":148 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def merge(self, Region other): # <<<<<<<<<<<<<< * """ * merge 2 regions @@ -5993,7 +5779,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_22get_neighbors(struct /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_25merge(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_24merge[] = "\n merge 2 regions\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_6Region_24merge[] = "Region.merge(self, Region other)\n\n merge 2 regions\n "; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_25merge(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { CYTHON_UNUSED int __pyx_lineno = 0; CYTHON_UNUSED const char *__pyx_filename = NULL; @@ -6001,7 +5787,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_6Region_25merge(PyObject *__pyx PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("merge (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_5pyFAI_3ext_9watershed_Region, 1, "other", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_5pyFAI_3ext_9watershed_Region, 1, "other", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_v_self), ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_v_other)); /* function exit code */ @@ -6035,31 +5821,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob int __pyx_clineno = 0; __Pyx_RefNannySetupContext("merge", 0); - /* "pyFAI/ext/watershed.pyx":152 + /* "pyFAI/ext/watershed.pyx":154 * cdef: * int i * list new_neighbors = [] # <<<<<<<<<<<<<< * list new_border = [] * Region region */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_new_neighbors = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":153 + /* "pyFAI/ext/watershed.pyx":155 * int i * list new_neighbors = [] * list new_border = [] # <<<<<<<<<<<<<< * Region region * if other.maxi > self.maxi: */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_new_border = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":155 + /* "pyFAI/ext/watershed.pyx":157 * list new_border = [] * Region region * if other.maxi > self.maxi: # <<<<<<<<<<<<<< @@ -6069,27 +5855,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob __pyx_t_2 = ((__pyx_v_other->maxi > __pyx_v_self->maxi) != 0); if (__pyx_t_2) { - /* "pyFAI/ext/watershed.pyx":156 + /* "pyFAI/ext/watershed.pyx":158 * Region region * if other.maxi > self.maxi: * region = Region(other.index) # <<<<<<<<<<<<<< * region.maxi = other.maxi * else: */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_other->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_other->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5pyFAI_3ext_9watershed_Region), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5pyFAI_3ext_9watershed_Region)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_region = ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":157 + /* "pyFAI/ext/watershed.pyx":159 * if other.maxi > self.maxi: * region = Region(other.index) * region.maxi = other.maxi # <<<<<<<<<<<<<< @@ -6098,39 +5884,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ __pyx_t_4 = __pyx_v_other->maxi; __pyx_v_region->maxi = __pyx_t_4; - - /* "pyFAI/ext/watershed.pyx":155 - * list new_border = [] - * Region region - * if other.maxi > self.maxi: # <<<<<<<<<<<<<< - * region = Region(other.index) - * region.maxi = other.maxi - */ goto __pyx_L3; } + /*else*/ { - /* "pyFAI/ext/watershed.pyx":159 + /* "pyFAI/ext/watershed.pyx":161 * region.maxi = other.maxi * else: * region = Region(self.index) # <<<<<<<<<<<<<< * region.maxi = self.maxi * region.mini = min(self.mini, other.mini) */ - /*else*/ { - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5pyFAI_3ext_9watershed_Region), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5pyFAI_3ext_9watershed_Region)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_region = ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":160 + /* "pyFAI/ext/watershed.pyx":162 * else: * region = Region(self.index) * region.maxi = self.maxi # <<<<<<<<<<<<<< @@ -6142,7 +5920,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob } __pyx_L3:; - /* "pyFAI/ext/watershed.pyx":161 + /* "pyFAI/ext/watershed.pyx":163 * region = Region(self.index) * region.maxi = self.maxi * region.mini = min(self.mini, other.mini) # <<<<<<<<<<<<<< @@ -6158,7 +5936,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob } __pyx_v_region->mini = __pyx_t_6; - /* "pyFAI/ext/watershed.pyx":162 + /* "pyFAI/ext/watershed.pyx":164 * region.maxi = self.maxi * region.mini = min(self.mini, other.mini) * for i in range(len(self.neighbors)): # <<<<<<<<<<<<<< @@ -6169,14 +5947,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_7 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "pyFAI/ext/watershed.pyx":163 + /* "pyFAI/ext/watershed.pyx":165 * region.mini = min(self.mini, other.mini) * for i in range(len(self.neighbors)): * if self.neighbors[i] not in other.peaks: # <<<<<<<<<<<<<< @@ -6185,13 +5963,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_self->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(PyList_GET_ITEM(__pyx_v_self->neighbors, __pyx_v_i), __pyx_v_other->peaks, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = (__Pyx_PySequence_Contains(PyList_GET_ITEM(__pyx_v_self->neighbors, __pyx_v_i), __pyx_v_other->peaks, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = (__pyx_t_2 != 0); if (__pyx_t_9) { - /* "pyFAI/ext/watershed.pyx":164 + /* "pyFAI/ext/watershed.pyx":166 * for i in range(len(self.neighbors)): * if self.neighbors[i] not in other.peaks: * if self.border[i] not in new_border: # <<<<<<<<<<<<<< @@ -6200,13 +5978,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_self->border == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_9 = (__Pyx_PySequence_ContainsTF(PyList_GET_ITEM(__pyx_v_self->border, __pyx_v_i), __pyx_v_new_border, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = (__Pyx_PySequence_Contains(PyList_GET_ITEM(__pyx_v_self->border, __pyx_v_i), __pyx_v_new_border, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_t_9 != 0); if (__pyx_t_2) { - /* "pyFAI/ext/watershed.pyx":165 + /* "pyFAI/ext/watershed.pyx":167 * if self.neighbors[i] not in other.peaks: * if self.border[i] not in new_border: * new_border.append(self.border[i]) # <<<<<<<<<<<<<< @@ -6215,14 +5993,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_self->border == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_ITEM(__pyx_v_self->border, __pyx_v_i); __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_border, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_border, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":166 + /* "pyFAI/ext/watershed.pyx":168 * if self.border[i] not in new_border: * new_border.append(self.border[i]) * new_neighbors.append(self.neighbors[i]) # <<<<<<<<<<<<<< @@ -6231,33 +6009,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_self->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_ITEM(__pyx_v_self->neighbors, __pyx_v_i); __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_neighbors, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_neighbors, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "pyFAI/ext/watershed.pyx":164 - * for i in range(len(self.neighbors)): - * if self.neighbors[i] not in other.peaks: - * if self.border[i] not in new_border: # <<<<<<<<<<<<<< - * new_border.append(self.border[i]) - * new_neighbors.append(self.neighbors[i]) - */ + goto __pyx_L7; } - - /* "pyFAI/ext/watershed.pyx":163 - * region.mini = min(self.mini, other.mini) - * for i in range(len(self.neighbors)): - * if self.neighbors[i] not in other.peaks: # <<<<<<<<<<<<<< - * if self.border[i] not in new_border: - * new_border.append(self.border[i]) - */ + __pyx_L7:; + goto __pyx_L6; } + __pyx_L6:; } - /* "pyFAI/ext/watershed.pyx":167 + /* "pyFAI/ext/watershed.pyx":169 * new_border.append(self.border[i]) * new_neighbors.append(self.neighbors[i]) * for i in range(len(other.neighbors)): # <<<<<<<<<<<<<< @@ -6268,14 +6034,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_7 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "pyFAI/ext/watershed.pyx":168 + /* "pyFAI/ext/watershed.pyx":170 * new_neighbors.append(self.neighbors[i]) * for i in range(len(other.neighbors)): * if other.neighbors[i] not in self.peaks: # <<<<<<<<<<<<<< @@ -6284,13 +6050,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_other->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(PyList_GET_ITEM(__pyx_v_other->neighbors, __pyx_v_i), __pyx_v_self->peaks, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = (__Pyx_PySequence_Contains(PyList_GET_ITEM(__pyx_v_other->neighbors, __pyx_v_i), __pyx_v_self->peaks, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = (__pyx_t_2 != 0); if (__pyx_t_9) { - /* "pyFAI/ext/watershed.pyx":169 + /* "pyFAI/ext/watershed.pyx":171 * for i in range(len(other.neighbors)): * if other.neighbors[i] not in self.peaks: * if other.border[i] not in new_border: # <<<<<<<<<<<<<< @@ -6299,13 +6065,13 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_other->border == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_9 = (__Pyx_PySequence_ContainsTF(PyList_GET_ITEM(__pyx_v_other->border, __pyx_v_i), __pyx_v_new_border, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = (__Pyx_PySequence_Contains(PyList_GET_ITEM(__pyx_v_other->border, __pyx_v_i), __pyx_v_new_border, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_t_9 != 0); if (__pyx_t_2) { - /* "pyFAI/ext/watershed.pyx":170 + /* "pyFAI/ext/watershed.pyx":172 * if other.neighbors[i] not in self.peaks: * if other.border[i] not in new_border: * new_border.append(other.border[i]) # <<<<<<<<<<<<<< @@ -6314,14 +6080,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_other->border == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_ITEM(__pyx_v_other->border, __pyx_v_i); __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_border, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_border, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":171 + /* "pyFAI/ext/watershed.pyx":173 * if other.border[i] not in new_border: * new_border.append(other.border[i]) * new_neighbors.append(other.neighbors[i]) # <<<<<<<<<<<<<< @@ -6330,33 +6096,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ if (unlikely(__pyx_v_other->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_ITEM(__pyx_v_other->neighbors, __pyx_v_i); __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_neighbors, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_new_neighbors, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "pyFAI/ext/watershed.pyx":169 - * for i in range(len(other.neighbors)): - * if other.neighbors[i] not in self.peaks: - * if other.border[i] not in new_border: # <<<<<<<<<<<<<< - * new_border.append(other.border[i]) - * new_neighbors.append(other.neighbors[i]) - */ + goto __pyx_L11; } - - /* "pyFAI/ext/watershed.pyx":168 - * new_neighbors.append(self.neighbors[i]) - * for i in range(len(other.neighbors)): - * if other.neighbors[i] not in self.peaks: # <<<<<<<<<<<<<< - * if other.border[i] not in new_border: - * new_border.append(other.border[i]) - */ + __pyx_L11:; + goto __pyx_L10; } + __pyx_L10:; } - /* "pyFAI/ext/watershed.pyx":172 + /* "pyFAI/ext/watershed.pyx":174 * new_border.append(other.border[i]) * new_neighbors.append(other.neighbors[i]) * region.neighbors = new_neighbors # <<<<<<<<<<<<<< @@ -6369,7 +6123,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob __Pyx_DECREF(__pyx_v_region->neighbors); __pyx_v_region->neighbors = __pyx_v_new_neighbors; - /* "pyFAI/ext/watershed.pyx":173 + /* "pyFAI/ext/watershed.pyx":175 * new_neighbors.append(other.neighbors[i]) * region.neighbors = new_neighbors * region.border = new_border # <<<<<<<<<<<<<< @@ -6382,14 +6136,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob __Pyx_DECREF(__pyx_v_region->border); __pyx_v_region->border = __pyx_v_new_border; - /* "pyFAI/ext/watershed.pyx":174 + /* "pyFAI/ext/watershed.pyx":176 * region.neighbors = new_neighbors * region.border = new_border * region.peaks = self.peaks + other.peaks # <<<<<<<<<<<<<< * region.size = self.size + other.size * return region */ - __pyx_t_1 = PyNumber_Add(__pyx_v_self->peaks, __pyx_v_other->peaks); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyNumber_Add(__pyx_v_self->peaks, __pyx_v_other->peaks); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_region->peaks); @@ -6397,7 +6151,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob __pyx_v_region->peaks = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":175 + /* "pyFAI/ext/watershed.pyx":177 * region.border = new_border * region.peaks = self.peaks + other.peaks * region.size = self.size + other.size # <<<<<<<<<<<<<< @@ -6406,7 +6160,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob */ __pyx_v_region->size = (__pyx_v_self->size + __pyx_v_other->size); - /* "pyFAI/ext/watershed.pyx":176 + /* "pyFAI/ext/watershed.pyx":178 * region.peaks = self.peaks + other.peaks * region.size = self.size + other.size * return region # <<<<<<<<<<<<<< @@ -6418,9 +6172,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_24merge(struct __pyx_ob __pyx_r = ((PyObject *)__pyx_v_region); goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":146 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":148 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def merge(self, Region other): # <<<<<<<<<<<<<< * """ * merge 2 regions @@ -6786,17 +6540,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_6Region_5peaks___get__(struct _ return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":201 +/* "pyFAI/ext/watershed.pyx":203 * VERSION = "1.0" * * def __init__(self, data not None, thres=1.0): # <<<<<<<<<<<<<< * """ - * @param data: 2d image as numpy array + * :param data: 2d image as numpy array */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed___init__[] = "\n @param data: 2d image as numpy array\n\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed___init__[] = "InverseWatershed.__init__(self, data, thres=1.0)\n\n :param data: 2d image as numpy array\n\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__ = {"__init__", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed___init__}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -6830,7 +6584,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__(Py case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -6839,7 +6593,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__(Py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -6856,14 +6610,14 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__(Py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.watershed.InverseWatershed.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_data) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_r = __pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(__pyx_self, __pyx_v_self, __pyx_v_data, __pyx_v_thres); @@ -6891,7 +6645,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "pyFAI/ext/watershed.pyx":206 + /* "pyFAI/ext/watershed.pyx":208 * * """ * assert data.ndim == 2, "data.ndim == 2" # <<<<<<<<<<<<<< @@ -6900,62 +6654,61 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_data_ndim_2); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "pyFAI/ext/watershed.pyx":207 + /* "pyFAI/ext/watershed.pyx":209 * """ * assert data.ndim == 2, "data.ndim == 2" * self.data = numpy.ascontiguousarray(data, dtype=numpy.float32) # <<<<<<<<<<<<<< * * self.height, self.width = data.shape */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_data); - __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data); - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(__pyx_v_data); + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":209 + /* "pyFAI/ext/watershed.pyx":211 * self.data = numpy.ascontiguousarray(data, dtype=numpy.float32) * * self.height, self.width = data.shape # <<<<<<<<<<<<<< * self.bilinear = Bilinear(data) * self.regions = {} */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) { PyObject* sequence = __pyx_t_6; @@ -6967,7 +6720,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { @@ -6980,15 +6733,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { Py_ssize_t index = -1; - __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; @@ -6996,7 +6749,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_2 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; @@ -7004,148 +6757,148 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_height, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_height, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_width, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_width, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":210 + /* "pyFAI/ext/watershed.pyx":212 * * self.height, self.width = data.shape * self.bilinear = Bilinear(data) # <<<<<<<<<<<<<< * self.regions = {} * self.labels = numpy.zeros((self.height, self.width), dtype="int32") */ - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_data); - __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_data); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5pyFAI_3ext_9watershed_Bilinear), __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(__pyx_v_data); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5pyFAI_3ext_9watershed_Bilinear)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bilinear, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bilinear, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":211 + /* "pyFAI/ext/watershed.pyx":213 * self.height, self.width = data.shape * self.bilinear = Bilinear(data) * self.regions = {} # <<<<<<<<<<<<<< * self.labels = numpy.zeros((self.height, self.width), dtype="int32") * self.borders = numpy.zeros((self.height, self.width), dtype="uint8") */ - __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_regions, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_regions, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":212 + /* "pyFAI/ext/watershed.pyx":214 * self.bilinear = Bilinear(data) * self.regions = {} * self.labels = numpy.zeros((self.height, self.width), dtype="int32") # <<<<<<<<<<<<<< * self.borders = numpy.zeros((self.height, self.width), dtype="uint8") * self.thres = thres */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":213 + /* "pyFAI/ext/watershed.pyx":215 * self.regions = {} * self.labels = numpy.zeros((self.height, self.width), dtype="int32") * self.borders = numpy.zeros((self.height, self.width), dtype="uint8") # <<<<<<<<<<<<<< * self.thres = thres * self._actual_thres = 2 */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_borders, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_borders, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":214 + /* "pyFAI/ext/watershed.pyx":216 * self.labels = numpy.zeros((self.height, self.width), dtype="int32") * self.borders = numpy.zeros((self.height, self.width), dtype="uint8") * self.thres = thres # <<<<<<<<<<<<<< * self._actual_thres = 2 * */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thres, __pyx_v_thres) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thres, __pyx_v_thres) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":215 + /* "pyFAI/ext/watershed.pyx":217 * self.borders = numpy.zeros((self.height, self.width), dtype="uint8") * self.thres = thres * self._actual_thres = 2 # <<<<<<<<<<<<<< * * def __dealloc__(self): */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres, __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres, __pyx_int_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":201 + /* "pyFAI/ext/watershed.pyx":203 * VERSION = "1.0" * * def __init__(self, data not None, thres=1.0): # <<<<<<<<<<<<<< * """ - * @param data: 2d image as numpy array + * :param data: 2d image as numpy array */ /* function exit code */ @@ -7165,7 +6918,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":217 +/* "pyFAI/ext/watershed.pyx":219 * self._actual_thres = 2 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -7175,7 +6928,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed___init__(CYT /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_3__dealloc__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_2__dealloc__[] = "destructor"; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_2__dealloc__[] = "InverseWatershed.__dealloc__(self)\ndestructor"; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_3__dealloc__ = {"__dealloc__", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_3__dealloc__, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_2__dealloc__}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_3__dealloc__(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -7196,61 +6949,61 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_2__dealloc__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "pyFAI/ext/watershed.pyx":219 + /* "pyFAI/ext/watershed.pyx":221 * def __dealloc__(self): * """destructor""" * self.data = None # <<<<<<<<<<<<<< * self.bilinear = None * self.regions = None */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":220 + /* "pyFAI/ext/watershed.pyx":222 * """destructor""" * self.data = None * self.bilinear = None # <<<<<<<<<<<<<< * self.regions = None * self.labels = None */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bilinear, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bilinear, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":221 + /* "pyFAI/ext/watershed.pyx":223 * self.data = None * self.bilinear = None * self.regions = None # <<<<<<<<<<<<<< * self.labels = None * self.borders = None */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_regions, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_regions, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":222 + /* "pyFAI/ext/watershed.pyx":224 * self.bilinear = None * self.regions = None * self.labels = None # <<<<<<<<<<<<<< * self.borders = None * self.dict = None */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":223 + /* "pyFAI/ext/watershed.pyx":225 * self.regions = None * self.labels = None * self.borders = None # <<<<<<<<<<<<<< * self.dict = None * */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_borders, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_borders, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":224 + /* "pyFAI/ext/watershed.pyx":226 * self.labels = None * self.borders = None * self.dict = None # <<<<<<<<<<<<<< * * def save(self, fname): */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dict, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dict, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":217 + /* "pyFAI/ext/watershed.pyx":219 * self._actual_thres = 2 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -7270,7 +7023,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_2__dealloc__ return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":226 +/* "pyFAI/ext/watershed.pyx":228 * self.dict = None * * def save(self, fname): # <<<<<<<<<<<<<< @@ -7280,7 +7033,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_2__dealloc__ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_5save(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_4save[] = "\n Save all regions into a HDF5 file\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_4save[] = "InverseWatershed.save(self, fname)\n\n Save all regions into a HDF5 file\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_5save = {"save", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_5save, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_4save}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_5save(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -7311,11 +7064,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_5save(PyObje case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("save", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("save", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "save") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "save") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7328,7 +7081,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_5save(PyObje } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("save", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("save", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.watershed.InverseWatershed.save", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7370,19 +7123,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON int __pyx_clineno = 0; __Pyx_RefNannySetupContext("save", 0); - /* "pyFAI/ext/watershed.pyx":230 + /* "pyFAI/ext/watershed.pyx":232 * Save all regions into a HDF5 file * """ * import h5py # <<<<<<<<<<<<<< * with h5py.File(fname) as h5: * h5["NAME"] = self.NAME */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_h5py, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_h5py, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_h5py = __pyx_t_1; __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":231 + /* "pyFAI/ext/watershed.pyx":233 * """ * import h5py * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< @@ -7390,7 +7143,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON * h5["VERSION"] = self.VERSION */ /*with:*/ { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_h5py, __pyx_n_s_File); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_h5py, __pyx_n_s_File); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -7403,23 +7156,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_fname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_fname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_fname); - __Pyx_GIVEREF(__pyx_v_fname); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_fname); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(__pyx_v_fname); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -7432,10 +7185,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } } if (__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -7452,31 +7205,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON __pyx_v_h5 = __pyx_t_4; __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":232 + /* "pyFAI/ext/watershed.pyx":234 * import h5py * with h5py.File(fname) as h5: * h5["NAME"] = self.NAME # <<<<<<<<<<<<<< * h5["VERSION"] = self.VERSION * for i in ("data", "height", "width", "labels", "borders", "thres"): */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_NAME); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_NAME); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyObject_SetItem(__pyx_v_h5, __pyx_n_s_NAME, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + if (unlikely(PyObject_SetItem(__pyx_v_h5, __pyx_n_s_NAME, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":233 + /* "pyFAI/ext/watershed.pyx":235 * with h5py.File(fname) as h5: * h5["NAME"] = self.NAME * h5["VERSION"] = self.VERSION # <<<<<<<<<<<<<< * for i in ("data", "height", "width", "labels", "borders", "thres"): * h5[i] = self.__getattribute__(i) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_VERSION); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_VERSION); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyObject_SetItem(__pyx_v_h5, __pyx_n_s_VERSION, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + if (unlikely(PyObject_SetItem(__pyx_v_h5, __pyx_n_s_VERSION, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":234 + /* "pyFAI/ext/watershed.pyx":236 * h5["NAME"] = self.NAME * h5["VERSION"] = self.VERSION * for i in ("data", "height", "width", "labels", "borders", "thres"): # <<<<<<<<<<<<<< @@ -7487,22 +7240,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON for (;;) { if (__pyx_t_9 >= 6) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":235 + /* "pyFAI/ext/watershed.pyx":237 * h5["VERSION"] = self.VERSION * for i in ("data", "height", "width", "labels", "borders", "thres"): * h5[i] = self.__getattribute__(i) # <<<<<<<<<<<<<< * r = h5.require_group("regions") * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_getattribute); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_getattribute); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -7515,24 +7267,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL; + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_i); - __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_i); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __Pyx_GIVEREF(__pyx_v_i); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_h5, __pyx_v_i, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + if (unlikely(PyObject_SetItem(__pyx_v_h5, __pyx_v_i, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":234 + /* "pyFAI/ext/watershed.pyx":236 * h5["NAME"] = self.NAME * h5["VERSION"] = self.VERSION * for i in ("data", "height", "width", "labels", "borders", "thres"): # <<<<<<<<<<<<<< @@ -7542,31 +7294,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":236 + /* "pyFAI/ext/watershed.pyx":238 * for i in ("data", "height", "width", "labels", "borders", "thres"): * h5[i] = self.__getattribute__(i) * r = h5.require_group("regions") # <<<<<<<<<<<<<< * * for i in set(self.regions.values()): */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_h5, __pyx_n_s_require_group); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_h5, __pyx_n_s_require_group); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_r = __pyx_t_1; __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":238 + /* "pyFAI/ext/watershed.pyx":240 * r = h5.require_group("regions") * * for i in set(self.regions.values()): # <<<<<<<<<<<<<< * s = r.require_group(str(i.index)) * for j in ("index", "size", "pass_to", "mini", "maxi", "highest_pass", "neighbors", "border", "peaks"): */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -7580,19 +7332,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } } if (__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { { @@ -7601,7 +7353,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } break; } @@ -7610,23 +7362,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":239 + /* "pyFAI/ext/watershed.pyx":241 * * for i in set(self.regions.values()): * s = r.require_group(str(i.index)) # <<<<<<<<<<<<<< * for j in ("index", "size", "pass_to", "mini", "maxi", "highest_pass", "neighbors", "border", "peaks"): * s[j] = i.__getattribute__(j) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_r, __pyx_n_s_require_group); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_r, __pyx_n_s_require_group); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_index); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_10); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10); + __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; @@ -7640,17 +7392,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } } if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10); + __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } @@ -7658,7 +7410,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":240 + /* "pyFAI/ext/watershed.pyx":242 * for i in set(self.regions.values()): * s = r.require_group(str(i.index)) * for j in ("index", "size", "pass_to", "mini", "maxi", "highest_pass", "neighbors", "border", "peaks"): # <<<<<<<<<<<<<< @@ -7669,22 +7421,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON for (;;) { if (__pyx_t_9 >= 9) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #endif __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":241 + /* "pyFAI/ext/watershed.pyx":243 * s = r.require_group(str(i.index)) * for j in ("index", "size", "pass_to", "mini", "maxi", "highest_pass", "neighbors", "border", "peaks"): * s[j] = i.__getattribute__(j) # <<<<<<<<<<<<<< * * @classmethod */ - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getattribute); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getattribute); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) { @@ -7697,24 +7448,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } } if (!__pyx_t_10) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_j); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_j); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10); __pyx_t_10 = NULL; + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL; __Pyx_INCREF(__pyx_v_j); - __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_j); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __Pyx_GIVEREF(__pyx_v_j); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_s, __pyx_v_j, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + if (unlikely(PyObject_SetItem(__pyx_v_s, __pyx_v_j, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":240 + /* "pyFAI/ext/watershed.pyx":242 * for i in set(self.regions.values()): * s = r.require_group(str(i.index)) * for j in ("index", "size", "pass_to", "mini", "maxi", "highest_pass", "neighbors", "border", "peaks"): # <<<<<<<<<<<<<< @@ -7724,7 +7475,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":238 + /* "pyFAI/ext/watershed.pyx":240 * r = h5.require_group("regions") * * for i in set(self.regions.values()): # <<<<<<<<<<<<<< @@ -7733,14 +7484,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "pyFAI/ext/watershed.pyx":231 - * """ - * import h5py - * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< - * h5["NAME"] = self.NAME - * h5["VERSION"] = self.VERSION - */ } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; @@ -7753,22 +7496,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pyFAI/ext/watershed.pyx":233 + * """ + * import h5py + * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< + * h5["NAME"] = self.NAME + * h5["VERSION"] = self.VERSION + */ /*except:*/ { __Pyx_AddTraceback("pyFAI.ext.watershed.InverseWatershed.save", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_4); - __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __pyx_t_15 = ((!(__pyx_t_14 != 0)) != 0); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_1); @@ -7776,7 +7527,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -7802,7 +7553,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON if (__pyx_t_5) { __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__6, NULL); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } @@ -7817,7 +7568,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON __pyx_L24:; } - /* "pyFAI/ext/watershed.pyx":226 + /* "pyFAI/ext/watershed.pyx":228 * self.dict = None * * def save(self, fname): # <<<<<<<<<<<<<< @@ -7849,7 +7600,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":244 +/* "pyFAI/ext/watershed.pyx":246 * * @classmethod * def load(cls, fname): # <<<<<<<<<<<<<< @@ -7859,7 +7610,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_4save(CYTHON /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_7load(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_6load[] = "\n Load data from a HDF5 file\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_6load[] = "InverseWatershed.load(cls, fname)\n\n Load data from a HDF5 file\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_7load = {"load", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_7load, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_6load}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_7load(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_cls = 0; @@ -7890,11 +7641,11 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_7load(PyObje case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("load", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("load", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7907,7 +7658,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_7load(PyObje } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("load", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("load", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.watershed.InverseWatershed.load", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7953,19 +7704,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON int __pyx_clineno = 0; __Pyx_RefNannySetupContext("load", 0); - /* "pyFAI/ext/watershed.pyx":248 + /* "pyFAI/ext/watershed.pyx":250 * Load data from a HDF5 file * """ * import h5py # <<<<<<<<<<<<<< * with h5py.File(fname) as h5: * assert h5["VERSION"].value == cls.VERSION, "Version of module used for HDF5" */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_h5py, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_h5py, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_h5py = __pyx_t_1; __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":249 + /* "pyFAI/ext/watershed.pyx":251 * """ * import h5py * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< @@ -7973,7 +7724,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" */ /*with:*/ { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_h5py, __pyx_n_s_File); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_h5py, __pyx_n_s_File); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -7986,23 +7737,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON } } if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_fname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_fname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_fname); - __Pyx_GIVEREF(__pyx_v_fname); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_fname); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(__pyx_v_fname); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) { @@ -8015,10 +7766,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON } } if (__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -8035,7 +7786,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON __pyx_v_h5 = __pyx_t_4; __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":250 + /* "pyFAI/ext/watershed.pyx":252 * import h5py * with h5py.File(fname) as h5: * assert h5["VERSION"].value == cls.VERSION, "Version of module used for HDF5" # <<<<<<<<<<<<<< @@ -8044,26 +7795,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_4 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_VERSION); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_4 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_VERSION); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_VERSION); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_VERSION); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_9)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Version_of_module_used_for_HDF5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } } #endif - /* "pyFAI/ext/watershed.pyx":251 + /* "pyFAI/ext/watershed.pyx":253 * with h5py.File(fname) as h5: * assert h5["VERSION"].value == cls.VERSION, "Version of module used for HDF5" * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" # <<<<<<<<<<<<<< @@ -8072,40 +7823,40 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_NAME); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_NAME); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_NAME); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_NAME); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_9)) { PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Name_of_module_used_for_HDF5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } } #endif - /* "pyFAI/ext/watershed.pyx":252 + /* "pyFAI/ext/watershed.pyx":254 * assert h5["VERSION"].value == cls.VERSION, "Version of module used for HDF5" * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" * self = cls(h5["data"].value, h5["thres"].value) # <<<<<<<<<<<<<< * for i in ("labels", "borders"): * setattr(self, i, h5[i].value) */ - __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_data); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_data); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_thres); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_thres); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_INCREF(__pyx_v_cls); @@ -8121,25 +7872,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON __pyx_t_11 = 1; } } - __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_10) { - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL; + PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL; } - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self = __pyx_t_1; __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":253 + /* "pyFAI/ext/watershed.pyx":255 * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" * self = cls(h5["data"].value, h5["thres"].value) * for i in ("labels", "borders"): # <<<<<<<<<<<<<< @@ -8150,30 +7901,29 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON for (;;) { if (__pyx_t_11 >= 2) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_2); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_2); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #endif __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":254 + /* "pyFAI/ext/watershed.pyx":256 * self = cls(h5["data"].value, h5["thres"].value) * for i in ("labels", "borders"): * setattr(self, i, h5[i].value) # <<<<<<<<<<<<<< * for i in h5["regions"].values(): * r = Region(i["index"].value) */ - __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_v_i); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_2 = PyObject_GetItem(__pyx_v_h5, __pyx_v_i); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_2); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_13 = PyObject_SetAttr(__pyx_v_self, __pyx_v_i, __pyx_t_12); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_13 = PyObject_SetAttr(__pyx_v_self, __pyx_v_i, __pyx_t_12); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - /* "pyFAI/ext/watershed.pyx":253 + /* "pyFAI/ext/watershed.pyx":255 * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" * self = cls(h5["data"].value, h5["thres"].value) * for i in ("labels", "borders"): # <<<<<<<<<<<<<< @@ -8183,16 +7933,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":255 + /* "pyFAI/ext/watershed.pyx":257 * for i in ("labels", "borders"): * setattr(self, i, h5[i].value) * for i in h5["regions"].values(): # <<<<<<<<<<<<<< * r = Region(i["index"].value) * r.size = i["size"].value */ - __pyx_t_12 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_regions); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_12 = PyObject_GetItem(__pyx_v_h5, __pyx_n_s_regions); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_12); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; @@ -8206,10 +7956,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON } } if (__pyx_t_12) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -8217,9 +7967,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_11 = 0; __pyx_t_14 = NULL; } else { - __pyx_t_11 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_11 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_14 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_14 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -8227,18 +7977,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_1); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_1); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #endif } else { if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_1); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_1); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #endif } } else { @@ -8247,7 +7995,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } break; } @@ -8256,143 +8004,153 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":256 + /* "pyFAI/ext/watershed.pyx":258 * setattr(self, i, h5[i].value) * for i in h5["regions"].values(): * r = Region(i["index"].value) # <<<<<<<<<<<<<< * r.size = i["size"].value * r.pass_to = i["pass_to"].value */ - __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_index); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_index); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5pyFAI_3ext_9watershed_Region), __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5pyFAI_3ext_9watershed_Region)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_r, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_12)); __pyx_t_12 = 0; - /* "pyFAI/ext/watershed.pyx":257 + /* "pyFAI/ext/watershed.pyx":259 * for i in h5["regions"].values(): * r = Region(i["index"].value) * r.size = i["size"].value # <<<<<<<<<<<<<< * r.pass_to = i["pass_to"].value * r.mini = i["mini"].value */ - __pyx_t_12 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_size); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_12 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_size); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_r->size = __pyx_t_15; - /* "pyFAI/ext/watershed.pyx":258 + /* "pyFAI/ext/watershed.pyx":260 * r = Region(i["index"].value) * r.size = i["size"].value * r.pass_to = i["pass_to"].value # <<<<<<<<<<<<<< * r.mini = i["mini"].value * r.maxi = i["maxi"].value */ - __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_pass_to); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_pass_to); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_12); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_12); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_r->pass_to = __pyx_t_15; - /* "pyFAI/ext/watershed.pyx":259 + /* "pyFAI/ext/watershed.pyx":261 * r.size = i["size"].value * r.pass_to = i["pass_to"].value * r.mini = i["mini"].value # <<<<<<<<<<<<<< * r.maxi = i["maxi"].value * r.highest_pass = i["highest_pass"].value */ - __pyx_t_12 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_mini); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_12 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_mini); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_r->mini = __pyx_t_16; - /* "pyFAI/ext/watershed.pyx":260 + /* "pyFAI/ext/watershed.pyx":262 * r.pass_to = i["pass_to"].value * r.mini = i["mini"].value * r.maxi = i["maxi"].value # <<<<<<<<<<<<<< * r.highest_pass = i["highest_pass"].value * r.neighbors = list(i["neighbors"].value) */ - __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_maxi); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_maxi); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_12); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_12); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_r->maxi = __pyx_t_16; - /* "pyFAI/ext/watershed.pyx":261 + /* "pyFAI/ext/watershed.pyx":263 * r.mini = i["mini"].value * r.maxi = i["maxi"].value * r.highest_pass = i["highest_pass"].value # <<<<<<<<<<<<<< * r.neighbors = list(i["neighbors"].value) * r.border = list(i["border"].value) */ - __pyx_t_12 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_highest_pass); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_12 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_highest_pass); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_16 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_16 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_r->highest_pass = __pyx_t_16; - /* "pyFAI/ext/watershed.pyx":262 + /* "pyFAI/ext/watershed.pyx":264 * r.maxi = i["maxi"].value * r.highest_pass = i["highest_pass"].value * r.neighbors = list(i["neighbors"].value) # <<<<<<<<<<<<<< * r.border = list(i["border"].value) * r.peaks = list(i["peaks"].value) */ - __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_neighbors); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_neighbors); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PySequence_List(__pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_12); + __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_12); __Pyx_GOTREF(__pyx_v_r->neighbors); __Pyx_DECREF(__pyx_v_r->neighbors); - __pyx_v_r->neighbors = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; + __pyx_v_r->neighbors = ((PyObject*)__pyx_t_12); + __pyx_t_12 = 0; - /* "pyFAI/ext/watershed.pyx":263 + /* "pyFAI/ext/watershed.pyx":265 * r.highest_pass = i["highest_pass"].value * r.neighbors = list(i["neighbors"].value) * r.border = list(i["border"].value) # <<<<<<<<<<<<<< * r.peaks = list(i["peaks"].value) * for j in r.peaks: */ - __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_border); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_12 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_border); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PySequence_List(__pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GIVEREF(__pyx_t_1); @@ -8401,28 +8159,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON __pyx_v_r->border = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":264 + /* "pyFAI/ext/watershed.pyx":266 * r.neighbors = list(i["neighbors"].value) * r.border = list(i["border"].value) * r.peaks = list(i["peaks"].value) # <<<<<<<<<<<<<< * for j in r.peaks: * self.regions[j] = r */ - __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_peaks); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; + __pyx_t_1 = PyObject_GetItem(__pyx_v_i, __pyx_n_s_peaks); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L7_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PySequence_List(__pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L7_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_12); + __pyx_t_12 = 0; + __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_12); __Pyx_GOTREF(__pyx_v_r->peaks); __Pyx_DECREF(__pyx_v_r->peaks); - __pyx_v_r->peaks = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; + __pyx_v_r->peaks = ((PyObject*)__pyx_t_12); + __pyx_t_12 = 0; - /* "pyFAI/ext/watershed.pyx":265 + /* "pyFAI/ext/watershed.pyx":267 * r.border = list(i["border"].value) * r.peaks = list(i["peaks"].value) * for j in r.peaks: # <<<<<<<<<<<<<< @@ -8431,33 +8194,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON */ if (unlikely(__pyx_v_r->peaks == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L7_error;} } - __pyx_t_1 = __pyx_v_r->peaks; __Pyx_INCREF(__pyx_t_1); __pyx_t_17 = 0; + __pyx_t_12 = __pyx_v_r->peaks; __Pyx_INCREF(__pyx_t_12); __pyx_t_17 = 0; for (;;) { - if (__pyx_t_17 >= PyList_GET_SIZE(__pyx_t_1)) break; + if (__pyx_t_17 >= PyList_GET_SIZE(__pyx_t_12)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_12 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_17); __Pyx_INCREF(__pyx_t_12); __pyx_t_17++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_12, __pyx_t_17); __Pyx_INCREF(__pyx_t_1); __pyx_t_17++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #else - __pyx_t_12 = PySequence_ITEM(__pyx_t_1, __pyx_t_17); __pyx_t_17++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_GOTREF(__pyx_t_12); + __pyx_t_1 = PySequence_ITEM(__pyx_t_12, __pyx_t_17); __pyx_t_17++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L7_error;} #endif - __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_12); - __pyx_t_12 = 0; + __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_1); + __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":266 + /* "pyFAI/ext/watershed.pyx":268 * r.peaks = list(i["peaks"].value) * for j in r.peaks: * self.regions[j] = r # <<<<<<<<<<<<<< * return self * */ - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_GOTREF(__pyx_t_12); - if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_v_j, ((PyObject *)__pyx_v_r)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L7_error;} - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __Pyx_GOTREF(__pyx_t_1); + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_j, ((PyObject *)__pyx_v_r)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L7_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":265 + /* "pyFAI/ext/watershed.pyx":267 * r.border = list(i["border"].value) * r.peaks = list(i["peaks"].value) * for j in r.peaks: # <<<<<<<<<<<<<< @@ -8465,9 +8227,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON * return self */ } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - /* "pyFAI/ext/watershed.pyx":255 + /* "pyFAI/ext/watershed.pyx":257 * for i in ("labels", "borders"): * setattr(self, i, h5[i].value) * for i in h5["regions"].values(): # <<<<<<<<<<<<<< @@ -8476,14 +8238,6 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "pyFAI/ext/watershed.pyx":249 - * """ - * import h5py - * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< - * assert h5["VERSION"].value == cls.VERSION, "Version of module used for HDF5" - * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" - */ } __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; @@ -8493,37 +8247,45 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "pyFAI/ext/watershed.pyx":251 + * """ + * import h5py + * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< + * assert h5["VERSION"].value == cls.VERSION, "Version of module used for HDF5" + * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" + */ /*except:*/ { __Pyx_AddTraceback("pyFAI.ext.watershed.InverseWatershed.load", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_12, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_12); - __pyx_t_3 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_12, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __Pyx_GOTREF(__pyx_t_18); __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} __pyx_t_19 = ((!(__pyx_t_9 != 0)) != 0); if (__pyx_t_19) { __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_12); - __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_12 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} + __Pyx_GIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_ErrRestore(__pyx_t_2, __pyx_t_12, __pyx_t_1); + __pyx_t_2 = 0; __pyx_t_12 = 0; __pyx_t_1 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L8_exception_handled; } __pyx_L9_except_error:; @@ -8545,7 +8307,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON if (__pyx_t_5) { __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__8, NULL); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } @@ -8560,7 +8322,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON __pyx_L24:; } - /* "pyFAI/ext/watershed.pyx":267 + /* "pyFAI/ext/watershed.pyx":269 * for j in r.peaks: * self.regions[j] = r * return self # <<<<<<<<<<<<<< @@ -8568,12 +8330,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON * def init(self): */ __Pyx_XDECREF(__pyx_r); - if (unlikely(!__pyx_v_self)) { __Pyx_RaiseUnboundLocalError("self"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } + if (unlikely(!__pyx_v_self)) { __Pyx_RaiseUnboundLocalError("self"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_INCREF(__pyx_v_self); __pyx_r = __pyx_v_self; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":244 + /* "pyFAI/ext/watershed.pyx":246 * * @classmethod * def load(cls, fname): # <<<<<<<<<<<<<< @@ -8603,7 +8365,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":269 +/* "pyFAI/ext/watershed.pyx":271 * return self * * def init(self): # <<<<<<<<<<<<<< @@ -8613,7 +8375,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_6load(CYTHON /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_9init(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_9init = {"init", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_9init, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_8init[] = "InverseWatershed.init(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_9init = {"init", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_9init, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_8init}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_9init(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -8640,14 +8403,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON int __pyx_clineno = 0; __Pyx_RefNannySetupContext("init", 0); - /* "pyFAI/ext/watershed.pyx":270 + /* "pyFAI/ext/watershed.pyx":272 * * def init(self): * self.init_labels() # <<<<<<<<<<<<<< * self.init_borders() * self.init_regions() */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_labels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_labels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -8660,23 +8423,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":271 + /* "pyFAI/ext/watershed.pyx":273 * def init(self): * self.init_labels() * self.init_borders() # <<<<<<<<<<<<<< * self.init_regions() * self.init_pass() */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_borders); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_borders); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -8689,23 +8452,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":272 + /* "pyFAI/ext/watershed.pyx":274 * self.init_labels() * self.init_borders() * self.init_regions() # <<<<<<<<<<<<<< * self.init_pass() * # self.merge_singleton() */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -8718,23 +8481,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":273 + /* "pyFAI/ext/watershed.pyx":275 * self.init_borders() * self.init_regions() * self.init_pass() # <<<<<<<<<<<<<< * # self.merge_singleton() * # self.merge_twins() */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_pass); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_init_pass); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -8747,36 +8510,36 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":277 + /* "pyFAI/ext/watershed.pyx":279 * # self.merge_twins() * # self.merge_intense(self.thres) * logger.info("found %s regions, after merge remains %s" % (len(self.regions), len(set(self.regions.values())))) # <<<<<<<<<<<<<< * * @cython.cdivision(True) */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_values); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_values); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; @@ -8790,29 +8553,29 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON } } if (__pyx_t_6) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PySet_New(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PySet_New(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_4 = PySet_GET_SIZE(__pyx_t_7); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySet_Size(__pyx_t_7); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); __pyx_t_2 = 0; __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_found_s_regions_after_merge_rema, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_found_s_regions_after_merge_rema, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; @@ -8826,24 +8589,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON } } if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":269 + /* "pyFAI/ext/watershed.pyx":271 * return self * * def init(self): # <<<<<<<<<<<<<< @@ -8869,9 +8632,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":282 - * @cython.boundscheck(False) +/* "pyFAI/ext/watershed.pyx":285 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_labels(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res @@ -8879,7 +8642,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_8init(CYTHON /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels = {"init_labels", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_10init_labels[] = "InverseWatershed.init_labels(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels = {"init_labels", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_10init_labels}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -8909,8 +8673,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; - Py_ssize_t __pyx_t_7; - Py_ssize_t __pyx_t_8; + int __pyx_t_7; + int __pyx_t_8; int __pyx_t_9; PyObject *__pyx_t_10 = NULL; int __pyx_lineno = 0; @@ -8918,67 +8682,67 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label int __pyx_clineno = 0; __Pyx_RefNannySetupContext("init_labels", 0); - /* "pyFAI/ext/watershed.pyx":284 + /* "pyFAI/ext/watershed.pyx":287 * def init_labels(self): * cdef: * int i, j, width = self.width, height = self.height, idx, res # <<<<<<<<<<<<<< * numpy.int32_t[:, :] labels = self.labels * dict regions = self.regions */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_width = __pyx_t_2; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_height = __pyx_t_2; - /* "pyFAI/ext/watershed.pyx":285 + /* "pyFAI/ext/watershed.pyx":288 * cdef: * int i, j, width = self.width, height = self.height, idx, res * numpy.int32_t[:, :] labels = self.labels # <<<<<<<<<<<<<< * dict regions = self.regions * Bilinear bilinear = self.bilinear */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int32_t(__pyx_t_1); - if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_labels = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; - /* "pyFAI/ext/watershed.pyx":286 + /* "pyFAI/ext/watershed.pyx":289 * int i, j, width = self.width, height = self.height, idx, res * numpy.int32_t[:, :] labels = self.labels * dict regions = self.regions # <<<<<<<<<<<<<< * Bilinear bilinear = self.bilinear * for i in range(height): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_regions = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":287 + /* "pyFAI/ext/watershed.pyx":290 * numpy.int32_t[:, :] labels = self.labels * dict regions = self.regions * Bilinear bilinear = self.bilinear # <<<<<<<<<<<<<< * for i in range(height): * for j in range(width): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bilinear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bilinear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Bilinear))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Bilinear))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_bilinear = ((struct __pyx_obj_5pyFAI_3ext_9watershed_Bilinear *)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":288 + /* "pyFAI/ext/watershed.pyx":291 * dict regions = self.regions * Bilinear bilinear = self.bilinear * for i in range(height): # <<<<<<<<<<<<<< @@ -8989,7 +8753,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_2; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "pyFAI/ext/watershed.pyx":289 + /* "pyFAI/ext/watershed.pyx":292 * Bilinear bilinear = self.bilinear * for i in range(height): * for j in range(width): # <<<<<<<<<<<<<< @@ -9000,7 +8764,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_j = __pyx_t_6; - /* "pyFAI/ext/watershed.pyx":290 + /* "pyFAI/ext/watershed.pyx":293 * for i in range(height): * for j in range(width): * idx = j + i * width # <<<<<<<<<<<<<< @@ -9009,7 +8773,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label */ __pyx_v_idx = (__pyx_v_j + (__pyx_v_i * __pyx_v_width)); - /* "pyFAI/ext/watershed.pyx":291 + /* "pyFAI/ext/watershed.pyx":294 * for j in range(width): * idx = j + i * width * res = bilinear.c_local_maxi(idx) # <<<<<<<<<<<<<< @@ -9018,7 +8782,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label */ __pyx_v_res = ((struct __pyx_vtabstruct_5pyFAI_3ext_9watershed_Bilinear *)__pyx_v_bilinear->__pyx_vtab)->c_local_maxi(__pyx_v_bilinear, __pyx_v_idx); - /* "pyFAI/ext/watershed.pyx":292 + /* "pyFAI/ext/watershed.pyx":295 * idx = j + i * width * res = bilinear.c_local_maxi(idx) * labels[i, j] += res # <<<<<<<<<<<<<< @@ -9029,7 +8793,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label __pyx_t_8 = __pyx_v_j; *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_7 * __pyx_v_labels.strides[0]) ) + __pyx_t_8 * __pyx_v_labels.strides[1]) )) += __pyx_v_res; - /* "pyFAI/ext/watershed.pyx":293 + /* "pyFAI/ext/watershed.pyx":296 * res = bilinear.c_local_maxi(idx) * labels[i, j] += res * if idx == res: # <<<<<<<<<<<<<< @@ -9039,47 +8803,41 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label __pyx_t_9 = ((__pyx_v_idx == __pyx_v_res) != 0); if (__pyx_t_9) { - /* "pyFAI/ext/watershed.pyx":294 + /* "pyFAI/ext/watershed.pyx":297 * labels[i, j] += res * if idx == res: * regions[res] = Region(res) # <<<<<<<<<<<<<< * * @cython.cdivision(True) */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_res); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_res); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5pyFAI_3ext_9watershed_Region), __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5pyFAI_3ext_9watershed_Region)), __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_res); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_res); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_t_10, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_t_10, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "pyFAI/ext/watershed.pyx":293 - * res = bilinear.c_local_maxi(idx) - * labels[i, j] += res - * if idx == res: # <<<<<<<<<<<<<< - * regions[res] = Region(res) - * - */ + goto __pyx_L7; } + __pyx_L7:; } } - /* "pyFAI/ext/watershed.pyx":282 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":285 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_labels(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res @@ -9103,9 +8861,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":299 - * @cython.boundscheck(False) +/* "pyFAI/ext/watershed.pyx":303 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_borders(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res @@ -9113,7 +8871,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_10init_label /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders = {"init_borders", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borders[] = "InverseWatershed.init_borders(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders = {"init_borders", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borders}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -9144,84 +8903,84 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; - Py_ssize_t __pyx_t_8; - Py_ssize_t __pyx_t_9; + int __pyx_t_8; + int __pyx_t_9; int __pyx_t_10; int __pyx_t_11; - Py_ssize_t __pyx_t_12; - Py_ssize_t __pyx_t_13; - Py_ssize_t __pyx_t_14; - Py_ssize_t __pyx_t_15; - Py_ssize_t __pyx_t_16; - Py_ssize_t __pyx_t_17; - Py_ssize_t __pyx_t_18; - Py_ssize_t __pyx_t_19; - Py_ssize_t __pyx_t_20; - Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - Py_ssize_t __pyx_t_23; - Py_ssize_t __pyx_t_24; - Py_ssize_t __pyx_t_25; - Py_ssize_t __pyx_t_26; - Py_ssize_t __pyx_t_27; - Py_ssize_t __pyx_t_28; - Py_ssize_t __pyx_t_29; + long __pyx_t_12; + long __pyx_t_13; + long __pyx_t_14; + int __pyx_t_15; + long __pyx_t_16; + long __pyx_t_17; + int __pyx_t_18; + long __pyx_t_19; + long __pyx_t_20; + long __pyx_t_21; + long __pyx_t_22; + int __pyx_t_23; + long __pyx_t_24; + long __pyx_t_25; + int __pyx_t_26; + long __pyx_t_27; + int __pyx_t_28; + int __pyx_t_29; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("init_borders", 0); - /* "pyFAI/ext/watershed.pyx":301 + /* "pyFAI/ext/watershed.pyx":305 * def init_borders(self): * cdef: * int i, j, width = self.width, height = self.height, idx, res # <<<<<<<<<<<<<< * numpy.int32_t[:, :] labels = self.labels * numpy.uint8_t[:, :] borders = self.borders */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_width = __pyx_t_2; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_height = __pyx_t_2; - /* "pyFAI/ext/watershed.pyx":302 + /* "pyFAI/ext/watershed.pyx":306 * cdef: * int i, j, width = self.width, height = self.height, idx, res * numpy.int32_t[:, :] labels = self.labels # <<<<<<<<<<<<<< * numpy.uint8_t[:, :] borders = self.borders * numpy.uint8_t neighb */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int32_t(__pyx_t_1); - if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_labels = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; - /* "pyFAI/ext/watershed.pyx":303 + /* "pyFAI/ext/watershed.pyx":307 * int i, j, width = self.width, height = self.height, idx, res * numpy.int32_t[:, :] labels = self.labels * numpy.uint8_t[:, :] borders = self.borders # <<<<<<<<<<<<<< * numpy.uint8_t neighb * for i in range(height): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_borders); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_borders); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1); - if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_borders = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; - /* "pyFAI/ext/watershed.pyx":305 + /* "pyFAI/ext/watershed.pyx":309 * numpy.uint8_t[:, :] borders = self.borders * numpy.uint8_t neighb * for i in range(height): # <<<<<<<<<<<<<< @@ -9232,7 +8991,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_2; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":306 + /* "pyFAI/ext/watershed.pyx":310 * numpy.uint8_t neighb * for i in range(height): * for j in range(width): # <<<<<<<<<<<<<< @@ -9243,7 +9002,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_j = __pyx_t_7; - /* "pyFAI/ext/watershed.pyx":307 + /* "pyFAI/ext/watershed.pyx":311 * for i in range(height): * for j in range(width): * neighb = 0 # <<<<<<<<<<<<<< @@ -9252,7 +9011,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde */ __pyx_v_neighb = 0; - /* "pyFAI/ext/watershed.pyx":308 + /* "pyFAI/ext/watershed.pyx":312 * for j in range(width): * neighb = 0 * idx = j + i * width # <<<<<<<<<<<<<< @@ -9261,7 +9020,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde */ __pyx_v_idx = (__pyx_v_j + (__pyx_v_i * __pyx_v_width)); - /* "pyFAI/ext/watershed.pyx":309 + /* "pyFAI/ext/watershed.pyx":313 * neighb = 0 * idx = j + i * width * res = labels[i, j] # <<<<<<<<<<<<<< @@ -9272,7 +9031,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_t_9 = __pyx_v_j; __pyx_v_res = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_8 * __pyx_v_labels.strides[0]) ) + __pyx_t_9 * __pyx_v_labels.strides[1]) ))); - /* "pyFAI/ext/watershed.pyx":310 + /* "pyFAI/ext/watershed.pyx":314 * idx = j + i * width * res = labels[i, j] * if (i > 0) and (j > 0) and (labels[i - 1, j - 1] != res): # <<<<<<<<<<<<<< @@ -9298,7 +9057,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L8_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":311 + /* "pyFAI/ext/watershed.pyx":315 * res = labels[i, j] * if (i > 0) and (j > 0) and (labels[i - 1, j - 1] != res): * neighb |= 1 # <<<<<<<<<<<<<< @@ -9306,17 +9065,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde * neighb |= 1 << 1 */ __pyx_v_neighb = (__pyx_v_neighb | 1); - - /* "pyFAI/ext/watershed.pyx":310 - * idx = j + i * width - * res = labels[i, j] - * if (i > 0) and (j > 0) and (labels[i - 1, j - 1] != res): # <<<<<<<<<<<<<< - * neighb |= 1 - * if (i > 0) and (labels[i - 1, j] != res): - */ + goto __pyx_L7; } + __pyx_L7:; - /* "pyFAI/ext/watershed.pyx":312 + /* "pyFAI/ext/watershed.pyx":316 * if (i > 0) and (j > 0) and (labels[i - 1, j - 1] != res): * neighb |= 1 * if (i > 0) and (labels[i - 1, j] != res): # <<<<<<<<<<<<<< @@ -9336,7 +9089,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L12_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":313 + /* "pyFAI/ext/watershed.pyx":317 * neighb |= 1 * if (i > 0) and (labels[i - 1, j] != res): * neighb |= 1 << 1 # <<<<<<<<<<<<<< @@ -9344,17 +9097,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde * neighb |= 1 << 2 */ __pyx_v_neighb = (__pyx_v_neighb | 2); - - /* "pyFAI/ext/watershed.pyx":312 - * if (i > 0) and (j > 0) and (labels[i - 1, j - 1] != res): - * neighb |= 1 - * if (i > 0) and (labels[i - 1, j] != res): # <<<<<<<<<<<<<< - * neighb |= 1 << 1 - * if (i > 0) and (j < (width - 1)) and (labels[i - 1, j + 1] != res): - */ + goto __pyx_L11; } + __pyx_L11:; - /* "pyFAI/ext/watershed.pyx":314 + /* "pyFAI/ext/watershed.pyx":318 * if (i > 0) and (labels[i - 1, j] != res): * neighb |= 1 << 1 * if (i > 0) and (j < (width - 1)) and (labels[i - 1, j + 1] != res): # <<<<<<<<<<<<<< @@ -9380,7 +9127,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L15_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":315 + /* "pyFAI/ext/watershed.pyx":319 * neighb |= 1 << 1 * if (i > 0) and (j < (width - 1)) and (labels[i - 1, j + 1] != res): * neighb |= 1 << 2 # <<<<<<<<<<<<<< @@ -9388,17 +9135,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde * neighb |= 1 << 3 */ __pyx_v_neighb = (__pyx_v_neighb | 4); - - /* "pyFAI/ext/watershed.pyx":314 - * if (i > 0) and (labels[i - 1, j] != res): - * neighb |= 1 << 1 - * if (i > 0) and (j < (width - 1)) and (labels[i - 1, j + 1] != res): # <<<<<<<<<<<<<< - * neighb |= 1 << 2 - * if (j < (width - 1)) and (labels[i, j + 1] != res): - */ + goto __pyx_L14; } + __pyx_L14:; - /* "pyFAI/ext/watershed.pyx":316 + /* "pyFAI/ext/watershed.pyx":320 * if (i > 0) and (j < (width - 1)) and (labels[i - 1, j + 1] != res): * neighb |= 1 << 2 * if (j < (width - 1)) and (labels[i, j + 1] != res): # <<<<<<<<<<<<<< @@ -9418,7 +9159,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L19_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":317 + /* "pyFAI/ext/watershed.pyx":321 * neighb |= 1 << 2 * if (j < (width - 1)) and (labels[i, j + 1] != res): * neighb |= 1 << 3 # <<<<<<<<<<<<<< @@ -9426,17 +9167,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde * neighb |= 1 << 4 */ __pyx_v_neighb = (__pyx_v_neighb | 8); - - /* "pyFAI/ext/watershed.pyx":316 - * if (i > 0) and (j < (width - 1)) and (labels[i - 1, j + 1] != res): - * neighb |= 1 << 2 - * if (j < (width - 1)) and (labels[i, j + 1] != res): # <<<<<<<<<<<<<< - * neighb |= 1 << 3 - * if (i < (height - 1)) and (j < (width - 1)) and (labels[i + 1, j + 1] != res): - */ + goto __pyx_L18; } + __pyx_L18:; - /* "pyFAI/ext/watershed.pyx":318 + /* "pyFAI/ext/watershed.pyx":322 * if (j < (width - 1)) and (labels[i, j + 1] != res): * neighb |= 1 << 3 * if (i < (height - 1)) and (j < (width - 1)) and (labels[i + 1, j + 1] != res): # <<<<<<<<<<<<<< @@ -9462,7 +9197,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L22_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":319 + /* "pyFAI/ext/watershed.pyx":323 * neighb |= 1 << 3 * if (i < (height - 1)) and (j < (width - 1)) and (labels[i + 1, j + 1] != res): * neighb |= 1 << 4 # <<<<<<<<<<<<<< @@ -9470,17 +9205,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde * neighb |= 1 << 5 */ __pyx_v_neighb = (__pyx_v_neighb | 16); - - /* "pyFAI/ext/watershed.pyx":318 - * if (j < (width - 1)) and (labels[i, j + 1] != res): - * neighb |= 1 << 3 - * if (i < (height - 1)) and (j < (width - 1)) and (labels[i + 1, j + 1] != res): # <<<<<<<<<<<<<< - * neighb |= 1 << 4 - * if (i < (height - 1)) and (labels[i + 1, j] != res): - */ + goto __pyx_L21; } + __pyx_L21:; - /* "pyFAI/ext/watershed.pyx":320 + /* "pyFAI/ext/watershed.pyx":324 * if (i < (height - 1)) and (j < (width - 1)) and (labels[i + 1, j + 1] != res): * neighb |= 1 << 4 * if (i < (height - 1)) and (labels[i + 1, j] != res): # <<<<<<<<<<<<<< @@ -9500,7 +9229,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L26_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":321 + /* "pyFAI/ext/watershed.pyx":325 * neighb |= 1 << 4 * if (i < (height - 1)) and (labels[i + 1, j] != res): * neighb |= 1 << 5 # <<<<<<<<<<<<<< @@ -9508,17 +9237,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde * neighb |= 1 << 6 */ __pyx_v_neighb = (__pyx_v_neighb | 32); - - /* "pyFAI/ext/watershed.pyx":320 - * if (i < (height - 1)) and (j < (width - 1)) and (labels[i + 1, j + 1] != res): - * neighb |= 1 << 4 - * if (i < (height - 1)) and (labels[i + 1, j] != res): # <<<<<<<<<<<<<< - * neighb |= 1 << 5 - * if (i < (height - 1)) and (j > 0) and (labels[i + 1, j - 1] != res): - */ + goto __pyx_L25; } + __pyx_L25:; - /* "pyFAI/ext/watershed.pyx":322 + /* "pyFAI/ext/watershed.pyx":326 * if (i < (height - 1)) and (labels[i + 1, j] != res): * neighb |= 1 << 5 * if (i < (height - 1)) and (j > 0) and (labels[i + 1, j - 1] != res): # <<<<<<<<<<<<<< @@ -9544,7 +9267,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L29_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":323 + /* "pyFAI/ext/watershed.pyx":327 * neighb |= 1 << 5 * if (i < (height - 1)) and (j > 0) and (labels[i + 1, j - 1] != res): * neighb |= 1 << 6 # <<<<<<<<<<<<<< @@ -9552,17 +9275,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde * neighb |= 1 << 7 */ __pyx_v_neighb = (__pyx_v_neighb | 64); - - /* "pyFAI/ext/watershed.pyx":322 - * if (i < (height - 1)) and (labels[i + 1, j] != res): - * neighb |= 1 << 5 - * if (i < (height - 1)) and (j > 0) and (labels[i + 1, j - 1] != res): # <<<<<<<<<<<<<< - * neighb |= 1 << 6 - * if (j > 0) and (labels[i, j - 1] != res): - */ + goto __pyx_L28; } + __pyx_L28:; - /* "pyFAI/ext/watershed.pyx":324 + /* "pyFAI/ext/watershed.pyx":328 * if (i < (height - 1)) and (j > 0) and (labels[i + 1, j - 1] != res): * neighb |= 1 << 6 * if (j > 0) and (labels[i, j - 1] != res): # <<<<<<<<<<<<<< @@ -9582,25 +9299,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde __pyx_L33_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":325 + /* "pyFAI/ext/watershed.pyx":329 * neighb |= 1 << 6 * if (j > 0) and (labels[i, j - 1] != res): * neighb |= 1 << 7 # <<<<<<<<<<<<<< * borders[i, j] = neighb * */ - __pyx_v_neighb = (__pyx_v_neighb | 0x80); - - /* "pyFAI/ext/watershed.pyx":324 - * if (i < (height - 1)) and (j > 0) and (labels[i + 1, j - 1] != res): - * neighb |= 1 << 6 - * if (j > 0) and (labels[i, j - 1] != res): # <<<<<<<<<<<<<< - * neighb |= 1 << 7 - * borders[i, j] = neighb - */ + __pyx_v_neighb = (__pyx_v_neighb | 128); + goto __pyx_L32; } + __pyx_L32:; - /* "pyFAI/ext/watershed.pyx":326 + /* "pyFAI/ext/watershed.pyx":330 * if (j > 0) and (labels[i, j - 1] != res): * neighb |= 1 << 7 * borders[i, j] = neighb # <<<<<<<<<<<<<< @@ -9613,9 +9324,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde } } - /* "pyFAI/ext/watershed.pyx":299 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":303 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_borders(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res @@ -9638,9 +9349,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":331 - * @cython.boundscheck(False) +/* "pyFAI/ext/watershed.pyx":336 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_regions(self): # <<<<<<<<<<<<<< * cdef: * int i, j, idx, res @@ -9648,7 +9359,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_12init_borde /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions = {"init_regions", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regions[] = "InverseWatershed.init_regions(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions = {"init_regions", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regions}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -9681,115 +9393,115 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; - Py_ssize_t __pyx_t_8; - Py_ssize_t __pyx_t_9; - Py_ssize_t __pyx_t_10; - Py_ssize_t __pyx_t_11; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_t_10; + int __pyx_t_11; PyObject *__pyx_t_12 = NULL; int __pyx_t_13; int __pyx_t_14; - Py_ssize_t __pyx_t_15; - Py_ssize_t __pyx_t_16; - Py_ssize_t __pyx_t_17; - Py_ssize_t __pyx_t_18; - Py_ssize_t __pyx_t_19; - Py_ssize_t __pyx_t_20; - Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - Py_ssize_t __pyx_t_23; - Py_ssize_t __pyx_t_24; - Py_ssize_t __pyx_t_25; - Py_ssize_t __pyx_t_26; - Py_ssize_t __pyx_t_27; - Py_ssize_t __pyx_t_28; - Py_ssize_t __pyx_t_29; - Py_ssize_t __pyx_t_30; + long __pyx_t_15; + int __pyx_t_16; + int __pyx_t_17; + long __pyx_t_18; + long __pyx_t_19; + int __pyx_t_20; + int __pyx_t_21; + long __pyx_t_22; + long __pyx_t_23; + long __pyx_t_24; + long __pyx_t_25; + long __pyx_t_26; + long __pyx_t_27; + long __pyx_t_28; + long __pyx_t_29; + long __pyx_t_30; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("init_regions", 0); - /* "pyFAI/ext/watershed.pyx":334 + /* "pyFAI/ext/watershed.pyx":339 * cdef: * int i, j, idx, res - * numpy.int32_t[:, :] labels = self.labels # <<<<<<<<<<<<<< - * numpy.uint8_t[:, :] borders = self.borders + * numpy.int32_t[:, ::1] labels = self.labels # <<<<<<<<<<<<<< + * numpy.uint8_t[:, ::1] borders = self.borders * numpy.uint8_t neighb = 0 */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int32_t(__pyx_t_1); - if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(__pyx_t_1); + if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_labels = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; - /* "pyFAI/ext/watershed.pyx":335 + /* "pyFAI/ext/watershed.pyx":340 * int i, j, idx, res - * numpy.int32_t[:, :] labels = self.labels - * numpy.uint8_t[:, :] borders = self.borders # <<<<<<<<<<<<<< + * numpy.int32_t[:, ::1] labels = self.labels + * numpy.uint8_t[:, ::1] borders = self.borders # <<<<<<<<<<<<<< * numpy.uint8_t neighb = 0 * Region region */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_borders); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_borders); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1); - if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_1); + if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_borders = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; - /* "pyFAI/ext/watershed.pyx":336 - * numpy.int32_t[:, :] labels = self.labels - * numpy.uint8_t[:, :] borders = self.borders + /* "pyFAI/ext/watershed.pyx":341 + * numpy.int32_t[:, ::1] labels = self.labels + * numpy.uint8_t[:, ::1] borders = self.borders * numpy.uint8_t neighb = 0 # <<<<<<<<<<<<<< * Region region * dict regions = self.regions */ __pyx_v_neighb = 0; - /* "pyFAI/ext/watershed.pyx":338 + /* "pyFAI/ext/watershed.pyx":343 * numpy.uint8_t neighb = 0 * Region region * dict regions = self.regions # <<<<<<<<<<<<<< * int width = self.width * int height = self.height */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_regions = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":339 + /* "pyFAI/ext/watershed.pyx":344 * Region region * dict regions = self.regions * int width = self.width # <<<<<<<<<<<<<< * int height = self.height * for i in range(height): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_width = __pyx_t_4; - /* "pyFAI/ext/watershed.pyx":340 + /* "pyFAI/ext/watershed.pyx":345 * dict regions = self.regions * int width = self.width * int height = self.height # <<<<<<<<<<<<<< * for i in range(height): * for j in range(width): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_height); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_height = __pyx_t_4; - /* "pyFAI/ext/watershed.pyx":341 + /* "pyFAI/ext/watershed.pyx":346 * int width = self.width * int height = self.height * for i in range(height): # <<<<<<<<<<<<<< @@ -9800,7 +9512,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":342 + /* "pyFAI/ext/watershed.pyx":347 * int height = self.height * for i in range(height): * for j in range(width): # <<<<<<<<<<<<<< @@ -9811,7 +9523,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_j = __pyx_t_7; - /* "pyFAI/ext/watershed.pyx":343 + /* "pyFAI/ext/watershed.pyx":348 * for i in range(height): * for j in range(width): * idx = j + i * width # <<<<<<<<<<<<<< @@ -9820,7 +9532,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ __pyx_v_idx = (__pyx_v_j + (__pyx_v_i * __pyx_v_width)); - /* "pyFAI/ext/watershed.pyx":344 + /* "pyFAI/ext/watershed.pyx":349 * for j in range(width): * idx = j + i * width * neighb = borders[i, j] # <<<<<<<<<<<<<< @@ -9829,9 +9541,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ __pyx_t_8 = __pyx_v_i; __pyx_t_9 = __pyx_v_j; - __pyx_v_neighb = (*((__pyx_t_5numpy_uint8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_borders.data + __pyx_t_8 * __pyx_v_borders.strides[0]) ) + __pyx_t_9 * __pyx_v_borders.strides[1]) ))); + __pyx_v_neighb = (*((__pyx_t_5numpy_uint8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_borders.data + __pyx_t_8 * __pyx_v_borders.strides[0]) )) + __pyx_t_9)) ))); - /* "pyFAI/ext/watershed.pyx":345 + /* "pyFAI/ext/watershed.pyx":350 * idx = j + i * width * neighb = borders[i, j] * res = labels[i, j] # <<<<<<<<<<<<<< @@ -9840,9 +9552,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ __pyx_t_10 = __pyx_v_i; __pyx_t_11 = __pyx_v_j; - __pyx_v_res = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_10 * __pyx_v_labels.strides[0]) ) + __pyx_t_11 * __pyx_v_labels.strides[1]) ))); + __pyx_v_res = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_10 * __pyx_v_labels.strides[0]) )) + __pyx_t_11)) ))); - /* "pyFAI/ext/watershed.pyx":346 + /* "pyFAI/ext/watershed.pyx":351 * neighb = borders[i, j] * res = labels[i, j] * region = regions[res] # <<<<<<<<<<<<<< @@ -9851,18 +9563,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_res); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_res); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_12 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_12 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_12)); __pyx_t_12 = 0; - /* "pyFAI/ext/watershed.pyx":347 + /* "pyFAI/ext/watershed.pyx":352 * res = labels[i, j] * region = regions[res] * region.size += 1 # <<<<<<<<<<<<<< @@ -9871,7 +9583,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ __pyx_v_region->size = (__pyx_v_region->size + 1); - /* "pyFAI/ext/watershed.pyx":348 + /* "pyFAI/ext/watershed.pyx":353 * region = regions[res] * region.size += 1 * if neighb == 0: # <<<<<<<<<<<<<< @@ -9881,7 +9593,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = ((__pyx_v_neighb == 0) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":349 + /* "pyFAI/ext/watershed.pyx":354 * region.size += 1 * if neighb == 0: * continue # <<<<<<<<<<<<<< @@ -9889,17 +9601,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio * if get_bit(neighb, 1): */ goto __pyx_L5_continue; - - /* "pyFAI/ext/watershed.pyx":348 - * region = regions[res] - * region.size += 1 - * if neighb == 0: # <<<<<<<<<<<<<< - * continue - * region.border.append(idx) - */ } - /* "pyFAI/ext/watershed.pyx":350 + /* "pyFAI/ext/watershed.pyx":355 * if neighb == 0: * continue * region.border.append(idx) # <<<<<<<<<<<<<< @@ -9908,14 +9612,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->border == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->border, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->border, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - /* "pyFAI/ext/watershed.pyx":351 + /* "pyFAI/ext/watershed.pyx":356 * continue * region.border.append(idx) * if get_bit(neighb, 1): # <<<<<<<<<<<<<< @@ -9925,7 +9629,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 1) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":352 + /* "pyFAI/ext/watershed.pyx":357 * region.border.append(idx) * if get_bit(neighb, 1): * region.neighbors.append(labels[i - 1, j]) # <<<<<<<<<<<<<< @@ -9934,26 +9638,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_15 = (__pyx_v_i - 1); __pyx_t_16 = __pyx_v_j; - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_15 * __pyx_v_labels.strides[0]) ) + __pyx_t_16 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_15 * __pyx_v_labels.strides[0]) )) + __pyx_t_16)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "pyFAI/ext/watershed.pyx":351 - * continue - * region.border.append(idx) - * if get_bit(neighb, 1): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i - 1, j]) - * elif get_bit(neighb, 3): - */ goto __pyx_L8; } - /* "pyFAI/ext/watershed.pyx":353 + /* "pyFAI/ext/watershed.pyx":358 * if get_bit(neighb, 1): * region.neighbors.append(labels[i - 1, j]) * elif get_bit(neighb, 3): # <<<<<<<<<<<<<< @@ -9963,7 +9659,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 3) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":354 + /* "pyFAI/ext/watershed.pyx":359 * region.neighbors.append(labels[i - 1, j]) * elif get_bit(neighb, 3): * region.neighbors.append(labels[i, j + 1]) # <<<<<<<<<<<<<< @@ -9972,26 +9668,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_17 = __pyx_v_i; __pyx_t_18 = (__pyx_v_j + 1); - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_17 * __pyx_v_labels.strides[0]) ) + __pyx_t_18 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_17 * __pyx_v_labels.strides[0]) )) + __pyx_t_18)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "pyFAI/ext/watershed.pyx":353 - * if get_bit(neighb, 1): - * region.neighbors.append(labels[i - 1, j]) - * elif get_bit(neighb, 3): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i, j + 1]) - * elif get_bit(neighb, 5): - */ goto __pyx_L8; } - /* "pyFAI/ext/watershed.pyx":355 + /* "pyFAI/ext/watershed.pyx":360 * elif get_bit(neighb, 3): * region.neighbors.append(labels[i, j + 1]) * elif get_bit(neighb, 5): # <<<<<<<<<<<<<< @@ -10001,7 +9689,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 5) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":356 + /* "pyFAI/ext/watershed.pyx":361 * region.neighbors.append(labels[i, j + 1]) * elif get_bit(neighb, 5): * region.neighbors.append(labels[i + 1, j]) # <<<<<<<<<<<<<< @@ -10010,26 +9698,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_19 = (__pyx_v_i + 1); __pyx_t_20 = __pyx_v_j; - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_19 * __pyx_v_labels.strides[0]) ) + __pyx_t_20 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_19 * __pyx_v_labels.strides[0]) )) + __pyx_t_20)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "pyFAI/ext/watershed.pyx":355 - * elif get_bit(neighb, 3): - * region.neighbors.append(labels[i, j + 1]) - * elif get_bit(neighb, 5): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i + 1, j]) - * elif get_bit(neighb, 7): - */ goto __pyx_L8; } - /* "pyFAI/ext/watershed.pyx":357 + /* "pyFAI/ext/watershed.pyx":362 * elif get_bit(neighb, 5): * region.neighbors.append(labels[i + 1, j]) * elif get_bit(neighb, 7): # <<<<<<<<<<<<<< @@ -10039,7 +9719,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 7) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":358 + /* "pyFAI/ext/watershed.pyx":363 * region.neighbors.append(labels[i + 1, j]) * elif get_bit(neighb, 7): * region.neighbors.append(labels[i, j - 1]) # <<<<<<<<<<<<<< @@ -10048,26 +9728,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_21 = __pyx_v_i; __pyx_t_22 = (__pyx_v_j - 1); - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_21 * __pyx_v_labels.strides[0]) ) + __pyx_t_22 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_21 * __pyx_v_labels.strides[0]) )) + __pyx_t_22)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "pyFAI/ext/watershed.pyx":357 - * elif get_bit(neighb, 5): - * region.neighbors.append(labels[i + 1, j]) - * elif get_bit(neighb, 7): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i, j - 1]) - * elif get_bit(neighb, 0): - */ goto __pyx_L8; } - /* "pyFAI/ext/watershed.pyx":359 + /* "pyFAI/ext/watershed.pyx":364 * elif get_bit(neighb, 7): * region.neighbors.append(labels[i, j - 1]) * elif get_bit(neighb, 0): # <<<<<<<<<<<<<< @@ -10077,7 +9749,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 0) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":360 + /* "pyFAI/ext/watershed.pyx":365 * region.neighbors.append(labels[i, j - 1]) * elif get_bit(neighb, 0): * region.neighbors.append(labels[i - 1, j - 1]) # <<<<<<<<<<<<<< @@ -10086,26 +9758,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_23 = (__pyx_v_i - 1); __pyx_t_24 = (__pyx_v_j - 1); - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_23 * __pyx_v_labels.strides[0]) ) + __pyx_t_24 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_23 * __pyx_v_labels.strides[0]) )) + __pyx_t_24)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "pyFAI/ext/watershed.pyx":359 - * elif get_bit(neighb, 7): - * region.neighbors.append(labels[i, j - 1]) - * elif get_bit(neighb, 0): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i - 1, j - 1]) - * elif get_bit(neighb, 2): - */ goto __pyx_L8; } - /* "pyFAI/ext/watershed.pyx":361 + /* "pyFAI/ext/watershed.pyx":366 * elif get_bit(neighb, 0): * region.neighbors.append(labels[i - 1, j - 1]) * elif get_bit(neighb, 2): # <<<<<<<<<<<<<< @@ -10115,7 +9779,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 2) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":362 + /* "pyFAI/ext/watershed.pyx":367 * region.neighbors.append(labels[i - 1, j - 1]) * elif get_bit(neighb, 2): * region.neighbors.append(labels[i - 1, j + 1]) # <<<<<<<<<<<<<< @@ -10124,27 +9788,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_25 = (__pyx_v_i - 1); __pyx_t_26 = (__pyx_v_j + 1); - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_25 * __pyx_v_labels.strides[0]) ) + __pyx_t_26 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_25 * __pyx_v_labels.strides[0]) )) + __pyx_t_26)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + goto __pyx_L8; + } - /* "pyFAI/ext/watershed.pyx":361 - * elif get_bit(neighb, 0): - * region.neighbors.append(labels[i - 1, j - 1]) - * elif get_bit(neighb, 2): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i - 1, j + 1]) - * elif get_bit(neighb, 4): - */ - goto __pyx_L8; - } - - /* "pyFAI/ext/watershed.pyx":363 - * elif get_bit(neighb, 2): + /* "pyFAI/ext/watershed.pyx":368 + * elif get_bit(neighb, 2): * region.neighbors.append(labels[i - 1, j + 1]) * elif get_bit(neighb, 4): # <<<<<<<<<<<<<< * region.neighbors.append(labels[i + 1, j + 1]) @@ -10153,7 +9809,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 4) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":364 + /* "pyFAI/ext/watershed.pyx":369 * region.neighbors.append(labels[i - 1, j + 1]) * elif get_bit(neighb, 4): * region.neighbors.append(labels[i + 1, j + 1]) # <<<<<<<<<<<<<< @@ -10162,26 +9818,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_27 = (__pyx_v_i + 1); __pyx_t_28 = (__pyx_v_j + 1); - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_27 * __pyx_v_labels.strides[0]) ) + __pyx_t_28 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_27 * __pyx_v_labels.strides[0]) )) + __pyx_t_28)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "pyFAI/ext/watershed.pyx":363 - * elif get_bit(neighb, 2): - * region.neighbors.append(labels[i - 1, j + 1]) - * elif get_bit(neighb, 4): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i + 1, j + 1]) - * elif get_bit(neighb, 6): - */ goto __pyx_L8; } - /* "pyFAI/ext/watershed.pyx":365 + /* "pyFAI/ext/watershed.pyx":370 * elif get_bit(neighb, 4): * region.neighbors.append(labels[i + 1, j + 1]) * elif get_bit(neighb, 6): # <<<<<<<<<<<<<< @@ -10191,7 +9839,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio __pyx_t_13 = (__pyx_f_5pyFAI_3ext_9watershed_get_bit(__pyx_v_neighb, 6) != 0); if (__pyx_t_13) { - /* "pyFAI/ext/watershed.pyx":366 + /* "pyFAI/ext/watershed.pyx":371 * region.neighbors.append(labels[i + 1, j + 1]) * elif get_bit(neighb, 6): * region.neighbors.append(labels[i + 1, j - 1]) # <<<<<<<<<<<<<< @@ -10200,31 +9848,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio */ if (unlikely(__pyx_v_region->neighbors == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_29 = (__pyx_v_i + 1); __pyx_t_30 = (__pyx_v_j - 1); - __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_29 * __pyx_v_labels.strides[0]) ) + __pyx_t_30 * __pyx_v_labels.strides[1]) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyInt_From_npy_int32((*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_29 * __pyx_v_labels.strides[0]) )) + __pyx_t_30)) )))); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_region->neighbors, __pyx_t_12); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "pyFAI/ext/watershed.pyx":365 - * elif get_bit(neighb, 4): - * region.neighbors.append(labels[i + 1, j + 1]) - * elif get_bit(neighb, 6): # <<<<<<<<<<<<<< - * region.neighbors.append(labels[i + 1, j - 1]) - * - */ + goto __pyx_L8; } __pyx_L8:; __pyx_L5_continue:; } } - /* "pyFAI/ext/watershed.pyx":331 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":336 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_regions(self): # <<<<<<<<<<<<<< * cdef: * int i, j, idx, res @@ -10250,7 +9891,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":371 +/* "pyFAI/ext/watershed.pyx":376 * @cython.boundscheck(False) * @cython.wraparound(False) * def init_pass(self): # <<<<<<<<<<<<<< @@ -10260,7 +9901,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_14init_regio /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass = {"init_pass", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass, METH_O, 0}; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass[] = "InverseWatershed.init_pass(self)"; +static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass = {"init_pass", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations @@ -10295,16 +9937,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( int __pyx_clineno = 0; __Pyx_RefNannySetupContext("init_pass", 0); - /* "pyFAI/ext/watershed.pyx":374 + /* "pyFAI/ext/watershed.pyx":379 * cdef: * int i, j, k, imax, imin - * float[:] flat = self.data.ravel() # <<<<<<<<<<<<<< + * float[::1] flat = self.data.ravel() # <<<<<<<<<<<<<< * numpy.uint8_t neighb = 0 * Region region */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -10318,56 +9960,56 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( } } if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1); - if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_1); + if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_flat = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; - /* "pyFAI/ext/watershed.pyx":375 + /* "pyFAI/ext/watershed.pyx":380 * int i, j, k, imax, imin - * float[:] flat = self.data.ravel() + * float[::1] flat = self.data.ravel() * numpy.uint8_t neighb = 0 # <<<<<<<<<<<<<< * Region region * dict regions = self.regions */ __pyx_v_neighb = 0; - /* "pyFAI/ext/watershed.pyx":377 + /* "pyFAI/ext/watershed.pyx":382 * numpy.uint8_t neighb = 0 * Region region * dict regions = self.regions # <<<<<<<<<<<<<< * float val, maxi, mini * int width = self.width */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_regions = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":379 + /* "pyFAI/ext/watershed.pyx":384 * dict regions = self.regions * float val, maxi, mini * int width = self.width # <<<<<<<<<<<<<< * for region in list(regions.values()): * if region.init_values(flat): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_width = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":380 + /* "pyFAI/ext/watershed.pyx":385 * float val, maxi, mini * int width = self.width * for region in list(regions.values()): # <<<<<<<<<<<<<< @@ -10376,37 +10018,41 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; + if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_3)); - __pyx_t_3 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1)); + __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":381 + /* "pyFAI/ext/watershed.pyx":386 * int width = self.width * for region in list(regions.values()): * if region.init_values(flat): # <<<<<<<<<<<<<< * regions.pop(region.index) * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -10419,35 +10065,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( } } if (!__pyx_t_8) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL; PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":382 + /* "pyFAI/ext/watershed.pyx":387 * for region in list(regions.values()): * if region.init_values(flat): * regions.pop(region.index) # <<<<<<<<<<<<<< * * def merge_singleton(self): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_regions, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_regions, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_region->index); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_region->index); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -10460,33 +10106,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( } } if (!__pyx_t_7) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "pyFAI/ext/watershed.pyx":381 - * int width = self.width - * for region in list(regions.values()): - * if region.init_values(flat): # <<<<<<<<<<<<<< - * regions.pop(region.index) - * - */ + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L5; } + __pyx_L5:; - /* "pyFAI/ext/watershed.pyx":380 + /* "pyFAI/ext/watershed.pyx":385 * float val, maxi, mini * int width = self.width * for region in list(regions.values()): # <<<<<<<<<<<<<< @@ -10494,9 +10134,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( * regions.pop(region.index) */ } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/watershed.pyx":371 + /* "pyFAI/ext/watershed.pyx":376 * @cython.boundscheck(False) * @cython.wraparound(False) * def init_pass(self): # <<<<<<<<<<<<<< @@ -10526,7 +10166,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":384 +/* "pyFAI/ext/watershed.pyx":389 * regions.pop(region.index) * * def merge_singleton(self): # <<<<<<<<<<<<<< @@ -10536,7 +10176,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_16init_pass( /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_19merge_singleton(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_singleton[] = "merge single pixel region"; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_singleton[] = "InverseWatershed.merge_singleton(self)\nmerge single pixel region"; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_19merge_singleton = {"merge_singleton", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_19merge_singleton, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_singleton}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_19merge_singleton(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -10580,41 +10220,41 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; Py_ssize_t __pyx_t_9; int __pyx_t_10; - Py_ssize_t __pyx_t_11; - Py_ssize_t __pyx_t_12; + int __pyx_t_11; + int __pyx_t_12; int __pyx_t_13; - Py_ssize_t __pyx_t_14; - Py_ssize_t __pyx_t_15; - Py_ssize_t __pyx_t_16; - Py_ssize_t __pyx_t_17; - Py_ssize_t __pyx_t_18; - Py_ssize_t __pyx_t_19; - Py_ssize_t __pyx_t_20; - Py_ssize_t __pyx_t_21; - Py_ssize_t __pyx_t_22; - Py_ssize_t __pyx_t_23; - Py_ssize_t __pyx_t_24; - Py_ssize_t __pyx_t_25; - Py_ssize_t __pyx_t_26; - Py_ssize_t __pyx_t_27; - Py_ssize_t __pyx_t_28; - Py_ssize_t __pyx_t_29; - Py_ssize_t __pyx_t_30; - Py_ssize_t __pyx_t_31; - Py_ssize_t __pyx_t_32; - Py_ssize_t __pyx_t_33; - Py_ssize_t __pyx_t_34; - Py_ssize_t __pyx_t_35; - Py_ssize_t __pyx_t_36; - Py_ssize_t __pyx_t_37; - Py_ssize_t __pyx_t_38; - Py_ssize_t __pyx_t_39; - Py_ssize_t __pyx_t_40; - Py_ssize_t __pyx_t_41; - Py_ssize_t __pyx_t_42; - Py_ssize_t __pyx_t_43; - Py_ssize_t __pyx_t_44; - Py_ssize_t __pyx_t_45; + long __pyx_t_14; + int __pyx_t_15; + long __pyx_t_16; + int __pyx_t_17; + long __pyx_t_18; + int __pyx_t_19; + long __pyx_t_20; + int __pyx_t_21; + long __pyx_t_22; + int __pyx_t_23; + long __pyx_t_24; + int __pyx_t_25; + long __pyx_t_26; + int __pyx_t_27; + long __pyx_t_28; + int __pyx_t_29; + long __pyx_t_30; + long __pyx_t_31; + long __pyx_t_32; + long __pyx_t_33; + long __pyx_t_34; + long __pyx_t_35; + long __pyx_t_36; + long __pyx_t_37; + long __pyx_t_38; + long __pyx_t_39; + long __pyx_t_40; + long __pyx_t_41; + long __pyx_t_42; + long __pyx_t_43; + long __pyx_t_44; + long __pyx_t_45; Py_ssize_t __pyx_t_46; float __pyx_t_47; PyObject *__pyx_t_48 = NULL; @@ -10625,20 +10265,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing int __pyx_clineno = 0; __Pyx_RefNannySetupContext("merge_singleton", 0); - /* "pyFAI/ext/watershed.pyx":389 + /* "pyFAI/ext/watershed.pyx":394 * int idx, i, j, key, key1 * Region region1, region2, region * dict regions = self.regions # <<<<<<<<<<<<<< * numpy.uint8_t neighb = 0 * float ref = 0.0 */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_regions = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":390 + /* "pyFAI/ext/watershed.pyx":395 * Region region1, region2, region * dict regions = self.regions * numpy.uint8_t neighb = 0 # <<<<<<<<<<<<<< @@ -10647,86 +10287,86 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_v_neighb = 0; - /* "pyFAI/ext/watershed.pyx":391 + /* "pyFAI/ext/watershed.pyx":396 * dict regions = self.regions * numpy.uint8_t neighb = 0 * float ref = 0.0 # <<<<<<<<<<<<<< * float[:, :] data = self.data - * numpy.int32_t[:, :] labels = self.labels + * numpy.int32_t[:, ::1] labels = self.labels */ __pyx_v_ref = 0.0; - /* "pyFAI/ext/watershed.pyx":392 + /* "pyFAI/ext/watershed.pyx":397 * numpy.uint8_t neighb = 0 * float ref = 0.0 * float[:, :] data = self.data # <<<<<<<<<<<<<< - * numpy.int32_t[:, :] labels = self.labels - * numpy.uint8_t[:, :] borders = self.borders + * numpy.int32_t[:, ::1] labels = self.labels + * numpy.uint8_t[:, ::1] borders = self.borders */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_float(__pyx_t_1); - if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_2.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_data = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; - /* "pyFAI/ext/watershed.pyx":393 + /* "pyFAI/ext/watershed.pyx":398 * float ref = 0.0 * float[:, :] data = self.data - * numpy.int32_t[:, :] labels = self.labels # <<<<<<<<<<<<<< - * numpy.uint8_t[:, :] borders = self.borders + * numpy.int32_t[:, ::1] labels = self.labels # <<<<<<<<<<<<<< + * numpy.uint8_t[:, ::1] borders = self.borders * int to_merge = -1 */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int32_t(__pyx_t_1); - if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(__pyx_t_1); + if (unlikely(!__pyx_t_3.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_labels = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; - /* "pyFAI/ext/watershed.pyx":394 + /* "pyFAI/ext/watershed.pyx":399 * float[:, :] data = self.data - * numpy.int32_t[:, :] labels = self.labels - * numpy.uint8_t[:, :] borders = self.borders # <<<<<<<<<<<<<< + * numpy.int32_t[:, ::1] labels = self.labels + * numpy.uint8_t[:, ::1] borders = self.borders # <<<<<<<<<<<<<< * int to_merge = -1 * int width = self.width */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_borders); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_borders); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1); - if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_1); + if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_borders = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; - /* "pyFAI/ext/watershed.pyx":395 - * numpy.int32_t[:, :] labels = self.labels - * numpy.uint8_t[:, :] borders = self.borders + /* "pyFAI/ext/watershed.pyx":400 + * numpy.int32_t[:, ::1] labels = self.labels + * numpy.uint8_t[:, ::1] borders = self.borders * int to_merge = -1 # <<<<<<<<<<<<<< * int width = self.width * int cnt = 0 */ __pyx_v_to_merge = -1; - /* "pyFAI/ext/watershed.pyx":396 - * numpy.uint8_t[:, :] borders = self.borders + /* "pyFAI/ext/watershed.pyx":401 + * numpy.uint8_t[:, ::1] borders = self.borders * int to_merge = -1 * int width = self.width # <<<<<<<<<<<<<< * int cnt = 0 * float[:] flat = self.data.ravel() */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_width = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":397 + /* "pyFAI/ext/watershed.pyx":402 * int to_merge = -1 * int width = self.width * int cnt = 0 # <<<<<<<<<<<<<< @@ -10735,16 +10375,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_v_cnt = 0; - /* "pyFAI/ext/watershed.pyx":398 + /* "pyFAI/ext/watershed.pyx":403 * int width = self.width * int cnt = 0 * float[:] flat = self.data.ravel() # <<<<<<<<<<<<<< * for key1 in list(regions.keys()): * region1 = regions[key1] */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; @@ -10758,21 +10398,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing } } if (__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_flat = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/watershed.pyx":399 + /* "pyFAI/ext/watershed.pyx":404 * int cnt = 0 * float[:] flat = self.data.ravel() * for key1 in list(regions.keys()): # <<<<<<<<<<<<<< @@ -10781,28 +10421,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1); __pyx_t_9 = 0; + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { - if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_1)) break; + if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_key1 = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":400 + /* "pyFAI/ext/watershed.pyx":405 * float[:] flat = self.data.ravel() * for key1 in list(regions.keys()): * region1 = regions[key1] # <<<<<<<<<<<<<< @@ -10811,18 +10455,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_key1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_7); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_key1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region1, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_6)); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":401 + /* "pyFAI/ext/watershed.pyx":406 * for key1 in list(regions.keys()): * region1 = regions[key1] * if region1.maxi == region1.mini: # <<<<<<<<<<<<<< @@ -10832,7 +10476,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_10 = ((__pyx_v_region1->maxi == __pyx_v_region1->mini) != 0); if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":402 + /* "pyFAI/ext/watershed.pyx":407 * region1 = regions[key1] * if region1.maxi == region1.mini: * to_merge = -1 # <<<<<<<<<<<<<< @@ -10841,7 +10485,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_v_to_merge = -1; - /* "pyFAI/ext/watershed.pyx":403 + /* "pyFAI/ext/watershed.pyx":408 * if region1.maxi == region1.mini: * to_merge = -1 * if region1.size == 1: # <<<<<<<<<<<<<< @@ -10851,7 +10495,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_10 = ((__pyx_v_region1->size == 1) != 0); if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":404 + /* "pyFAI/ext/watershed.pyx":409 * to_merge = -1 * if region1.size == 1: * i = region1.index // width # <<<<<<<<<<<<<< @@ -10859,16 +10503,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing * neighb = borders[i, j] */ if (unlikely(__pyx_v_width == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else if (sizeof(int) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_width == (int)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_region1->index))) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_i = __Pyx_div_int(__pyx_v_region1->index, __pyx_v_width); - /* "pyFAI/ext/watershed.pyx":405 + /* "pyFAI/ext/watershed.pyx":410 * if region1.size == 1: * i = region1.index // width * j = region1.index % width # <<<<<<<<<<<<<< @@ -10876,36 +10532,42 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing * if get_bit(neighb, 1) and (region1.maxi == data[i - 1, j]): */ if (unlikely(__pyx_v_width == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_j = __Pyx_mod_int(__pyx_v_region1->index, __pyx_v_width); - /* "pyFAI/ext/watershed.pyx":406 + /* "pyFAI/ext/watershed.pyx":411 * i = region1.index // width * j = region1.index % width * neighb = borders[i, j] # <<<<<<<<<<<<<< * if get_bit(neighb, 1) and (region1.maxi == data[i - 1, j]): * to_merge = labels[i - 1, j] */ - __pyx_t_11 = __pyx_v_i; - __pyx_t_12 = __pyx_v_j; - __pyx_t_5 = -1; + __pyx_t_5 = __pyx_v_i; + __pyx_t_11 = __pyx_v_j; + __pyx_t_12 = -1; + if (__pyx_t_5 < 0) { + __pyx_t_5 += __pyx_v_borders.shape[0]; + if (unlikely(__pyx_t_5 < 0)) __pyx_t_12 = 0; + } else if (unlikely(__pyx_t_5 >= __pyx_v_borders.shape[0])) __pyx_t_12 = 0; if (__pyx_t_11 < 0) { - __pyx_t_11 += __pyx_v_borders.shape[0]; - if (unlikely(__pyx_t_11 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_11 >= __pyx_v_borders.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_12 < 0) { - __pyx_t_12 += __pyx_v_borders.shape[1]; - if (unlikely(__pyx_t_12 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_12 >= __pyx_v_borders.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 += __pyx_v_borders.shape[1]; + if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 1; + } else if (unlikely(__pyx_t_11 >= __pyx_v_borders.shape[1])) __pyx_t_12 = 1; + if (unlikely(__pyx_t_12 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_12); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_neighb = (*((__pyx_t_5numpy_uint8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_borders.data + __pyx_t_11 * __pyx_v_borders.strides[0]) ) + __pyx_t_12 * __pyx_v_borders.strides[1]) ))); + __pyx_v_neighb = (*((__pyx_t_5numpy_uint8_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_borders.data + __pyx_t_5 * __pyx_v_borders.strides[0]) )) + __pyx_t_11)) ))); - /* "pyFAI/ext/watershed.pyx":407 + /* "pyFAI/ext/watershed.pyx":412 * j = region1.index % width * neighb = borders[i, j] * if get_bit(neighb, 1) and (region1.maxi == data[i - 1, j]): # <<<<<<<<<<<<<< @@ -10919,26 +10581,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing goto __pyx_L8_bool_binop_done; } __pyx_t_14 = (__pyx_v_i - 1); - __pyx_t_15 = __pyx_v_j; - __pyx_t_5 = -1; + __pyx_t_12 = __pyx_v_j; + __pyx_t_15 = -1; if (__pyx_t_14 < 0) { __pyx_t_14 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_14 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_15 < 0) { - __pyx_t_15 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_15 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_15 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0; + } else if (unlikely(__pyx_t_14 >= __pyx_v_data.shape[0])) __pyx_t_15 = 0; + if (__pyx_t_12 < 0) { + __pyx_t_12 += __pyx_v_data.shape[1]; + if (unlikely(__pyx_t_12 < 0)) __pyx_t_15 = 1; + } else if (unlikely(__pyx_t_12 >= __pyx_v_data.shape[1])) __pyx_t_15 = 1; + if (unlikely(__pyx_t_15 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_15); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_14 * __pyx_v_data.strides[0]) ) + __pyx_t_15 * __pyx_v_data.strides[1]) )))) != 0); + __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_14 * __pyx_v_data.strides[0]) ) + __pyx_t_12 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L8_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":408 + /* "pyFAI/ext/watershed.pyx":413 * neighb = borders[i, j] * if get_bit(neighb, 1) and (region1.maxi == data[i - 1, j]): * to_merge = labels[i - 1, j] # <<<<<<<<<<<<<< @@ -10946,33 +10608,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing * to_merge = labels[i, j + 1] */ __pyx_t_16 = (__pyx_v_i - 1); - __pyx_t_17 = __pyx_v_j; - __pyx_t_5 = -1; + __pyx_t_15 = __pyx_v_j; + __pyx_t_17 = -1; if (__pyx_t_16 < 0) { __pyx_t_16 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_16 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_16 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_17 < 0) { - __pyx_t_17 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_17 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_17 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_16 < 0)) __pyx_t_17 = 0; + } else if (unlikely(__pyx_t_16 >= __pyx_v_labels.shape[0])) __pyx_t_17 = 0; + if (__pyx_t_15 < 0) { + __pyx_t_15 += __pyx_v_labels.shape[1]; + if (unlikely(__pyx_t_15 < 0)) __pyx_t_17 = 1; + } else if (unlikely(__pyx_t_15 >= __pyx_v_labels.shape[1])) __pyx_t_17 = 1; + if (unlikely(__pyx_t_17 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_17); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_16 * __pyx_v_labels.strides[0]) ) + __pyx_t_17 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":407 - * j = region1.index % width - * neighb = borders[i, j] - * if get_bit(neighb, 1) and (region1.maxi == data[i - 1, j]): # <<<<<<<<<<<<<< - * to_merge = labels[i - 1, j] - * elif get_bit(neighb, 3) and (region1.maxi == data[i, j + 1]): - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_16 * __pyx_v_labels.strides[0]) )) + __pyx_t_15)) ))); goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":409 + /* "pyFAI/ext/watershed.pyx":414 * if get_bit(neighb, 1) and (region1.maxi == data[i - 1, j]): * to_merge = labels[i - 1, j] * elif get_bit(neighb, 3) and (region1.maxi == data[i, j + 1]): # <<<<<<<<<<<<<< @@ -10985,61 +10639,53 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_10 = __pyx_t_13; goto __pyx_L10_bool_binop_done; } - __pyx_t_18 = __pyx_v_i; - __pyx_t_19 = (__pyx_v_j + 1); - __pyx_t_5 = -1; + __pyx_t_17 = __pyx_v_i; + __pyx_t_18 = (__pyx_v_j + 1); + __pyx_t_19 = -1; + if (__pyx_t_17 < 0) { + __pyx_t_17 += __pyx_v_data.shape[0]; + if (unlikely(__pyx_t_17 < 0)) __pyx_t_19 = 0; + } else if (unlikely(__pyx_t_17 >= __pyx_v_data.shape[0])) __pyx_t_19 = 0; if (__pyx_t_18 < 0) { - __pyx_t_18 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_18 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_18 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_19 < 0) { - __pyx_t_19 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_19 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_19 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 += __pyx_v_data.shape[1]; + if (unlikely(__pyx_t_18 < 0)) __pyx_t_19 = 1; + } else if (unlikely(__pyx_t_18 >= __pyx_v_data.shape[1])) __pyx_t_19 = 1; + if (unlikely(__pyx_t_19 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_19); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_18 * __pyx_v_data.strides[0]) ) + __pyx_t_19 * __pyx_v_data.strides[1]) )))) != 0); + __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_17 * __pyx_v_data.strides[0]) ) + __pyx_t_18 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L10_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":410 + /* "pyFAI/ext/watershed.pyx":415 * to_merge = labels[i - 1, j] * elif get_bit(neighb, 3) and (region1.maxi == data[i, j + 1]): * to_merge = labels[i, j + 1] # <<<<<<<<<<<<<< * elif get_bit(neighb, 5) and (region1.maxi == data[i + 1, j]): * to_merge = labels[i + 1, j] */ - __pyx_t_20 = __pyx_v_i; - __pyx_t_21 = (__pyx_v_j + 1); - __pyx_t_5 = -1; + __pyx_t_19 = __pyx_v_i; + __pyx_t_20 = (__pyx_v_j + 1); + __pyx_t_21 = -1; + if (__pyx_t_19 < 0) { + __pyx_t_19 += __pyx_v_labels.shape[0]; + if (unlikely(__pyx_t_19 < 0)) __pyx_t_21 = 0; + } else if (unlikely(__pyx_t_19 >= __pyx_v_labels.shape[0])) __pyx_t_21 = 0; if (__pyx_t_20 < 0) { - __pyx_t_20 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_20 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_20 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_21 < 0) { - __pyx_t_21 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_21 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_21 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 += __pyx_v_labels.shape[1]; + if (unlikely(__pyx_t_20 < 0)) __pyx_t_21 = 1; + } else if (unlikely(__pyx_t_20 >= __pyx_v_labels.shape[1])) __pyx_t_21 = 1; + if (unlikely(__pyx_t_21 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_21); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_20 * __pyx_v_labels.strides[0]) ) + __pyx_t_21 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":409 - * if get_bit(neighb, 1) and (region1.maxi == data[i - 1, j]): - * to_merge = labels[i - 1, j] - * elif get_bit(neighb, 3) and (region1.maxi == data[i, j + 1]): # <<<<<<<<<<<<<< - * to_merge = labels[i, j + 1] - * elif get_bit(neighb, 5) and (region1.maxi == data[i + 1, j]): - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_19 * __pyx_v_labels.strides[0]) )) + __pyx_t_20)) ))); goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":411 + /* "pyFAI/ext/watershed.pyx":416 * elif get_bit(neighb, 3) and (region1.maxi == data[i, j + 1]): * to_merge = labels[i, j + 1] * elif get_bit(neighb, 5) and (region1.maxi == data[i + 1, j]): # <<<<<<<<<<<<<< @@ -11053,26 +10699,26 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing goto __pyx_L12_bool_binop_done; } __pyx_t_22 = (__pyx_v_i + 1); - __pyx_t_23 = __pyx_v_j; - __pyx_t_5 = -1; + __pyx_t_21 = __pyx_v_j; + __pyx_t_23 = -1; if (__pyx_t_22 < 0) { __pyx_t_22 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_22 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_22 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_23 < 0) { - __pyx_t_23 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_23 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_23 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_22 < 0)) __pyx_t_23 = 0; + } else if (unlikely(__pyx_t_22 >= __pyx_v_data.shape[0])) __pyx_t_23 = 0; + if (__pyx_t_21 < 0) { + __pyx_t_21 += __pyx_v_data.shape[1]; + if (unlikely(__pyx_t_21 < 0)) __pyx_t_23 = 1; + } else if (unlikely(__pyx_t_21 >= __pyx_v_data.shape[1])) __pyx_t_23 = 1; + if (unlikely(__pyx_t_23 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_23); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_22 * __pyx_v_data.strides[0]) ) + __pyx_t_23 * __pyx_v_data.strides[1]) )))) != 0); + __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_22 * __pyx_v_data.strides[0]) ) + __pyx_t_21 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L12_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":412 + /* "pyFAI/ext/watershed.pyx":417 * to_merge = labels[i, j + 1] * elif get_bit(neighb, 5) and (region1.maxi == data[i + 1, j]): * to_merge = labels[i + 1, j] # <<<<<<<<<<<<<< @@ -11080,33 +10726,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing * to_merge = labels[i, j - 1] */ __pyx_t_24 = (__pyx_v_i + 1); - __pyx_t_25 = __pyx_v_j; - __pyx_t_5 = -1; + __pyx_t_23 = __pyx_v_j; + __pyx_t_25 = -1; if (__pyx_t_24 < 0) { __pyx_t_24 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_24 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_24 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_25 < 0) { - __pyx_t_25 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_25 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_25 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_24 < 0)) __pyx_t_25 = 0; + } else if (unlikely(__pyx_t_24 >= __pyx_v_labels.shape[0])) __pyx_t_25 = 0; + if (__pyx_t_23 < 0) { + __pyx_t_23 += __pyx_v_labels.shape[1]; + if (unlikely(__pyx_t_23 < 0)) __pyx_t_25 = 1; + } else if (unlikely(__pyx_t_23 >= __pyx_v_labels.shape[1])) __pyx_t_25 = 1; + if (unlikely(__pyx_t_25 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_25); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_24 * __pyx_v_labels.strides[0]) ) + __pyx_t_25 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":411 - * elif get_bit(neighb, 3) and (region1.maxi == data[i, j + 1]): - * to_merge = labels[i, j + 1] - * elif get_bit(neighb, 5) and (region1.maxi == data[i + 1, j]): # <<<<<<<<<<<<<< - * to_merge = labels[i + 1, j] - * elif get_bit(neighb, 7) and (region1.maxi == data[i, j - 1]): - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_24 * __pyx_v_labels.strides[0]) )) + __pyx_t_23)) ))); goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":413 + /* "pyFAI/ext/watershed.pyx":418 * elif get_bit(neighb, 5) and (region1.maxi == data[i + 1, j]): * to_merge = labels[i + 1, j] * elif get_bit(neighb, 7) and (region1.maxi == data[i, j - 1]): # <<<<<<<<<<<<<< @@ -11119,61 +10757,53 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_10 = __pyx_t_13; goto __pyx_L14_bool_binop_done; } - __pyx_t_26 = __pyx_v_i; - __pyx_t_27 = (__pyx_v_j - 1); - __pyx_t_5 = -1; + __pyx_t_25 = __pyx_v_i; + __pyx_t_26 = (__pyx_v_j - 1); + __pyx_t_27 = -1; + if (__pyx_t_25 < 0) { + __pyx_t_25 += __pyx_v_data.shape[0]; + if (unlikely(__pyx_t_25 < 0)) __pyx_t_27 = 0; + } else if (unlikely(__pyx_t_25 >= __pyx_v_data.shape[0])) __pyx_t_27 = 0; if (__pyx_t_26 < 0) { - __pyx_t_26 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_26 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_26 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_27 < 0) { - __pyx_t_27 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_27 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_27 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_26 += __pyx_v_data.shape[1]; + if (unlikely(__pyx_t_26 < 0)) __pyx_t_27 = 1; + } else if (unlikely(__pyx_t_26 >= __pyx_v_data.shape[1])) __pyx_t_27 = 1; + if (unlikely(__pyx_t_27 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_27); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_26 * __pyx_v_data.strides[0]) ) + __pyx_t_27 * __pyx_v_data.strides[1]) )))) != 0); + __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_25 * __pyx_v_data.strides[0]) ) + __pyx_t_26 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L14_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":414 + /* "pyFAI/ext/watershed.pyx":419 * to_merge = labels[i + 1, j] * elif get_bit(neighb, 7) and (region1.maxi == data[i, j - 1]): * to_merge = labels[i, j - 1] # <<<<<<<<<<<<<< * elif get_bit(neighb, 0) and (region1.maxi == data[i - 1, j - 1]): * to_merge = labels[i - 1, j - 1] */ - __pyx_t_28 = __pyx_v_i; - __pyx_t_29 = (__pyx_v_j - 1); - __pyx_t_5 = -1; + __pyx_t_27 = __pyx_v_i; + __pyx_t_28 = (__pyx_v_j - 1); + __pyx_t_29 = -1; + if (__pyx_t_27 < 0) { + __pyx_t_27 += __pyx_v_labels.shape[0]; + if (unlikely(__pyx_t_27 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_27 >= __pyx_v_labels.shape[0])) __pyx_t_29 = 0; if (__pyx_t_28 < 0) { - __pyx_t_28 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_28 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_28 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; - if (__pyx_t_29 < 0) { - __pyx_t_29 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_29 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_29 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_28 += __pyx_v_labels.shape[1]; + if (unlikely(__pyx_t_28 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_28 >= __pyx_v_labels.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_28 * __pyx_v_labels.strides[0]) ) + __pyx_t_29 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":413 - * elif get_bit(neighb, 5) and (region1.maxi == data[i + 1, j]): - * to_merge = labels[i + 1, j] - * elif get_bit(neighb, 7) and (region1.maxi == data[i, j - 1]): # <<<<<<<<<<<<<< - * to_merge = labels[i, j - 1] - * elif get_bit(neighb, 0) and (region1.maxi == data[i - 1, j - 1]): - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_27 * __pyx_v_labels.strides[0]) )) + __pyx_t_28)) ))); goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":415 + /* "pyFAI/ext/watershed.pyx":420 * elif get_bit(neighb, 7) and (region1.maxi == data[i, j - 1]): * to_merge = labels[i, j - 1] * elif get_bit(neighb, 0) and (region1.maxi == data[i - 1, j - 1]): # <<<<<<<<<<<<<< @@ -11188,25 +10818,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing } __pyx_t_30 = (__pyx_v_i - 1); __pyx_t_31 = (__pyx_v_j - 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_30 < 0) { __pyx_t_30 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_30 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_30 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_30 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_30 >= __pyx_v_data.shape[0])) __pyx_t_29 = 0; if (__pyx_t_31 < 0) { __pyx_t_31 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_31 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_31 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_31 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_31 >= __pyx_v_data.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_30 * __pyx_v_data.strides[0]) ) + __pyx_t_31 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L16_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":416 + /* "pyFAI/ext/watershed.pyx":421 * to_merge = labels[i, j - 1] * elif get_bit(neighb, 0) and (region1.maxi == data[i - 1, j - 1]): * to_merge = labels[i - 1, j - 1] # <<<<<<<<<<<<<< @@ -11215,32 +10845,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_t_32 = (__pyx_v_i - 1); __pyx_t_33 = (__pyx_v_j - 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_32 < 0) { __pyx_t_32 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_32 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_32 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_32 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_32 >= __pyx_v_labels.shape[0])) __pyx_t_29 = 0; if (__pyx_t_33 < 0) { __pyx_t_33 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_33 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_33 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_33 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_33 >= __pyx_v_labels.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_32 * __pyx_v_labels.strides[0]) ) + __pyx_t_33 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":415 - * elif get_bit(neighb, 7) and (region1.maxi == data[i, j - 1]): - * to_merge = labels[i, j - 1] - * elif get_bit(neighb, 0) and (region1.maxi == data[i - 1, j - 1]): # <<<<<<<<<<<<<< - * to_merge = labels[i - 1, j - 1] - * elif get_bit(neighb, 2) and (region1.maxi == data[i - 1, j + 1]): - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_32 * __pyx_v_labels.strides[0]) )) + __pyx_t_33)) ))); goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":417 + /* "pyFAI/ext/watershed.pyx":422 * elif get_bit(neighb, 0) and (region1.maxi == data[i - 1, j - 1]): * to_merge = labels[i - 1, j - 1] * elif get_bit(neighb, 2) and (region1.maxi == data[i - 1, j + 1]): # <<<<<<<<<<<<<< @@ -11255,25 +10877,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing } __pyx_t_34 = (__pyx_v_i - 1); __pyx_t_35 = (__pyx_v_j + 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_34 < 0) { __pyx_t_34 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_34 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_34 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_34 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_34 >= __pyx_v_data.shape[0])) __pyx_t_29 = 0; if (__pyx_t_35 < 0) { __pyx_t_35 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_35 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_35 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_35 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_35 >= __pyx_v_data.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_34 * __pyx_v_data.strides[0]) ) + __pyx_t_35 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L18_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":418 + /* "pyFAI/ext/watershed.pyx":423 * to_merge = labels[i - 1, j - 1] * elif get_bit(neighb, 2) and (region1.maxi == data[i - 1, j + 1]): * to_merge = labels[i - 1, j + 1] # <<<<<<<<<<<<<< @@ -11282,32 +10904,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_t_36 = (__pyx_v_i - 1); __pyx_t_37 = (__pyx_v_j + 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_36 < 0) { __pyx_t_36 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_36 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_36 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_36 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_36 >= __pyx_v_labels.shape[0])) __pyx_t_29 = 0; if (__pyx_t_37 < 0) { __pyx_t_37 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_37 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_37 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_37 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_37 >= __pyx_v_labels.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_36 * __pyx_v_labels.strides[0]) ) + __pyx_t_37 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":417 - * elif get_bit(neighb, 0) and (region1.maxi == data[i - 1, j - 1]): - * to_merge = labels[i - 1, j - 1] - * elif get_bit(neighb, 2) and (region1.maxi == data[i - 1, j + 1]): # <<<<<<<<<<<<<< - * to_merge = labels[i - 1, j + 1] - * elif get_bit(neighb, 4) and (region1.maxi == data[i + 1, j + 1]): - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_36 * __pyx_v_labels.strides[0]) )) + __pyx_t_37)) ))); goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":419 + /* "pyFAI/ext/watershed.pyx":424 * elif get_bit(neighb, 2) and (region1.maxi == data[i - 1, j + 1]): * to_merge = labels[i - 1, j + 1] * elif get_bit(neighb, 4) and (region1.maxi == data[i + 1, j + 1]): # <<<<<<<<<<<<<< @@ -11322,25 +10936,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing } __pyx_t_38 = (__pyx_v_i + 1); __pyx_t_39 = (__pyx_v_j + 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_38 < 0) { __pyx_t_38 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_38 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_38 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_38 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_38 >= __pyx_v_data.shape[0])) __pyx_t_29 = 0; if (__pyx_t_39 < 0) { __pyx_t_39 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_39 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_39 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_39 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_39 >= __pyx_v_data.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_38 * __pyx_v_data.strides[0]) ) + __pyx_t_39 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L20_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":420 + /* "pyFAI/ext/watershed.pyx":425 * to_merge = labels[i - 1, j + 1] * elif get_bit(neighb, 4) and (region1.maxi == data[i + 1, j + 1]): * to_merge = labels[i + 1, j + 1] # <<<<<<<<<<<<<< @@ -11349,32 +10963,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_t_40 = (__pyx_v_i + 1); __pyx_t_41 = (__pyx_v_j + 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_40 < 0) { __pyx_t_40 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_40 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_40 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_40 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_40 >= __pyx_v_labels.shape[0])) __pyx_t_29 = 0; if (__pyx_t_41 < 0) { __pyx_t_41 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_41 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_41 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_41 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_41 >= __pyx_v_labels.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_40 * __pyx_v_labels.strides[0]) ) + __pyx_t_41 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":419 - * elif get_bit(neighb, 2) and (region1.maxi == data[i - 1, j + 1]): - * to_merge = labels[i - 1, j + 1] - * elif get_bit(neighb, 4) and (region1.maxi == data[i + 1, j + 1]): # <<<<<<<<<<<<<< - * to_merge = labels[i + 1, j + 1] - * elif get_bit(neighb, 6) and (region1.maxi == data[i + 1, j - 1]): - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_40 * __pyx_v_labels.strides[0]) )) + __pyx_t_41)) ))); goto __pyx_L7; } - /* "pyFAI/ext/watershed.pyx":421 + /* "pyFAI/ext/watershed.pyx":426 * elif get_bit(neighb, 4) and (region1.maxi == data[i + 1, j + 1]): * to_merge = labels[i + 1, j + 1] * elif get_bit(neighb, 6) and (region1.maxi == data[i + 1, j - 1]): # <<<<<<<<<<<<<< @@ -11389,25 +10995,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing } __pyx_t_42 = (__pyx_v_i + 1); __pyx_t_43 = (__pyx_v_j - 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_42 < 0) { __pyx_t_42 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_42 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_42 >= __pyx_v_data.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_42 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_42 >= __pyx_v_data.shape[0])) __pyx_t_29 = 0; if (__pyx_t_43 < 0) { __pyx_t_43 += __pyx_v_data.shape[1]; - if (unlikely(__pyx_t_43 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_43 >= __pyx_v_data.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_43 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_43 >= __pyx_v_data.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_13 = ((__pyx_v_region1->maxi == (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_data.data + __pyx_t_42 * __pyx_v_data.strides[0]) ) + __pyx_t_43 * __pyx_v_data.strides[1]) )))) != 0); __pyx_t_10 = __pyx_t_13; __pyx_L22_bool_binop_done:; if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":422 + /* "pyFAI/ext/watershed.pyx":427 * to_merge = labels[i + 1, j + 1] * elif get_bit(neighb, 6) and (region1.maxi == data[i + 1, j - 1]): * to_merge = labels[i + 1, j - 1] # <<<<<<<<<<<<<< @@ -11416,41 +11022,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_t_44 = (__pyx_v_i + 1); __pyx_t_45 = (__pyx_v_j - 1); - __pyx_t_5 = -1; + __pyx_t_29 = -1; if (__pyx_t_44 < 0) { __pyx_t_44 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_44 < 0)) __pyx_t_5 = 0; - } else if (unlikely(__pyx_t_44 >= __pyx_v_labels.shape[0])) __pyx_t_5 = 0; + if (unlikely(__pyx_t_44 < 0)) __pyx_t_29 = 0; + } else if (unlikely(__pyx_t_44 >= __pyx_v_labels.shape[0])) __pyx_t_29 = 0; if (__pyx_t_45 < 0) { __pyx_t_45 += __pyx_v_labels.shape[1]; - if (unlikely(__pyx_t_45 < 0)) __pyx_t_5 = 1; - } else if (unlikely(__pyx_t_45 >= __pyx_v_labels.shape[1])) __pyx_t_5 = 1; - if (unlikely(__pyx_t_5 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_5); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_t_45 < 0)) __pyx_t_29 = 1; + } else if (unlikely(__pyx_t_45 >= __pyx_v_labels.shape[1])) __pyx_t_29 = 1; + if (unlikely(__pyx_t_29 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_29); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_44 * __pyx_v_labels.strides[0]) ) + __pyx_t_45 * __pyx_v_labels.strides[1]) ))); - - /* "pyFAI/ext/watershed.pyx":421 - * elif get_bit(neighb, 4) and (region1.maxi == data[i + 1, j + 1]): - * to_merge = labels[i + 1, j + 1] - * elif get_bit(neighb, 6) and (region1.maxi == data[i + 1, j - 1]): # <<<<<<<<<<<<<< - * to_merge = labels[i + 1, j - 1] - * if to_merge < 0: - */ + __pyx_v_to_merge = (*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_44 * __pyx_v_labels.strides[0]) )) + __pyx_t_45)) ))); + goto __pyx_L7; } __pyx_L7:; - - /* "pyFAI/ext/watershed.pyx":403 - * if region1.maxi == region1.mini: - * to_merge = -1 - * if region1.size == 1: # <<<<<<<<<<<<<< - * i = region1.index // width - * j = region1.index % width - */ + goto __pyx_L6; } + __pyx_L6:; - /* "pyFAI/ext/watershed.pyx":423 + /* "pyFAI/ext/watershed.pyx":428 * elif get_bit(neighb, 6) and (region1.maxi == data[i + 1, j - 1]): * to_merge = labels[i + 1, j - 1] * if to_merge < 0: # <<<<<<<<<<<<<< @@ -11460,7 +11053,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_10 = ((__pyx_v_to_merge < 0) != 0); if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":424 + /* "pyFAI/ext/watershed.pyx":429 * to_merge = labels[i + 1, j - 1] * if to_merge < 0: * if len(region1.neighbors) == 0: # <<<<<<<<<<<<<< @@ -11471,36 +11064,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __Pyx_INCREF(__pyx_t_6); if (unlikely(__pyx_t_6 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_46 = PyList_GET_SIZE(__pyx_t_6); if (unlikely(__pyx_t_46 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_46 = PyList_GET_SIZE(__pyx_t_6); if (unlikely(__pyx_t_46 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = ((__pyx_t_46 == 0) != 0); if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":425 + /* "pyFAI/ext/watershed.pyx":430 * if to_merge < 0: * if len(region1.neighbors) == 0: * print("no neighbors: %s" % region1) # <<<<<<<<<<<<<< * elif (len(region1.neighbors) == 1) or \ * (region1.neighbors == [region1.neighbors[0]] * len(region1.neighbors)): */ - __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_no_neighbors_s, ((PyObject *)__pyx_v_region1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_no_neighbors_s, ((PyObject *)__pyx_v_region1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_PrintOne(0, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PrintOne(0, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "pyFAI/ext/watershed.pyx":424 - * to_merge = labels[i + 1, j - 1] - * if to_merge < 0: - * if len(region1.neighbors) == 0: # <<<<<<<<<<<<<< - * print("no neighbors: %s" % region1) - * elif (len(region1.neighbors) == 1) or \ - */ goto __pyx_L25; } - /* "pyFAI/ext/watershed.pyx":426 + /* "pyFAI/ext/watershed.pyx":431 * if len(region1.neighbors) == 0: * print("no neighbors: %s" % region1) * elif (len(region1.neighbors) == 1) or \ # <<<<<<<<<<<<<< @@ -11511,9 +11096,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __Pyx_INCREF(__pyx_t_6); if (unlikely(__pyx_t_6 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_46 = PyList_GET_SIZE(__pyx_t_6); if (unlikely(__pyx_t_46 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_46 = PyList_GET_SIZE(__pyx_t_6); if (unlikely(__pyx_t_46 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_13 = ((__pyx_t_46 == 1) != 0); if (!__pyx_t_13) { @@ -11522,7 +11107,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing goto __pyx_L26_bool_binop_done; } - /* "pyFAI/ext/watershed.pyx":427 + /* "pyFAI/ext/watershed.pyx":432 * print("no neighbors: %s" % region1) * elif (len(region1.neighbors) == 1) or \ * (region1.neighbors == [region1.neighbors[0]] * len(region1.neighbors)): # <<<<<<<<<<<<<< @@ -11531,45 +11116,37 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_region1->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_region1->neighbors, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_region1->neighbors, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __pyx_v_region1->neighbors; - __Pyx_INCREF(__pyx_t_7); - if (unlikely(__pyx_t_7 == Py_None)) { + __pyx_t_1 = __pyx_v_region1->neighbors; + __Pyx_INCREF(__pyx_t_1); + if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_46 = PyList_GET_SIZE(__pyx_t_7); if (unlikely(__pyx_t_46 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyList_New(1 * ((__pyx_t_46<0) ? 0:__pyx_t_46)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_46 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_46 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyList_New(1 * ((__pyx_t_46<0) ? 0:__pyx_t_46)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < __pyx_t_46; __pyx_temp++) { __Pyx_INCREF(__pyx_t_6); + PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); - PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_t_6); } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyObject_RichCompare(__pyx_v_region1->neighbors, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_RichCompare(__pyx_v_region1->neighbors, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = __pyx_t_13; __pyx_L26_bool_binop_done:; - - /* "pyFAI/ext/watershed.pyx":426 - * if len(region1.neighbors) == 0: - * print("no neighbors: %s" % region1) - * elif (len(region1.neighbors) == 1) or \ # <<<<<<<<<<<<<< - * (region1.neighbors == [region1.neighbors[0]] * len(region1.neighbors)): - * to_merge = region1.neighbors[0] - */ if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":428 + /* "pyFAI/ext/watershed.pyx":433 * elif (len(region1.neighbors) == 1) or \ * (region1.neighbors == [region1.neighbors[0]] * len(region1.neighbors)): * to_merge = region1.neighbors[0] # <<<<<<<<<<<<<< @@ -11578,43 +11155,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_region1->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_region1->neighbors, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_region1->neighbors, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_29 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_29 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_to_merge = __pyx_t_5; - - /* "pyFAI/ext/watershed.pyx":426 - * if len(region1.neighbors) == 0: - * print("no neighbors: %s" % region1) - * elif (len(region1.neighbors) == 1) or \ # <<<<<<<<<<<<<< - * (region1.neighbors == [region1.neighbors[0]] * len(region1.neighbors)): - * to_merge = region1.neighbors[0] - */ + __pyx_v_to_merge = __pyx_t_29; goto __pyx_L25; } + /*else*/ { - /* "pyFAI/ext/watershed.pyx":430 + /* "pyFAI/ext/watershed.pyx":435 * to_merge = region1.neighbors[0] * else: * to_merge = region1.neighbors[0] # <<<<<<<<<<<<<< * region2 = regions[to_merge] * ref = region2.maxi */ - /*else*/ { if (unlikely(__pyx_v_region1->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_region1->neighbors, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_region1->neighbors, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_29 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_29 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_to_merge = __pyx_t_5; + __pyx_v_to_merge = __pyx_t_29; - /* "pyFAI/ext/watershed.pyx":431 + /* "pyFAI/ext/watershed.pyx":436 * else: * to_merge = region1.neighbors[0] * region2 = regions[to_merge] # <<<<<<<<<<<<<< @@ -11623,18 +11192,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_to_merge); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_to_merge); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_6); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_6); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_7)); - __pyx_t_7 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1)); + __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":432 + /* "pyFAI/ext/watershed.pyx":437 * to_merge = region1.neighbors[0] * region2 = regions[to_merge] * ref = region2.maxi # <<<<<<<<<<<<<< @@ -11644,7 +11213,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_47 = __pyx_v_region2->maxi; __pyx_v_ref = __pyx_t_47; - /* "pyFAI/ext/watershed.pyx":433 + /* "pyFAI/ext/watershed.pyx":438 * region2 = regions[to_merge] * ref = region2.maxi * for idx in region1.neighbors[1:]: # <<<<<<<<<<<<<< @@ -11653,25 +11222,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_region1->neighbors == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_7 = __Pyx_PyList_GetSlice(__pyx_v_region1->neighbors, 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_46 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_region1->neighbors, 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_46 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (__pyx_t_46 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_46); __Pyx_INCREF(__pyx_t_7); __pyx_t_46++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_46); __Pyx_INCREF(__pyx_t_1); __pyx_t_46++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_46); __pyx_t_46++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_46); __pyx_t_46++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_v_idx = __pyx_t_5; + __pyx_t_29 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_29 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_idx = __pyx_t_29; - /* "pyFAI/ext/watershed.pyx":434 + /* "pyFAI/ext/watershed.pyx":439 * ref = region2.maxi * for idx in region1.neighbors[1:]: * region2 = regions[to_merge] # <<<<<<<<<<<<<< @@ -11680,18 +11248,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_to_merge); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_48 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_7); if (unlikely(__pyx_t_48 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_to_merge); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_48 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_1); if (unlikely(__pyx_t_48 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_48); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (!(likely(((__pyx_t_48) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_48, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!(likely(((__pyx_t_48) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_48, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_48)); __pyx_t_48 = 0; - /* "pyFAI/ext/watershed.pyx":435 + /* "pyFAI/ext/watershed.pyx":440 * for idx in region1.neighbors[1:]: * region2 = regions[to_merge] * if region2.maxi > ref: # <<<<<<<<<<<<<< @@ -11701,7 +11269,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_10 = ((__pyx_v_region2->maxi > __pyx_v_ref) != 0); if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":436 + /* "pyFAI/ext/watershed.pyx":441 * region2 = regions[to_merge] * if region2.maxi > ref: * to_merge = idx # <<<<<<<<<<<<<< @@ -11710,7 +11278,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_v_to_merge = __pyx_v_idx; - /* "pyFAI/ext/watershed.pyx":437 + /* "pyFAI/ext/watershed.pyx":442 * if region2.maxi > ref: * to_merge = idx * ref = region2.maxi # <<<<<<<<<<<<<< @@ -11719,17 +11287,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ __pyx_t_47 = __pyx_v_region2->maxi; __pyx_v_ref = __pyx_t_47; - - /* "pyFAI/ext/watershed.pyx":435 - * for idx in region1.neighbors[1:]: - * region2 = regions[to_merge] - * if region2.maxi > ref: # <<<<<<<<<<<<<< - * to_merge = idx - * ref = region2.maxi - */ + goto __pyx_L30; } + __pyx_L30:; - /* "pyFAI/ext/watershed.pyx":433 + /* "pyFAI/ext/watershed.pyx":438 * region2 = regions[to_merge] * ref = region2.maxi * for idx in region1.neighbors[1:]: # <<<<<<<<<<<<<< @@ -11740,17 +11302,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_L25:; - - /* "pyFAI/ext/watershed.pyx":423 - * elif get_bit(neighb, 6) and (region1.maxi == data[i + 1, j - 1]): - * to_merge = labels[i + 1, j - 1] - * if to_merge < 0: # <<<<<<<<<<<<<< - * if len(region1.neighbors) == 0: - * print("no neighbors: %s" % region1) - */ + goto __pyx_L24; } + __pyx_L24:; - /* "pyFAI/ext/watershed.pyx":438 + /* "pyFAI/ext/watershed.pyx":443 * to_merge = idx * ref = region2.maxi * if (to_merge < 0): # <<<<<<<<<<<<<< @@ -11760,87 +11316,79 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_t_10 = ((__pyx_v_to_merge < 0) != 0); if (__pyx_t_10) { - /* "pyFAI/ext/watershed.pyx":439 + /* "pyFAI/ext/watershed.pyx":444 * ref = region2.maxi * if (to_merge < 0): * logger.info("error in merging %s" % region1) # <<<<<<<<<<<<<< * else: * region2 = regions[to_merge] */ - __pyx_t_48 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_48 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_48); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_48, __pyx_n_s_info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_48, __pyx_n_s_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0; - __pyx_t_48 = __Pyx_PyString_Format(__pyx_kp_s_error_in_merging_s, ((PyObject *)__pyx_v_region1)); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_48 = __Pyx_PyString_Format(__pyx_kp_s_error_in_merging_s, ((PyObject *)__pyx_v_region1)); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_48); __pyx_t_49 = NULL; - if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_49 = PyMethod_GET_SELF(__pyx_t_7); + if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_49 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_49)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_49); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); + __Pyx_DECREF_SET(__pyx_t_1, function); } } if (!__pyx_t_49) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_48); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_48); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0; __Pyx_GOTREF(__pyx_t_6); } else { - __pyx_t_50 = PyTuple_New(1+1); if (unlikely(!__pyx_t_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_50 = PyTuple_New(1+1); if (unlikely(!__pyx_t_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_50); - __Pyx_GIVEREF(__pyx_t_49); PyTuple_SET_ITEM(__pyx_t_50, 0, __pyx_t_49); __pyx_t_49 = NULL; - __Pyx_GIVEREF(__pyx_t_48); + PyTuple_SET_ITEM(__pyx_t_50, 0, __pyx_t_49); __Pyx_GIVEREF(__pyx_t_49); __pyx_t_49 = NULL; PyTuple_SET_ITEM(__pyx_t_50, 0+1, __pyx_t_48); + __Pyx_GIVEREF(__pyx_t_48); __pyx_t_48 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_50, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_50, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_50); __pyx_t_50 = 0; } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "pyFAI/ext/watershed.pyx":438 - * to_merge = idx - * ref = region2.maxi - * if (to_merge < 0): # <<<<<<<<<<<<<< - * logger.info("error in merging %s" % region1) - * else: - */ goto __pyx_L31; } + /*else*/ { - /* "pyFAI/ext/watershed.pyx":441 + /* "pyFAI/ext/watershed.pyx":446 * logger.info("error in merging %s" % region1) * else: * region2 = regions[to_merge] # <<<<<<<<<<<<<< * region = region1.merge(region2) * region.init_values(flat) */ - /*else*/ { if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_to_merge); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_to_merge); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_6); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_6); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_7)); - __pyx_t_7 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1)); + __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":442 + /* "pyFAI/ext/watershed.pyx":447 * else: * region2 = regions[to_merge] * region = region1.merge(region2) # <<<<<<<<<<<<<< * region.init_values(flat) * for key in region.peaks: */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_merge); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_merge); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_50 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { @@ -11853,34 +11401,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing } } if (!__pyx_t_50) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_region2)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_region2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_48 = PyTuple_New(1+1); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_48 = PyTuple_New(1+1); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_48); - __Pyx_GIVEREF(__pyx_t_50); PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_50); __pyx_t_50 = NULL; + PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_50); __Pyx_GIVEREF(__pyx_t_50); __pyx_t_50 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_region2)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_region2)); PyTuple_SET_ITEM(__pyx_t_48, 0+1, ((PyObject *)__pyx_v_region2)); - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_48, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(((PyObject *)__pyx_v_region2)); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_48, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_7)); - __pyx_t_7 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1)); + __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":443 + /* "pyFAI/ext/watershed.pyx":448 * region2 = regions[to_merge] * region = region1.merge(region2) * region.init_values(flat) # <<<<<<<<<<<<<< * for key in region.peaks: * regions[key] = region */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_48 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_48 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_48); __pyx_t_50 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { @@ -11893,24 +11441,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing } } if (!__pyx_t_50) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_48); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_48); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0; - __Pyx_GOTREF(__pyx_t_7); + __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_49 = PyTuple_New(1+1); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_49 = PyTuple_New(1+1); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_49); - __Pyx_GIVEREF(__pyx_t_50); PyTuple_SET_ITEM(__pyx_t_49, 0, __pyx_t_50); __pyx_t_50 = NULL; - __Pyx_GIVEREF(__pyx_t_48); + PyTuple_SET_ITEM(__pyx_t_49, 0, __pyx_t_50); __Pyx_GIVEREF(__pyx_t_50); __pyx_t_50 = NULL; PyTuple_SET_ITEM(__pyx_t_49, 0+1, __pyx_t_48); + __Pyx_GIVEREF(__pyx_t_48); __pyx_t_48 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_49, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_49, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_49); __pyx_t_49 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":444 + /* "pyFAI/ext/watershed.pyx":449 * region = region1.merge(region2) * region.init_values(flat) * for key in region.peaks: # <<<<<<<<<<<<<< @@ -11919,22 +11467,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_region->peaks == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_7 = __pyx_v_region->peaks; __Pyx_INCREF(__pyx_t_7); __pyx_t_46 = 0; + __pyx_t_1 = __pyx_v_region->peaks; __Pyx_INCREF(__pyx_t_1); __pyx_t_46 = 0; for (;;) { - if (__pyx_t_46 >= PyList_GET_SIZE(__pyx_t_7)) break; + if (__pyx_t_46 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_46); __Pyx_INCREF(__pyx_t_6); __pyx_t_46++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_46); __Pyx_INCREF(__pyx_t_6); __pyx_t_46++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_46); __pyx_t_46++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); + __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_46); __pyx_t_46++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_29 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_29 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_key = __pyx_t_5; + __pyx_v_key = __pyx_t_29; - /* "pyFAI/ext/watershed.pyx":445 + /* "pyFAI/ext/watershed.pyx":450 * region.init_values(flat) * for key in region.peaks: * regions[key] = region # <<<<<<<<<<<<<< @@ -11943,14 +11490,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_key); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_key); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_t_6, ((PyObject *)__pyx_v_region)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_t_6, ((PyObject *)__pyx_v_region)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":444 + /* "pyFAI/ext/watershed.pyx":449 * region = region1.merge(region2) * region.init_values(flat) * for key in region.peaks: # <<<<<<<<<<<<<< @@ -11958,9 +11505,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing * cnt += 1 */ } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":446 + /* "pyFAI/ext/watershed.pyx":451 * for key in region.peaks: * regions[key] = region * cnt += 1 # <<<<<<<<<<<<<< @@ -11970,17 +11517,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing __pyx_v_cnt = (__pyx_v_cnt + 1); } __pyx_L31:; - - /* "pyFAI/ext/watershed.pyx":401 - * for key1 in list(regions.keys()): - * region1 = regions[key1] - * if region1.maxi == region1.mini: # <<<<<<<<<<<<<< - * to_merge = -1 - * if region1.size == 1: - */ + goto __pyx_L5; } + __pyx_L5:; - /* "pyFAI/ext/watershed.pyx":399 + /* "pyFAI/ext/watershed.pyx":404 * int cnt = 0 * float[:] flat = self.data.ravel() * for key1 in list(regions.keys()): # <<<<<<<<<<<<<< @@ -11988,54 +11529,54 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing * if region1.maxi == region1.mini: */ } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/watershed.pyx":447 + /* "pyFAI/ext/watershed.pyx":452 * regions[key] = region * cnt += 1 * logger.info("Did %s merge_singleton" % cnt) # <<<<<<<<<<<<<< * * def merge_twins(self): */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_info); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_cnt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_49 = __Pyx_PyString_Format(__pyx_kp_s_Did_s_merge_singleton, __pyx_t_7); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_cnt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_49 = __Pyx_PyString_Format(__pyx_kp_s_Did_s_merge_singleton, __pyx_t_1); if (unlikely(!__pyx_t_49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_49); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } - if (!__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_49); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__pyx_t_1) { + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_49); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_49); __pyx_t_49 = 0; - __Pyx_GOTREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_t_7); } else { - __pyx_t_48 = PyTuple_New(1+1); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_48 = PyTuple_New(1+1); if (unlikely(!__pyx_t_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_48); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_49); + PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; PyTuple_SET_ITEM(__pyx_t_48, 0+1, __pyx_t_49); + __Pyx_GIVEREF(__pyx_t_49); __pyx_t_49 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_48, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_48, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/watershed.pyx":384 + /* "pyFAI/ext/watershed.pyx":389 * regions.pop(region.index) * * def merge_singleton(self): # <<<<<<<<<<<<<< @@ -12073,7 +11614,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":449 +/* "pyFAI/ext/watershed.pyx":454 * logger.info("Did %s merge_singleton" % cnt) * * def merge_twins(self): # <<<<<<<<<<<<<< @@ -12083,7 +11624,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_18merge_sing /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_21merge_twins(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twins[] = "\n Twins are two peak region which are best linked together:\n A -> B and B -> A\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twins[] = "InverseWatershed.merge_twins(self)\n\n Twins are two peak region which are best linked together:\n A -> B and B -> A\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_21merge_twins = {"merge_twins", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_21merge_twins, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twins}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_21merge_twins(PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; @@ -12131,16 +11672,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin int __pyx_clineno = 0; __Pyx_RefNannySetupContext("merge_twins", 0); - /* "pyFAI/ext/watershed.pyx":456 + /* "pyFAI/ext/watershed.pyx":461 * cdef: * int i, j, k, imax, imin, key1, key2, key * float[:] flat = self.data.ravel() # <<<<<<<<<<<<<< * numpy.uint8_t neighb = 0 * Region region1, region2, region */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -12154,21 +11695,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin } } if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1); - if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_4.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_flat = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; - /* "pyFAI/ext/watershed.pyx":457 + /* "pyFAI/ext/watershed.pyx":462 * int i, j, k, imax, imin, key1, key2, key * float[:] flat = self.data.ravel() * numpy.uint8_t neighb = 0 # <<<<<<<<<<<<<< @@ -12177,20 +11718,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ __pyx_v_neighb = 0; - /* "pyFAI/ext/watershed.pyx":459 + /* "pyFAI/ext/watershed.pyx":464 * numpy.uint8_t neighb = 0 * Region region1, region2, region * dict regions = self.regions # <<<<<<<<<<<<<< * float val, maxi, mini * bint found = True */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_regions = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":461 + /* "pyFAI/ext/watershed.pyx":466 * dict regions = self.regions * float val, maxi, mini * bint found = True # <<<<<<<<<<<<<< @@ -12199,20 +11740,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ __pyx_v_found = 1; - /* "pyFAI/ext/watershed.pyx":462 + /* "pyFAI/ext/watershed.pyx":467 * float val, maxi, mini * bint found = True * int width = self.width # <<<<<<<<<<<<<< * int cnt = 0 * for key1 in list(regions.keys()): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_width = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":463 + /* "pyFAI/ext/watershed.pyx":468 * bint found = True * int width = self.width * int cnt = 0 # <<<<<<<<<<<<<< @@ -12221,7 +11762,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ __pyx_v_cnt = 0; - /* "pyFAI/ext/watershed.pyx":464 + /* "pyFAI/ext/watershed.pyx":469 * int width = self.width * int cnt = 0 * for key1 in list(regions.keys()): # <<<<<<<<<<<<<< @@ -12230,28 +11771,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; + if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_key1 = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":465 + /* "pyFAI/ext/watershed.pyx":470 * int cnt = 0 * for key1 in list(regions.keys()): * region1 = regions[key1] # <<<<<<<<<<<<<< @@ -12260,18 +11805,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_key1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_3); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_key1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region1, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_2)); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":466 + /* "pyFAI/ext/watershed.pyx":471 * for key1 in list(regions.keys()): * region1 = regions[key1] * key2 = region1.pass_to # <<<<<<<<<<<<<< @@ -12281,7 +11826,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin __pyx_t_5 = __pyx_v_region1->pass_to; __pyx_v_key2 = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":467 + /* "pyFAI/ext/watershed.pyx":472 * region1 = regions[key1] * key2 = region1.pass_to * region2 = regions[key2] # <<<<<<<<<<<<<< @@ -12290,30 +11835,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_key2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_key2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_2); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_2); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_3)); - __pyx_t_3 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1)); + __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":468 + /* "pyFAI/ext/watershed.pyx":473 * key2 = region1.pass_to * region2 = regions[key2] * if region1 == region2: # <<<<<<<<<<<<<< * continue * if (region2.pass_to in region1.peaks and region1.pass_to in region2.peaks): */ - __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_region1), ((PyObject *)__pyx_v_region2), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_region1), ((PyObject *)__pyx_v_region2), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_7) { - /* "pyFAI/ext/watershed.pyx":469 + /* "pyFAI/ext/watershed.pyx":474 * region2 = regions[key2] * if region1 == region2: * continue # <<<<<<<<<<<<<< @@ -12321,43 +11866,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin * idx1 = region1.index */ goto __pyx_L3_continue; - - /* "pyFAI/ext/watershed.pyx":468 - * key2 = region1.pass_to - * region2 = regions[key2] - * if region1 == region2: # <<<<<<<<<<<<<< - * continue - * if (region2.pass_to in region1.peaks and region1.pass_to in region2.peaks): - */ } - /* "pyFAI/ext/watershed.pyx":470 + /* "pyFAI/ext/watershed.pyx":475 * if region1 == region2: * continue * if (region2.pass_to in region1.peaks and region1.pass_to in region2.peaks): # <<<<<<<<<<<<<< * idx1 = region1.index * idx2 = region2.index */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_region2->pass_to); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_region1->peaks, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_region2->pass_to); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_t_1, __pyx_v_region1->peaks, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = (__pyx_t_8 != 0); if (__pyx_t_9) { } else { __pyx_t_7 = __pyx_t_9; goto __pyx_L7_bool_binop_done; } - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_region1->pass_to); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_region2->peaks, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_region1->pass_to); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_t_1, __pyx_v_region2->peaks, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = (__pyx_t_9 != 0); __pyx_t_7 = __pyx_t_8; __pyx_L7_bool_binop_done:; if (__pyx_t_7) { - /* "pyFAI/ext/watershed.pyx":471 + /* "pyFAI/ext/watershed.pyx":476 * continue * if (region2.pass_to in region1.peaks and region1.pass_to in region2.peaks): * idx1 = region1.index # <<<<<<<<<<<<<< @@ -12367,7 +11904,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin __pyx_t_5 = __pyx_v_region1->index; __pyx_v_idx1 = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":472 + /* "pyFAI/ext/watershed.pyx":477 * if (region2.pass_to in region1.peaks and region1.pass_to in region2.peaks): * idx1 = region1.index * idx2 = region2.index # <<<<<<<<<<<<<< @@ -12377,14 +11914,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin __pyx_t_5 = __pyx_v_region2->index; __pyx_v_idx2 = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":474 + /* "pyFAI/ext/watershed.pyx":479 * idx2 = region2.index * # logger.info("merge %s(%s) %s(%s)" % (idx1, idx1, key2, idx2)) * region = region1.merge(region2) # <<<<<<<<<<<<<< * region.init_values(flat) * for key in region.peaks: */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_merge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_merge); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -12397,34 +11934,34 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin } } if (!__pyx_t_10) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_region2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_region2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_region2)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_region2)); PyTuple_SET_ITEM(__pyx_t_11, 0+1, ((PyObject *)__pyx_v_region2)); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(((PyObject *)__pyx_v_region2)); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_3)); - __pyx_t_3 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1)); + __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":475 + /* "pyFAI/ext/watershed.pyx":480 * # logger.info("merge %s(%s) %s(%s)" % (idx1, idx1, key2, idx2)) * region = region1.merge(region2) * region.init_values(flat) # <<<<<<<<<<<<<< * for key in region.peaks: * regions[key] = region */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) { @@ -12437,24 +11974,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin } } if (!__pyx_t_10) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL; - __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL; PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_11); + __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":476 + /* "pyFAI/ext/watershed.pyx":481 * region = region1.merge(region2) * region.init_values(flat) * for key in region.peaks: # <<<<<<<<<<<<<< @@ -12463,22 +12000,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ if (unlikely(__pyx_v_region->peaks == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_3 = __pyx_v_region->peaks; __Pyx_INCREF(__pyx_t_3); __pyx_t_13 = 0; + __pyx_t_1 = __pyx_v_region->peaks; __Pyx_INCREF(__pyx_t_1); __pyx_t_13 = 0; for (;;) { - if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_3)) break; + if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_13); __Pyx_INCREF(__pyx_t_2); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_2); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_key = __pyx_t_5; - /* "pyFAI/ext/watershed.pyx":477 + /* "pyFAI/ext/watershed.pyx":482 * region.init_values(flat) * for key in region.peaks: * regions[key] = region # <<<<<<<<<<<<<< @@ -12487,14 +12023,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_key); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_key); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_t_2, ((PyObject *)__pyx_v_region)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_t_2, ((PyObject *)__pyx_v_region)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":476 + /* "pyFAI/ext/watershed.pyx":481 * region = region1.merge(region2) * region.init_values(flat) * for key in region.peaks: # <<<<<<<<<<<<<< @@ -12502,9 +12038,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin * cnt += 1 */ } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":478 + /* "pyFAI/ext/watershed.pyx":483 * for key in region.peaks: * regions[key] = region * cnt += 1 # <<<<<<<<<<<<<< @@ -12512,17 +12048,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin * */ __pyx_v_cnt = (__pyx_v_cnt + 1); - - /* "pyFAI/ext/watershed.pyx":470 - * if region1 == region2: - * continue - * if (region2.pass_to in region1.peaks and region1.pass_to in region2.peaks): # <<<<<<<<<<<<<< - * idx1 = region1.index - * idx2 = region2.index - */ + goto __pyx_L6; } + __pyx_L6:; - /* "pyFAI/ext/watershed.pyx":464 + /* "pyFAI/ext/watershed.pyx":469 * int width = self.width * int cnt = 0 * for key1 in list(regions.keys()): # <<<<<<<<<<<<<< @@ -12531,54 +12061,54 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin */ __pyx_L3_continue:; } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/watershed.pyx":479 + /* "pyFAI/ext/watershed.pyx":484 * regions[key] = region * cnt += 1 * logger.info("Did %s merge_twins" % cnt) # <<<<<<<<<<<<<< * * def merge_intense(self, thres=1.0): */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_cnt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_12 = __Pyx_PyString_Format(__pyx_kp_s_Did_s_merge_twins, __pyx_t_3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_cnt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_12 = __Pyx_PyString_Format(__pyx_kp_s_Did_s_merge_twins, __pyx_t_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__pyx_t_1) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_GOTREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_t_3); } else { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "pyFAI/ext/watershed.pyx":449 + /* "pyFAI/ext/watershed.pyx":454 * logger.info("Did %s merge_singleton" % cnt) * * def merge_twins(self): # <<<<<<<<<<<<<< @@ -12610,7 +12140,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":481 +/* "pyFAI/ext/watershed.pyx":486 * logger.info("Did %s merge_twins" % cnt) * * def merge_intense(self, thres=1.0): # <<<<<<<<<<<<<< @@ -12620,7 +12150,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_20merge_twin /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_intense(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_intense[] = "\n Merge groups then (pass-mini)/(maxi-mini) >=thres\n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_intense[] = "InverseWatershed.merge_intense(self, thres=1.0)\n\n Merge groups then (pass-mini)/(maxi-mini) >=thres\n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_intense = {"merge_intense", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_intense, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_intense}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_intense(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -12656,7 +12186,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_inte } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "merge_intense") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "merge_intense") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12671,7 +12201,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_inte } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("merge_intense", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("merge_intense", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("pyFAI.ext.watershed.InverseWatershed.merge_intense", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12717,36 +12247,36 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte int __pyx_clineno = 0; __Pyx_RefNannySetupContext("merge_intense", 0); - /* "pyFAI/ext/watershed.pyx":485 + /* "pyFAI/ext/watershed.pyx":490 * Merge groups then (pass-mini)/(maxi-mini) >=thres * """ * if thres > self._actual_thres: # <<<<<<<<<<<<<< * logger.warning("Cannot increase threshold: was %s, requested %s. You should re-init the object." % self._actual_thres, thres) * self._actual_thres = thres */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_v_thres, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyObject_RichCompare(__pyx_v_thres, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { - /* "pyFAI/ext/watershed.pyx":486 + /* "pyFAI/ext/watershed.pyx":491 * """ * if thres > self._actual_thres: * logger.warning("Cannot increase threshold: was %s, requested %s. You should re-init the object." % self._actual_thres, thres) # <<<<<<<<<<<<<< * self._actual_thres = thres * cdef: */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_increase_threshold_was_s, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_increase_threshold_was_s, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; @@ -12761,64 +12291,58 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte __pyx_t_6 = 1; } } - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_1) { - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL; + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; } - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_thres); - __Pyx_GIVEREF(__pyx_v_thres); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_thres); + __Pyx_GIVEREF(__pyx_v_thres); __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "pyFAI/ext/watershed.pyx":485 - * Merge groups then (pass-mini)/(maxi-mini) >=thres - * """ - * if thres > self._actual_thres: # <<<<<<<<<<<<<< - * logger.warning("Cannot increase threshold: was %s, requested %s. You should re-init the object." % self._actual_thres, thres) - * self._actual_thres = thres - */ + goto __pyx_L3; } + __pyx_L3:; - /* "pyFAI/ext/watershed.pyx":487 + /* "pyFAI/ext/watershed.pyx":492 * if thres > self._actual_thres: * logger.warning("Cannot increase threshold: was %s, requested %s. You should re-init the object." % self._actual_thres, thres) * self._actual_thres = thres # <<<<<<<<<<<<<< * cdef: * int key1, key2, idx1, idx2 */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres, __pyx_v_thres) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_actual_thres, __pyx_v_thres) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":491 + /* "pyFAI/ext/watershed.pyx":496 * int key1, key2, idx1, idx2 * Region region1, region2, region * dict regions = self.regions # <<<<<<<<<<<<<< * float ratio * float[:] flat = self.data.ravel() */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_regions = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; - /* "pyFAI/ext/watershed.pyx":493 + /* "pyFAI/ext/watershed.pyx":498 * dict regions = self.regions * float ratio * float[:] flat = self.data.ravel() # <<<<<<<<<<<<<< * int cnt = 0 * for key1 in list(regions.keys()): */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -12832,21 +12356,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte } } if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_2); - if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_8.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_flat = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "pyFAI/ext/watershed.pyx":494 + /* "pyFAI/ext/watershed.pyx":499 * float ratio * float[:] flat = self.data.ravel() * int cnt = 0 # <<<<<<<<<<<<<< @@ -12855,7 +12379,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte */ __pyx_v_cnt = 0; - /* "pyFAI/ext/watershed.pyx":495 + /* "pyFAI/ext/watershed.pyx":500 * float[:] flat = self.data.ravel() * int cnt = 0 * for key1 in list(regions.keys()): # <<<<<<<<<<<<<< @@ -12864,28 +12388,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_regions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __pyx_t_7; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0; + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __pyx_t_2; __Pyx_INCREF(__pyx_t_7); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break; + if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_key1 = __pyx_t_9; - /* "pyFAI/ext/watershed.pyx":496 + /* "pyFAI/ext/watershed.pyx":501 * int cnt = 0 * for key1 in list(regions.keys()): * region1 = regions[key1] # <<<<<<<<<<<<<< @@ -12894,18 +12422,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_key1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_7); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_key1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_2); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region1, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_4)); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":497 + /* "pyFAI/ext/watershed.pyx":502 * for key1 in list(regions.keys()): * region1 = regions[key1] * if region1.maxi == region1.mini: # <<<<<<<<<<<<<< @@ -12915,46 +12443,46 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte __pyx_t_3 = ((__pyx_v_region1->maxi == __pyx_v_region1->mini) != 0); if (__pyx_t_3) { - /* "pyFAI/ext/watershed.pyx":498 + /* "pyFAI/ext/watershed.pyx":503 * region1 = regions[key1] * if region1.maxi == region1.mini: * logger.error(region1) # <<<<<<<<<<<<<< * continue * ratio = (region1.highest_pass - region1.mini) / (region1.maxi - region1.mini) */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_7)) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } - if (!__pyx_t_7) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_region1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!__pyx_t_2) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_region1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_region1)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_region1)); PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_region1)); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(((PyObject *)__pyx_v_region1)); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":499 + /* "pyFAI/ext/watershed.pyx":504 * if region1.maxi == region1.mini: * logger.error(region1) * continue # <<<<<<<<<<<<<< @@ -12962,17 +12490,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte * if ratio >= thres: */ goto __pyx_L4_continue; - - /* "pyFAI/ext/watershed.pyx":497 - * for key1 in list(regions.keys()): - * region1 = regions[key1] - * if region1.maxi == region1.mini: # <<<<<<<<<<<<<< - * logger.error(region1) - * continue - */ } - /* "pyFAI/ext/watershed.pyx":500 + /* "pyFAI/ext/watershed.pyx":505 * logger.error(region1) * continue * ratio = (region1.highest_pass - region1.mini) / (region1.maxi - region1.mini) # <<<<<<<<<<<<<< @@ -12982,27 +12502,33 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte __pyx_t_10 = (__pyx_v_region1->highest_pass - __pyx_v_region1->mini); __pyx_t_11 = (__pyx_v_region1->maxi - __pyx_v_region1->mini); if (unlikely(__pyx_t_11 == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_ratio = (__pyx_t_10 / __pyx_t_11); - /* "pyFAI/ext/watershed.pyx":501 + /* "pyFAI/ext/watershed.pyx":506 * continue * ratio = (region1.highest_pass - region1.mini) / (region1.maxi - region1.mini) * if ratio >= thres: # <<<<<<<<<<<<<< * key2 = region1.pass_to * idx1 = region1.index */ - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_ratio); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_ratio); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_v_thres, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_v_thres, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_3) { - /* "pyFAI/ext/watershed.pyx":502 + /* "pyFAI/ext/watershed.pyx":507 * ratio = (region1.highest_pass - region1.mini) / (region1.maxi - region1.mini) * if ratio >= thres: * key2 = region1.pass_to # <<<<<<<<<<<<<< @@ -13012,7 +12538,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte __pyx_t_9 = __pyx_v_region1->pass_to; __pyx_v_key2 = __pyx_t_9; - /* "pyFAI/ext/watershed.pyx":503 + /* "pyFAI/ext/watershed.pyx":508 * if ratio >= thres: * key2 = region1.pass_to * idx1 = region1.index # <<<<<<<<<<<<<< @@ -13022,7 +12548,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte __pyx_t_9 = __pyx_v_region1->index; __pyx_v_idx1 = __pyx_t_9; - /* "pyFAI/ext/watershed.pyx":504 + /* "pyFAI/ext/watershed.pyx":509 * key2 = region1.pass_to * idx1 = region1.index * region2 = regions[key2] # <<<<<<<<<<<<<< @@ -13031,18 +12557,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_key2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_key2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_5); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_5); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region2, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_4)); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":505 + /* "pyFAI/ext/watershed.pyx":510 * idx1 = region1.index * region2 = regions[key2] * idx2 = region2.index # <<<<<<<<<<<<<< @@ -13052,14 +12578,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte __pyx_t_9 = __pyx_v_region2->index; __pyx_v_idx2 = __pyx_t_9; - /* "pyFAI/ext/watershed.pyx":507 + /* "pyFAI/ext/watershed.pyx":512 * idx2 = region2.index * # print("merge %s(%s) %s(%s)" % (idx1, idx1, key2, idx2)) * region = region1.merge(region2) # <<<<<<<<<<<<<< * region.init_values(flat) * for key in region.peaks: */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_merge); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_merge); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { @@ -13072,35 +12598,35 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte } } if (!__pyx_t_1) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_region2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_region2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL; + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; __Pyx_INCREF(((PyObject *)__pyx_v_region2)); + PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)__pyx_v_region2)); __Pyx_GIVEREF(((PyObject *)__pyx_v_region2)); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_region2)); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_4)); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":508 + /* "pyFAI/ext/watershed.pyx":513 * # print("merge %s(%s) %s(%s)" % (idx1, idx1, key2, idx2)) * region = region1.merge(region2) * region.init_values(flat) # <<<<<<<<<<<<<< * for key in region.peaks: * regions[key] = region */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region), __pyx_n_s_init_values); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); @@ -13112,24 +12638,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte } } if (!__pyx_t_1) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_1); __pyx_t_1 = NULL; - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_7); - __pyx_t_7 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL; + PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":509 + /* "pyFAI/ext/watershed.pyx":514 * region = region1.merge(region2) * region.init_values(flat) * for key in region.peaks: # <<<<<<<<<<<<<< @@ -13138,21 +12664,20 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte */ if (unlikely(__pyx_v_region->peaks == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_4 = __pyx_v_region->peaks; __Pyx_INCREF(__pyx_t_4); __pyx_t_13 = 0; for (;;) { if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_5); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_5); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/watershed.pyx":510 + /* "pyFAI/ext/watershed.pyx":515 * region.init_values(flat) * for key in region.peaks: * regions[key] = region # <<<<<<<<<<<<<< @@ -13161,11 +12686,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_v_key, ((PyObject *)__pyx_v_region)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyDict_SetItem(__pyx_v_regions, __pyx_v_key, ((PyObject *)__pyx_v_region)) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":509 + /* "pyFAI/ext/watershed.pyx":514 * region = region1.merge(region2) * region.init_values(flat) * for key in region.peaks: # <<<<<<<<<<<<<< @@ -13175,7 +12700,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":511 + /* "pyFAI/ext/watershed.pyx":516 * for key in region.peaks: * regions[key] = region * cnt += 1 # <<<<<<<<<<<<<< @@ -13183,17 +12708,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte * */ __pyx_v_cnt = (__pyx_v_cnt + 1); - - /* "pyFAI/ext/watershed.pyx":501 - * continue - * ratio = (region1.highest_pass - region1.mini) / (region1.maxi - region1.mini) - * if ratio >= thres: # <<<<<<<<<<<<<< - * key2 = region1.pass_to - * idx1 = region1.index - */ + goto __pyx_L7; } + __pyx_L7:; - /* "pyFAI/ext/watershed.pyx":495 + /* "pyFAI/ext/watershed.pyx":500 * float[:] flat = self.data.ravel() * int cnt = 0 * for key1 in list(regions.keys()): # <<<<<<<<<<<<<< @@ -13202,23 +12721,23 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte */ __pyx_L4_continue:; } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/watershed.pyx":512 + /* "pyFAI/ext/watershed.pyx":517 * regions[key] = region * cnt += 1 * logger.info("Did %s merge_intense" % cnt) # <<<<<<<<<<<<<< * * def peaks_from_area(self, mask, Imin=None, keep=None, bint refine=True, float dmin=0.0, **kwarg): */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cnt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cnt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_12 = __Pyx_PyString_Format(__pyx_kp_s_Did_s_merge_intense, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyString_Format(__pyx_kp_s_Did_s_merge_intense, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -13232,24 +12751,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte } } if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; + } else { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL; + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_12); __pyx_t_12 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "pyFAI/ext/watershed.pyx":481 + /* "pyFAI/ext/watershed.pyx":486 * logger.info("Did %s merge_twins" % cnt) * * def merge_intense(self, thres=1.0): # <<<<<<<<<<<<<< @@ -13282,17 +12801,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_22merge_inte return __pyx_r; } -/* "pyFAI/ext/watershed.pyx":514 +/* "pyFAI/ext/watershed.pyx":519 * logger.info("Did %s merge_intense" % cnt) * * def peaks_from_area(self, mask, Imin=None, keep=None, bint refine=True, float dmin=0.0, **kwarg): # <<<<<<<<<<<<<< * """ - * @param mask: mask of data points valid + * :param mask: mask of data points valid */ /* Python wrapper */ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from_area(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from_area[] = "\n @param mask: mask of data points valid\n @param Imin: Minimum intensity for a peak \n @param keep: Number of points to keep\n @param refine: refine sub-pixel position\n @param dmin: minimum distance from \n "; +static char __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from_area[] = "InverseWatershed.peaks_from_area(self, mask, Imin=None, keep=None, bool refine=True, float dmin=0.0, **kwarg)\n\n :param mask: mask of data points valid\n :param Imin: Minimum intensity for a peak \n :param keep: Number of points to keep\n :param refine: refine sub-pixel position\n :param dmin: minimum distance from \n "; static PyMethodDef __pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from_area = {"peaks_from_area", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from_area, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from_area}; static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from_area(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_self = 0; @@ -13336,7 +12855,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mask)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("peaks_from_area", 0, 2, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("peaks_from_area", 0, 2, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -13360,7 +12879,7 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwarg, values, pos_args, "peaks_from_area") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwarg, values, pos_args, "peaks_from_area") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -13379,19 +12898,19 @@ static PyObject *__pyx_pw_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from __pyx_v_Imin = values[2]; __pyx_v_keep = values[3]; if (values[4]) { - __pyx_v_refine = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_refine == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_refine = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_refine == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_refine = ((int)((int)1)); } if (values[5]) { - __pyx_v_dmin = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_dmin == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_dmin = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_dmin == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_dmin = ((float)((double)0.0)); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("peaks_from_area", 0, 2, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("peaks_from_area", 0, 2, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_DECREF(__pyx_v_kwarg); __pyx_v_kwarg = 0; __Pyx_AddTraceback("pyFAI.ext.watershed.InverseWatershed.peaks_from_area", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -13444,11 +12963,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_12 = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *(*__pyx_t_13)(PyObject *); - Py_ssize_t __pyx_t_14; + int __pyx_t_14; int __pyx_t_15; - Py_ssize_t __pyx_t_16; + int __pyx_t_16; int __pyx_t_17; - Py_ssize_t __pyx_t_18; + int __pyx_t_18; int __pyx_t_19; Py_ssize_t __pyx_t_20; double __pyx_t_21; @@ -13458,32 +12977,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from int __pyx_clineno = 0; __Pyx_RefNannySetupContext("peaks_from_area", 0); - /* "pyFAI/ext/watershed.pyx":523 + /* "pyFAI/ext/watershed.pyx":528 * """ * cdef: * int i, j, l, x, y, width = self.width # <<<<<<<<<<<<<< * numpy.uint8_t[:] mask_flat = numpy.ascontiguousarray(mask.ravel(), numpy.uint8) * int[:] input_points = numpy.where(mask_flat)[0].astype(numpy.int32) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_width = __pyx_t_2; - /* "pyFAI/ext/watershed.pyx":524 + /* "pyFAI/ext/watershed.pyx":529 * cdef: * int i, j, l, x, y, width = self.width * numpy.uint8_t[:] mask_flat = numpy.ascontiguousarray(mask.ravel(), numpy.uint8) # <<<<<<<<<<<<<< * int[:] input_points = numpy.where(mask_flat)[0].astype(numpy.int32) * numpy.int32_t[:] labels = self.labels.ravel() */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) { @@ -13496,16 +13015,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } } if (__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; @@ -13520,41 +13039,41 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __pyx_t_7 = 1; } } - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; } - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1); - if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_9.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_mask_flat = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; - /* "pyFAI/ext/watershed.pyx":525 + /* "pyFAI/ext/watershed.pyx":530 * int i, j, l, x, y, width = self.width * numpy.uint8_t[:] mask_flat = numpy.ascontiguousarray(mask.ravel(), numpy.uint8) * int[:] input_points = numpy.where(mask_flat)[0].astype(numpy.int32) # <<<<<<<<<<<<<< * numpy.int32_t[:] labels = self.labels.ravel() * dict regions = self.regions */ - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_where); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_where); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_mask_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_uint8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_uint8_t, 0);; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_mask_flat, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_uint8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_uint8_t, 0);; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -13567,30 +13086,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } } if (!__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL; PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_8); + __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; @@ -13604,38 +13123,38 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } } if (!__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL; PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_int(__pyx_t_1); - if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_10.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_input_points = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; - /* "pyFAI/ext/watershed.pyx":526 + /* "pyFAI/ext/watershed.pyx":531 * numpy.uint8_t[:] mask_flat = numpy.ascontiguousarray(mask.ravel(), numpy.uint8) * int[:] input_points = numpy.where(mask_flat)[0].astype(numpy.int32) * numpy.int32_t[:] labels = self.labels.ravel() # <<<<<<<<<<<<<< * dict regions = self.regions * Region region */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_labels); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -13649,71 +13168,71 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } } if (__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(__pyx_t_1); - if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_11.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_labels = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "pyFAI/ext/watershed.pyx":527 + /* "pyFAI/ext/watershed.pyx":532 * int[:] input_points = numpy.where(mask_flat)[0].astype(numpy.int32) * numpy.int32_t[:] labels = self.labels.ravel() * dict regions = self.regions # <<<<<<<<<<<<<< * Region region * list output_points = [], intensities = [], argsort, tmp_lst, rej_lst */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_regions = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":529 + /* "pyFAI/ext/watershed.pyx":534 * dict regions = self.regions * Region region * list output_points = [], intensities = [], argsort, tmp_lst, rej_lst # <<<<<<<<<<<<<< * set keep_regions = set() * float[:] data = self.data.ravel() */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_output_points = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_intensities = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":530 + /* "pyFAI/ext/watershed.pyx":535 * Region region * list output_points = [], intensities = [], argsort, tmp_lst, rej_lst * set keep_regions = set() # <<<<<<<<<<<<<< * float[:] data = self.data.ravel() * double d2, dmin2 */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_keep_regions = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":531 + /* "pyFAI/ext/watershed.pyx":536 * list output_points = [], intensities = [], argsort, tmp_lst, rej_lst * set keep_regions = set() * float[:] data = self.data.ravel() # <<<<<<<<<<<<<< * double d2, dmin2 * for i in input_points: */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; @@ -13727,36 +13246,36 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } } if (__pyx_t_8) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1); - if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__pyx_t_12.memview)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_data = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; - /* "pyFAI/ext/watershed.pyx":533 + /* "pyFAI/ext/watershed.pyx":538 * float[:] data = self.data.ravel() * double d2, dmin2 * for i in input_points: # <<<<<<<<<<<<<< * l = labels[i] * region = regions[l] */ - __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_input_points, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_input_points, 1, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0; __pyx_t_13 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -13764,18 +13283,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -13784,36 +13301,36 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_i = __pyx_t_2; - /* "pyFAI/ext/watershed.pyx":534 + /* "pyFAI/ext/watershed.pyx":539 * double d2, dmin2 * for i in input_points: * l = labels[i] # <<<<<<<<<<<<<< * region = regions[l] * keep_regions.add(region.index) */ - __pyx_t_14 = __pyx_v_i; - __pyx_t_2 = -1; - if (__pyx_t_14 < 0) { - __pyx_t_14 += __pyx_v_labels.shape[0]; - if (unlikely(__pyx_t_14 < 0)) __pyx_t_2 = 0; - } else if (unlikely(__pyx_t_14 >= __pyx_v_labels.shape[0])) __pyx_t_2 = 0; - if (unlikely(__pyx_t_2 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_2); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_v_i; + __pyx_t_14 = -1; + if (__pyx_t_2 < 0) { + __pyx_t_2 += __pyx_v_labels.shape[0]; + if (unlikely(__pyx_t_2 < 0)) __pyx_t_14 = 0; + } else if (unlikely(__pyx_t_2 >= __pyx_v_labels.shape[0])) __pyx_t_14 = 0; + if (unlikely(__pyx_t_14 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_14); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_v_l = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_14 * __pyx_v_labels.strides[0]) ))); + __pyx_v_l = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_labels.data + __pyx_t_2 * __pyx_v_labels.strides[0]) ))); - /* "pyFAI/ext/watershed.pyx":535 + /* "pyFAI/ext/watershed.pyx":540 * for i in input_points: * l = labels[i] * region = regions[l] # <<<<<<<<<<<<<< @@ -13822,30 +13339,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_8 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_8)); __pyx_t_8 = 0; - /* "pyFAI/ext/watershed.pyx":536 + /* "pyFAI/ext/watershed.pyx":541 * l = labels[i] * region = regions[l] * keep_regions.add(region.index) # <<<<<<<<<<<<<< * for i in keep_regions: * region = regions[i] */ - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_region->index); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_region->index); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_15 = PySet_Add(__pyx_v_keep_regions, __pyx_t_8); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = PySet_Add(__pyx_v_keep_regions, __pyx_t_8); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/watershed.pyx":533 + /* "pyFAI/ext/watershed.pyx":538 * float[:] data = self.data.ravel() * double d2, dmin2 * for i in input_points: # <<<<<<<<<<<<<< @@ -13855,16 +13372,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":537 + /* "pyFAI/ext/watershed.pyx":542 * region = regions[l] * keep_regions.add(region.index) * for i in keep_regions: # <<<<<<<<<<<<<< * region = regions[i] * for j in region.peaks: */ - __pyx_t_4 = PyObject_GetIter(__pyx_v_keep_regions); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_GetIter(__pyx_v_keep_regions); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} for (;;) { { __pyx_t_8 = __pyx_t_13(__pyx_t_4); @@ -13872,17 +13389,17 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } __Pyx_GOTREF(__pyx_t_8); } - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_i = __pyx_t_2; + __pyx_v_i = __pyx_t_14; - /* "pyFAI/ext/watershed.pyx":538 + /* "pyFAI/ext/watershed.pyx":543 * keep_regions.add(region.index) * for i in keep_regions: * region = regions[i] # <<<<<<<<<<<<<< @@ -13891,18 +13408,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from */ if (unlikely(__pyx_v_regions == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_8); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_regions, __pyx_t_8); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5pyFAI_3ext_9watershed_Region))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_region, ((struct __pyx_obj_5pyFAI_3ext_9watershed_Region *)__pyx_t_1)); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":539 + /* "pyFAI/ext/watershed.pyx":544 * for i in keep_regions: * region = regions[i] * for j in region.peaks: # <<<<<<<<<<<<<< @@ -13911,133 +13428,126 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from */ if (unlikely(__pyx_v_region->peaks == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = __pyx_v_region->peaks; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_8); + __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_j = __pyx_t_2; + __pyx_v_j = __pyx_t_14; - /* "pyFAI/ext/watershed.pyx":540 + /* "pyFAI/ext/watershed.pyx":545 * region = regions[i] * for j in region.peaks: * if mask_flat[j]: # <<<<<<<<<<<<<< * intensities.append(data[j]) * x = j % self.width */ - __pyx_t_16 = __pyx_v_j; - __pyx_t_2 = -1; - if (__pyx_t_16 < 0) { - __pyx_t_16 += __pyx_v_mask_flat.shape[0]; - if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0; - } else if (unlikely(__pyx_t_16 >= __pyx_v_mask_flat.shape[0])) __pyx_t_2 = 0; - if (unlikely(__pyx_t_2 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_2); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_14 = __pyx_v_j; + __pyx_t_16 = -1; + if (__pyx_t_14 < 0) { + __pyx_t_14 += __pyx_v_mask_flat.shape[0]; + if (unlikely(__pyx_t_14 < 0)) __pyx_t_16 = 0; + } else if (unlikely(__pyx_t_14 >= __pyx_v_mask_flat.shape[0])) __pyx_t_16 = 0; + if (unlikely(__pyx_t_16 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_16); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_17 = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_mask_flat.data + __pyx_t_16 * __pyx_v_mask_flat.strides[0]) ))) != 0); + __pyx_t_17 = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_mask_flat.data + __pyx_t_14 * __pyx_v_mask_flat.strides[0]) ))) != 0); if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":541 + /* "pyFAI/ext/watershed.pyx":546 * for j in region.peaks: * if mask_flat[j]: * intensities.append(data[j]) # <<<<<<<<<<<<<< * x = j % self.width * y = j // self.width */ - __pyx_t_18 = __pyx_v_j; - __pyx_t_2 = -1; - if (__pyx_t_18 < 0) { - __pyx_t_18 += __pyx_v_data.shape[0]; - if (unlikely(__pyx_t_18 < 0)) __pyx_t_2 = 0; - } else if (unlikely(__pyx_t_18 >= __pyx_v_data.shape[0])) __pyx_t_2 = 0; - if (unlikely(__pyx_t_2 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_2); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_16 = __pyx_v_j; + __pyx_t_18 = -1; + if (__pyx_t_16 < 0) { + __pyx_t_16 += __pyx_v_data.shape[0]; + if (unlikely(__pyx_t_16 < 0)) __pyx_t_18 = 0; + } else if (unlikely(__pyx_t_16 >= __pyx_v_data.shape[0])) __pyx_t_18 = 0; + if (unlikely(__pyx_t_18 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_18); + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_8 = PyFloat_FromDouble((*((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_18 * __pyx_v_data.strides[0]) )))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyFloat_FromDouble((*((float *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_16 * __pyx_v_data.strides[0]) )))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_intensities, __pyx_t_8); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_intensities, __pyx_t_8); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/watershed.pyx":542 + /* "pyFAI/ext/watershed.pyx":547 * if mask_flat[j]: * intensities.append(data[j]) * x = j % self.width # <<<<<<<<<<<<<< * y = j // self.width * output_points.append((y, x)) */ - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyNumber_Remainder(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyNumber_Remainder(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_18 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_x = __pyx_t_2; + __pyx_v_x = __pyx_t_18; - /* "pyFAI/ext/watershed.pyx":543 + /* "pyFAI/ext/watershed.pyx":548 * intensities.append(data[j]) * x = j % self.width * y = j // self.width # <<<<<<<<<<<<<< * output_points.append((y, x)) * if refine: */ - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_j); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_width); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = PyNumber_FloorDivide(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyNumber_FloorDivide(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_18 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_y = __pyx_t_2; + __pyx_v_y = __pyx_t_18; - /* "pyFAI/ext/watershed.pyx":544 + /* "pyFAI/ext/watershed.pyx":549 * x = j % self.width * y = j // self.width * output_points.append((y, x)) # <<<<<<<<<<<<<< * if refine: * for i in range(len(output_points)): */ - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_y); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_y); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_x); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_x); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); __pyx_t_8 = 0; __pyx_t_5 = 0; - __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_output_points, __pyx_t_6); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_output_points, __pyx_t_6); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "pyFAI/ext/watershed.pyx":540 - * region = regions[i] - * for j in region.peaks: - * if mask_flat[j]: # <<<<<<<<<<<<<< - * intensities.append(data[j]) - * x = j % self.width - */ + goto __pyx_L9; } + __pyx_L9:; - /* "pyFAI/ext/watershed.pyx":539 + /* "pyFAI/ext/watershed.pyx":544 * for i in keep_regions: * region = regions[i] * for j in region.peaks: # <<<<<<<<<<<<<< @@ -14047,7 +13557,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":537 + /* "pyFAI/ext/watershed.pyx":542 * region = regions[l] * keep_regions.add(region.index) * for i in keep_regions: # <<<<<<<<<<<<<< @@ -14057,7 +13567,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":545 + /* "pyFAI/ext/watershed.pyx":550 * y = j // self.width * output_points.append((y, x)) * if refine: # <<<<<<<<<<<<<< @@ -14067,30 +13577,30 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __pyx_t_17 = (__pyx_v_refine != 0); if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":546 + /* "pyFAI/ext/watershed.pyx":551 * output_points.append((y, x)) * if refine: * for i in range(len(output_points)): # <<<<<<<<<<<<<< * output_points[i] = self.bilinear.local_maxi(output_points[i]) * if Imin or keep: */ - __pyx_t_7 = PyList_GET_SIZE(__pyx_v_output_points); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_7; __pyx_t_2+=1) { - __pyx_v_i = __pyx_t_2; + __pyx_t_7 = PyList_GET_SIZE(__pyx_v_output_points); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_7; __pyx_t_18+=1) { + __pyx_v_i = __pyx_t_18; - /* "pyFAI/ext/watershed.pyx":547 + /* "pyFAI/ext/watershed.pyx":552 * if refine: * for i in range(len(output_points)): * output_points[i] = self.bilinear.local_maxi(output_points[i]) # <<<<<<<<<<<<<< * if Imin or keep: * argsort = sorted(range(len(intensities)), key=intensities.__getitem__, reverse=True) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bilinear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bilinear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_local_maxi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_local_maxi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_output_points, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_output_points, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) { @@ -14103,186 +13613,174 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } } if (!__pyx_t_5) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_4); } else { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(__Pyx_SetItemInt(__pyx_v_output_points, __pyx_v_i, __pyx_t_4, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_SetItemInt(__pyx_v_output_points, __pyx_v_i, __pyx_t_4, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } - - /* "pyFAI/ext/watershed.pyx":545 - * y = j // self.width - * output_points.append((y, x)) - * if refine: # <<<<<<<<<<<<<< - * for i in range(len(output_points)): - * output_points[i] = self.bilinear.local_maxi(output_points[i]) - */ + goto __pyx_L10; } + __pyx_L10:; - /* "pyFAI/ext/watershed.pyx":548 + /* "pyFAI/ext/watershed.pyx":553 * for i in range(len(output_points)): * output_points[i] = self.bilinear.local_maxi(output_points[i]) * if Imin or keep: # <<<<<<<<<<<<<< * argsort = sorted(range(len(intensities)), key=intensities.__getitem__, reverse=True) * if Imin: */ - __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_v_Imin); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_v_Imin); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_19) { } else { __pyx_t_17 = __pyx_t_19; goto __pyx_L14_bool_binop_done; } - __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_v_keep); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_v_keep); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_17 = __pyx_t_19; __pyx_L14_bool_binop_done:; if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":549 + /* "pyFAI/ext/watershed.pyx":554 * output_points[i] = self.bilinear.local_maxi(output_points[i]) * if Imin or keep: * argsort = sorted(range(len(intensities)), key=intensities.__getitem__, reverse=True) # <<<<<<<<<<<<<< * if Imin: * argsort = [i for i in argsort if intensities[i] >= Imin] */ - __pyx_t_7 = PyList_GET_SIZE(__pyx_v_intensities); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyList_GET_SIZE(__pyx_v_intensities); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_intensities, __pyx_n_s_getitem); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_intensities, __pyx_n_s_getitem); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_key, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_key, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_reverse, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_sorted, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_reverse, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_sorted, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(PyList_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_8)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyList_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_8)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_argsort = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/watershed.pyx":550 + /* "pyFAI/ext/watershed.pyx":555 * if Imin or keep: * argsort = sorted(range(len(intensities)), key=intensities.__getitem__, reverse=True) * if Imin: # <<<<<<<<<<<<<< * argsort = [i for i in argsort if intensities[i] >= Imin] * output_points = [output_points[i] for i in argsort] */ - __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_v_Imin); if (unlikely(__pyx_t_17 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_v_Imin); if (unlikely(__pyx_t_17 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":551 + /* "pyFAI/ext/watershed.pyx":556 * argsort = sorted(range(len(intensities)), key=intensities.__getitem__, reverse=True) * if Imin: * argsort = [i for i in argsort if intensities[i] >= Imin] # <<<<<<<<<<<<<< * output_points = [output_points[i] for i in argsort] * */ - __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); if (unlikely(__pyx_v_argsort == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_4 = __pyx_v_argsort; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); + __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_18 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_i = __pyx_t_2; - __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_intensities, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_v_i = __pyx_t_18; + __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_intensities, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Imin, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Imin, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_17 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_17 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_17) { - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L19; } + __pyx_L19:; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_argsort, ((PyObject*)__pyx_t_8)); __pyx_t_8 = 0; - - /* "pyFAI/ext/watershed.pyx":550 - * if Imin or keep: - * argsort = sorted(range(len(intensities)), key=intensities.__getitem__, reverse=True) - * if Imin: # <<<<<<<<<<<<<< - * argsort = [i for i in argsort if intensities[i] >= Imin] - * output_points = [output_points[i] for i in argsort] - */ + goto __pyx_L16; } + __pyx_L16:; - /* "pyFAI/ext/watershed.pyx":552 + /* "pyFAI/ext/watershed.pyx":557 * if Imin: * argsort = [i for i in argsort if intensities[i] >= Imin] * output_points = [output_points[i] for i in argsort] # <<<<<<<<<<<<<< * * if dmin: */ - __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); if (unlikely(__pyx_v_argsort == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_4 = __pyx_v_argsort; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_18 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_18 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_i = __pyx_t_2; - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_output_points, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_v_i = __pyx_t_18; + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_output_points, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_ListComp_Append(__pyx_t_8, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_output_points, ((PyObject*)__pyx_t_8)); __pyx_t_8 = 0; - /* "pyFAI/ext/watershed.pyx":554 + /* "pyFAI/ext/watershed.pyx":559 * output_points = [output_points[i] for i in argsort] * * if dmin: # <<<<<<<<<<<<<< @@ -14292,7 +13790,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __pyx_t_17 = (__pyx_v_dmin != 0); if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":555 + /* "pyFAI/ext/watershed.pyx":560 * * if dmin: * dmin2 = dmin * dmin # <<<<<<<<<<<<<< @@ -14300,54 +13798,46 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from * dmin2 = 0.0 */ __pyx_v_dmin2 = (__pyx_v_dmin * __pyx_v_dmin); - - /* "pyFAI/ext/watershed.pyx":554 - * output_points = [output_points[i] for i in argsort] - * - * if dmin: # <<<<<<<<<<<<<< - * dmin2 = dmin * dmin - * else: - */ goto __pyx_L22; } + /*else*/ { - /* "pyFAI/ext/watershed.pyx":557 + /* "pyFAI/ext/watershed.pyx":562 * dmin2 = dmin * dmin * else: * dmin2 = 0.0 # <<<<<<<<<<<<<< * if keep and len(output_points) > keep: * tmp_lst = output_points */ - /*else*/ { __pyx_v_dmin2 = 0.0; } __pyx_L22:; - /* "pyFAI/ext/watershed.pyx":558 + /* "pyFAI/ext/watershed.pyx":563 * else: * dmin2 = 0.0 * if keep and len(output_points) > keep: # <<<<<<<<<<<<<< * tmp_lst = output_points * rej_lst = [] */ - __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_v_keep); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_v_keep); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_19) { } else { __pyx_t_17 = __pyx_t_19; goto __pyx_L24_bool_binop_done; } - __pyx_t_7 = PyList_GET_SIZE(__pyx_v_output_points); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyList_GET_SIZE(__pyx_v_output_points); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_v_keep, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_v_keep, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_19 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_17 = __pyx_t_19; __pyx_L24_bool_binop_done:; if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":559 + /* "pyFAI/ext/watershed.pyx":564 * dmin2 = 0.0 * if keep and len(output_points) > keep: * tmp_lst = output_points # <<<<<<<<<<<<<< @@ -14357,31 +13847,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __Pyx_INCREF(__pyx_v_output_points); __pyx_v_tmp_lst = __pyx_v_output_points; - /* "pyFAI/ext/watershed.pyx":560 + /* "pyFAI/ext/watershed.pyx":565 * if keep and len(output_points) > keep: * tmp_lst = output_points * rej_lst = [] # <<<<<<<<<<<<<< * output_points = [] * for pt in tmp_lst: */ - __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_v_rej_lst = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":561 + /* "pyFAI/ext/watershed.pyx":566 * tmp_lst = output_points * rej_lst = [] * output_points = [] # <<<<<<<<<<<<<< * for pt in tmp_lst: * for pt2 in output_points: */ - __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF_SET(__pyx_v_output_points, ((PyObject*)__pyx_t_4)); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":562 + /* "pyFAI/ext/watershed.pyx":567 * rej_lst = [] * output_points = [] * for pt in tmp_lst: # <<<<<<<<<<<<<< @@ -14392,15 +13882,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from for (;;) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_8 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_8); + __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_pt, __pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/watershed.pyx":563 + /* "pyFAI/ext/watershed.pyx":568 * output_points = [] * for pt in tmp_lst: * for pt2 in output_points: # <<<<<<<<<<<<<< @@ -14411,52 +13900,51 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from for (;;) { if (__pyx_t_20 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_20); __Pyx_INCREF(__pyx_t_1); __pyx_t_20++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_20); __Pyx_INCREF(__pyx_t_1); __pyx_t_20++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_20); __pyx_t_20++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_XDECREF_SET(__pyx_v_pt2, __pyx_t_1); __pyx_t_1 = 0; - /* "pyFAI/ext/watershed.pyx":564 + /* "pyFAI/ext/watershed.pyx":569 * for pt in tmp_lst: * for pt2 in output_points: * d2 = (pt[0] - pt2[0]) ** 2 + (pt[1] - pt2[1]) ** 2 # <<<<<<<<<<<<<< * if d2 <= dmin2: * rej_lst.append(pt) */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pt, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pt, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_pt2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_pt2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PyNumber_Subtract(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyNumber_Subtract(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Power(__pyx_t_5, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyNumber_Power(__pyx_t_5, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_pt, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_pt, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pt2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pt2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyNumber_Subtract(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Subtract(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_d2 = __pyx_t_21; - /* "pyFAI/ext/watershed.pyx":565 + /* "pyFAI/ext/watershed.pyx":570 * for pt2 in output_points: * d2 = (pt[0] - pt2[0]) ** 2 + (pt[1] - pt2[1]) ** 2 * if d2 <= dmin2: # <<<<<<<<<<<<<< @@ -14466,16 +13954,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __pyx_t_17 = ((__pyx_v_d2 <= __pyx_v_dmin2) != 0); if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":566 + /* "pyFAI/ext/watershed.pyx":571 * d2 = (pt[0] - pt2[0]) ** 2 + (pt[1] - pt2[1]) ** 2 * if d2 <= dmin2: * rej_lst.append(pt) # <<<<<<<<<<<<<< * break * else: */ - __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_rej_lst, __pyx_v_pt); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_rej_lst, __pyx_v_pt); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":567 + /* "pyFAI/ext/watershed.pyx":572 * if d2 <= dmin2: * rej_lst.append(pt) * break # <<<<<<<<<<<<<< @@ -14483,17 +13971,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from * output_points.append(pt) */ goto __pyx_L29_break; - - /* "pyFAI/ext/watershed.pyx":565 - * for pt2 in output_points: - * d2 = (pt[0] - pt2[0]) ** 2 + (pt[1] - pt2[1]) ** 2 - * if d2 <= dmin2: # <<<<<<<<<<<<<< - * rej_lst.append(pt) - * break - */ } - /* "pyFAI/ext/watershed.pyx":563 + /* "pyFAI/ext/watershed.pyx":568 * output_points = [] * for pt in tmp_lst: * for pt2 in output_points: # <<<<<<<<<<<<<< @@ -14503,32 +13983,32 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } /*else*/ { - /* "pyFAI/ext/watershed.pyx":569 + /* "pyFAI/ext/watershed.pyx":574 * break * else: * output_points.append(pt) # <<<<<<<<<<<<<< * if len(output_points) >= keep: * return output_points */ - __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_output_points, __pyx_v_pt); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_output_points, __pyx_v_pt); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":570 + /* "pyFAI/ext/watershed.pyx":575 * else: * output_points.append(pt) * if len(output_points) >= keep: # <<<<<<<<<<<<<< * return output_points * output_points = (output_points + rej_lst)[:keep] */ - __pyx_t_22 = PyList_GET_SIZE(__pyx_v_output_points); if (unlikely(__pyx_t_22 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_22); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_22 = PyList_GET_SIZE(__pyx_v_output_points); if (unlikely(__pyx_t_22 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_22); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_keep, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_keep, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_17 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_17 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_17) { - /* "pyFAI/ext/watershed.pyx":571 + /* "pyFAI/ext/watershed.pyx":576 * output_points.append(pt) * if len(output_points) >= keep: * return output_points # <<<<<<<<<<<<<< @@ -14541,18 +14021,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L0; - - /* "pyFAI/ext/watershed.pyx":570 - * else: - * output_points.append(pt) - * if len(output_points) >= keep: # <<<<<<<<<<<<<< - * return output_points - * output_points = (output_points + rej_lst)[:keep] - */ } } - /* "pyFAI/ext/watershed.pyx":563 + /* "pyFAI/ext/watershed.pyx":568 * output_points = [] * for pt in tmp_lst: * for pt2 in output_points: # <<<<<<<<<<<<<< @@ -14562,7 +14034,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from __pyx_L29_break:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "pyFAI/ext/watershed.pyx":562 + /* "pyFAI/ext/watershed.pyx":567 * rej_lst = [] * output_points = [] * for pt in tmp_lst: # <<<<<<<<<<<<<< @@ -14572,55 +14044,45 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "pyFAI/ext/watershed.pyx":572 + /* "pyFAI/ext/watershed.pyx":577 * if len(output_points) >= keep: * return output_points * output_points = (output_points + rej_lst)[:keep] # <<<<<<<<<<<<<< * return output_points + * */ - __pyx_t_4 = PyNumber_Add(__pyx_v_output_points, __pyx_v_rej_lst); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyNumber_Add(__pyx_v_output_points, __pyx_v_rej_lst); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_keep); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_8 = __Pyx_PyList_GetSlice(__pyx_t_4, 0, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_keep); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyList_GetSlice(__pyx_t_4, 0, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_output_points, ((PyObject*)__pyx_t_8)); __pyx_t_8 = 0; - - /* "pyFAI/ext/watershed.pyx":558 - * else: - * dmin2 = 0.0 - * if keep and len(output_points) > keep: # <<<<<<<<<<<<<< - * tmp_lst = output_points - * rej_lst = [] - */ + goto __pyx_L23; } - - /* "pyFAI/ext/watershed.pyx":548 - * for i in range(len(output_points)): - * output_points[i] = self.bilinear.local_maxi(output_points[i]) - * if Imin or keep: # <<<<<<<<<<<<<< - * argsort = sorted(range(len(intensities)), key=intensities.__getitem__, reverse=True) - * if Imin: - */ + __pyx_L23:; + goto __pyx_L13; } + __pyx_L13:; - /* "pyFAI/ext/watershed.pyx":573 + /* "pyFAI/ext/watershed.pyx":578 * return output_points * output_points = (output_points + rej_lst)[:keep] * return output_points # <<<<<<<<<<<<<< + * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_output_points); __pyx_r = __pyx_v_output_points; goto __pyx_L0; - /* "pyFAI/ext/watershed.pyx":514 + /* "pyFAI/ext/watershed.pyx":519 * logger.info("Did %s merge_intense" % cnt) * * def peaks_from_area(self, mask, Imin=None, keep=None, bint refine=True, float dmin=0.0, **kwarg): # <<<<<<<<<<<<<< * """ - * @param mask: mask of data points valid + * :param mask: mask of data points valid */ /* function exit code */ @@ -14657,7 +14119,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9watershed_16InverseWatershed_24peaks_from return __pyx_r; } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":197 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -14707,7 +14169,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":200 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -14720,7 +14182,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":203 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -14729,7 +14191,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":207 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":204 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -14738,7 +14200,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":206 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -14747,7 +14209,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":208 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -14757,7 +14219,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":212 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":209 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -14765,30 +14227,22 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P * copy_shape = 0 */ __pyx_v_copy_shape = 1; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 - * ndim = PyArray_NDIM(self) - * - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * copy_shape = 1 - * else: - */ goto __pyx_L4; } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":211 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) */ - /*else*/ { __pyx_v_copy_shape = 0; } __pyx_L4:; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":213 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14802,7 +14256,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":214 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -14812,39 +14266,23 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":216 - * copy_shape = 0 - * - * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): - * raise ValueError(u"ndarray is not C contiguous") - */ if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[2]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":216 - * copy_shape = 0 - * - * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): - * raise ValueError(u"ndarray is not C contiguous") - */ + {__pyx_filename = __pyx_f[2]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":217 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14858,7 +14296,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -14868,39 +14306,23 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L9_bool_binop_done:; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":220 - * raise ValueError(u"ndarray is not C contiguous") - * - * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): - * raise ValueError(u"ndarray is not Fortran contiguous") - */ if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":220 - * raise ValueError(u"ndarray is not C contiguous") - * - * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< - * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): - * raise ValueError(u"ndarray is not Fortran contiguous") - */ + {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":224 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":221 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -14909,7 +14331,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":225 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -14918,7 +14340,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":223 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -14928,7 +14350,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -14937,7 +14359,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":227 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -14946,7 +14368,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":228 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -14957,7 +14379,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":229 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -14966,7 +14388,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":230 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -14975,28 +14397,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":226 - * info.buf = PyArray_DATA(self) - * info.ndim = ndim - * if copy_shape: # <<<<<<<<<<<<<< - * # Allocate new buffer for strides and shape info. - * # This is allocated as one block, strides first. - */ goto __pyx_L11; } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL */ - /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":233 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -15007,7 +14421,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":234 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -15016,7 +14430,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":238 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -15025,7 +14439,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":236 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -15034,28 +14448,28 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":239 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< * cdef dtype descr = self.descr - * cdef int offset + * cdef list stack */ __pyx_v_f = NULL; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":240 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< + * cdef list stack * cdef int offset - * */ __pyx_t_3 = ((PyObject *)__pyx_v_self->descr); __Pyx_INCREF(__pyx_t_3); __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":244 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -15064,7 +14478,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -15082,7 +14496,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -15094,25 +14508,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GOTREF(__pyx_v_info->obj); __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = Py_None; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":248 - * cdef bint hasfields = PyDataType_HASFIELDS(descr) - * - * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< - * # do not call releasebuffer - * info.obj = None - */ goto __pyx_L14; } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":251 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< * * if not hasfields: */ - /*else*/ { __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); __Pyx_GOTREF(__pyx_v_info->obj); @@ -15121,7 +14527,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":253 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -15131,7 +14537,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":254 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -15141,7 +14547,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15161,7 +14567,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":256 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -15177,51 +14583,43 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L19_bool_binop_done:; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 - * if not hasfields: - * t = descr.type_num - * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (descr.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") - */ if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[2]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 - * if not hasfields: - * t = descr.type_num - * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (descr.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" + * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - } + switch (__pyx_v_t) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":258 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" */ - switch (__pyx_v_t) { case NPY_BYTE: __pyx_v_f = __pyx_k_b; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -15232,7 +14630,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_B; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":260 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -15243,7 +14641,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_h; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":261 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -15254,7 +14652,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_H; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":262 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -15265,7 +14663,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_i; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -15276,7 +14674,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_I; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -15287,7 +14685,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_l; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -15298,7 +14696,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_L; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -15309,7 +14707,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_q; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -15320,7 +14718,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Q; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -15331,7 +14729,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_f; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -15342,7 +14740,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_d; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -15353,7 +14751,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_g; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -15364,7 +14762,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zf; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -15375,7 +14773,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zd; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -15386,7 +14784,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = __pyx_k_Zg; break; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -15398,33 +14796,33 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * info.format = f * return */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - {__pyx_filename = __pyx_f[2]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} break; } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":277 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -15433,7 +14831,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -15442,27 +14840,19 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_r = 0; goto __pyx_L0; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":255 - * info.obj = self - * - * if not hasfields: # <<<<<<<<<<<<<< - * t = descr.type_num - * if ((descr.byteorder == c'>' and little_endian) or - */ } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":280 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 */ - /*else*/ { - __pyx_v_info->format = ((char *)malloc(0xFF)); + __pyx_v_info->format = ((char *)malloc(255)); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":281 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -15471,7 +14861,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":282 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -15480,17 +14870,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":283 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< * info.format + _buffer_format_string_len, * &offset) */ - __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_7; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":286 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -15500,7 +14890,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":197 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":194 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -15532,7 +14922,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -15556,7 +14946,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":289 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -15566,7 +14956,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -15574,17 +14964,11 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s * stdlib.free(info.strides) */ free(__pyx_v_info->format); - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 - * - * def __releasebuffer__(ndarray self, Py_buffer* info): - * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< - * stdlib.free(info.format) - * if sizeof(npy_intp) != sizeof(Py_ssize_t): - */ + goto __pyx_L3; } + __pyx_L3:; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":291 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -15594,7 +14978,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":294 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":292 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -15602,17 +14986,11 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s * */ free(__pyx_v_info->strides); - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":293 - * if PyArray_HASFIELDS(self): - * stdlib.free(info.format) - * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< - * stdlib.free(info.strides) - * # info.shape was stored after info.strides in the same block - */ + goto __pyx_L4; } + __pyx_L4:; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":288 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -15624,7 +15002,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":770 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15641,7 +15019,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":769 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -15649,13 +15027,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":770 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15674,7 +15052,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -15691,7 +15069,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":772 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -15699,13 +15077,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":773 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":771 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -15724,7 +15102,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -15741,7 +15119,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":775 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -15749,13 +15127,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":776 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":774 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -15774,7 +15152,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -15791,7 +15169,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":778 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -15799,13 +15177,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":779 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":777 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -15824,7 +15202,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":782 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15841,7 +15219,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":781 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -15849,13 +15227,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":782 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":780 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15874,7 +15252,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -15907,8 +15285,8 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_RefNannySetupContext("_util_dtypestring", 0); /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":790 - * - * cdef dtype child + * cdef int delta_offset + * cdef tuple i * cdef int endian_detector = 1 # <<<<<<<<<<<<<< * cdef bint little_endian = ((&endian_detector)[0] != 0) * cdef tuple fields @@ -15916,7 +15294,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_v_endian_detector = 1; /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":791 - * cdef dtype child + * cdef tuple i * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< * cdef tuple fields @@ -15942,7 +15320,6 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; @@ -15954,11 +15331,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * child, new_offset = fields * */ - if (unlikely(__pyx_v_descr->fields == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - {__pyx_filename = __pyx_f[2]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_3); if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); @@ -16032,14 +15405,6 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; {__pyx_filename = __pyx_f[2]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":798 - * child, new_offset = fields - * - * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< - * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") - * - */ } /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 @@ -16078,14 +15443,6 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0); __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 - * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") - * - * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (child.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") - */ if (__pyx_t_6) { /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":803 @@ -16100,14 +15457,6 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; {__pyx_filename = __pyx_f[2]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":801 - * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") - * - * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< - * (child.byteorder == c'<' and not little_endian)): - * raise ValueError(u"Non-native byte order not supported") - */ } /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":813 @@ -16133,7 +15482,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * f += 1 * offset[0] += 1 */ - (__pyx_v_f[0]) = 0x78; + (__pyx_v_f[0]) = 120; /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: @@ -16209,14 +15558,6 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; {__pyx_filename = __pyx_f[2]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":822 - * if not PyDataType_HASFIELDS(child): - * t = child.type_num - * if end - f < 5: # <<<<<<<<<<<<<< - * raise RuntimeError(u"Format string allocated too short.") - * - */ } /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":826 @@ -16226,7 +15567,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -16244,7 +15585,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -16262,14 +15603,14 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x68; + (__pyx_v_f[0]) = 104; goto __pyx_L15; } @@ -16280,7 +15621,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -16298,14 +15639,14 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x69; + (__pyx_v_f[0]) = 105; goto __pyx_L15; } @@ -16316,7 +15657,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -16334,14 +15675,14 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x6C; + (__pyx_v_f[0]) = 108; goto __pyx_L15; } @@ -16352,7 +15693,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -16370,14 +15711,14 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x71; + (__pyx_v_f[0]) = 113; goto __pyx_L15; } @@ -16388,7 +15729,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -16406,14 +15747,14 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x66; + (__pyx_v_f[0]) = 102; goto __pyx_L15; } @@ -16424,14 +15765,14 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x64; + (__pyx_v_f[0]) = 100; goto __pyx_L15; } @@ -16442,14 +15783,14 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { - (__pyx_v_f[0]) = 0x67; + (__pyx_v_f[0]) = 103; goto __pyx_L15; } @@ -16460,7 +15801,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -16468,7 +15809,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 0x66; + (__pyx_v_f[1]) = 102; __pyx_v_f = (__pyx_v_f + 1); goto __pyx_L15; } @@ -16480,7 +15821,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -16488,7 +15829,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 0x64; + (__pyx_v_f[1]) = 100; __pyx_v_f = (__pyx_v_f + 1); goto __pyx_L15; } @@ -16500,7 +15841,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: */ - __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -16508,7 +15849,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { (__pyx_v_f[0]) = 90; - (__pyx_v_f[1]) = 0x67; + (__pyx_v_f[1]) = 103; __pyx_v_f = (__pyx_v_f + 1); goto __pyx_L15; } @@ -16520,7 +15861,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) */ - __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -16530,21 +15871,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_f[0]) = 79; goto __pyx_L15; } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< * f += 1 * else: */ - /*else*/ { __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); @@ -16563,25 +15904,17 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx * # Cython ignores struct boundary information ("T{...}"), */ __pyx_v_f = (__pyx_v_f + 1); - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":820 - * offset[0] += child.itemsize - * - * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< - * t = child.type_num - * if end - f < 5: - */ goto __pyx_L13; } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< * return f * */ - /*else*/ { __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_f = __pyx_t_9; } @@ -16607,7 +15940,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":785 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":783 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -16666,25 +15999,17 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a * Py_INCREF(base) # important to do this before decref below! */ __pyx_v_baseptr = NULL; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":968 - * cdef inline void set_array_base(ndarray arr, object base): - * cdef PyObject* baseptr - * if base is None: # <<<<<<<<<<<<<< - * baseptr = NULL - * else: - */ goto __pyx_L3; } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< * baseptr = base * Py_XDECREF(arr.base) */ - /*else*/ { Py_INCREF(__pyx_v_base); /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":972 @@ -16763,22 +16088,14 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; - - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":977 - * - * cdef inline object get_array_base(ndarray arr): - * if arr.base is NULL: # <<<<<<<<<<<<<< - * return None - * else: - */ } + /*else*/ { - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< */ - /*else*/ { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_arr->base)); __pyx_r = ((PyObject *)__pyx_v_arr->base); @@ -16800,7 +16117,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "View.MemoryView":118 +/* "View.MemoryView":116 * cdef bint dtype_is_object * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< @@ -16846,12 +16163,12 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_itemsize)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (kw_args > 0) { @@ -16865,7 +16182,7 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -16879,14 +16196,14 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P } } __pyx_v_shape = ((PyObject*)values[0]); - __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_v_format = values[2]; __pyx_v_mode = values[3]; if (values[4]) { - __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { - /* "View.MemoryView":119 + /* "View.MemoryView":117 * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, * mode="c", bint allocate_buffer=True): # <<<<<<<<<<<<<< @@ -16898,19 +16215,19 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer); + __pyx_r = __pyx_array_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer); - /* "View.MemoryView":118 + /* "View.MemoryView":116 * cdef bint dtype_is_object * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< @@ -16927,7 +16244,7 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P return __pyx_r; } -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) { +static int __pyx_array_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) { int __pyx_v_idx; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_dim; @@ -16939,9 +16256,9 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ int __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - char *__pyx_t_6; - int __pyx_t_7; + char *__pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; Py_ssize_t __pyx_t_8; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; @@ -16951,7 +16268,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __Pyx_RefNannySetupContext("__cinit__", 0); __Pyx_INCREF(__pyx_v_format); - /* "View.MemoryView":125 + /* "View.MemoryView":123 * cdef PyObject **p * * self.ndim = len(shape) # <<<<<<<<<<<<<< @@ -16960,12 +16277,12 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ if (unlikely(__pyx_v_shape == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_self->ndim = ((int)__pyx_t_1); - /* "View.MemoryView":126 + /* "View.MemoryView":124 * * self.ndim = len(shape) * self.itemsize = itemsize # <<<<<<<<<<<<<< @@ -16974,7 +16291,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_self->itemsize = __pyx_v_itemsize; - /* "View.MemoryView":128 + /* "View.MemoryView":126 * self.itemsize = itemsize * * if not self.ndim: # <<<<<<<<<<<<<< @@ -16984,29 +16301,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_2 = ((!(__pyx_v_self->ndim != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":129 + /* "View.MemoryView":127 * * if not self.ndim: * raise ValueError("Empty shape tuple for cython.array") # <<<<<<<<<<<<<< * * if itemsize <= 0: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":128 - * self.itemsize = itemsize - * - * if not self.ndim: # <<<<<<<<<<<<<< - * raise ValueError("Empty shape tuple for cython.array") - * - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":131 + /* "View.MemoryView":129 * raise ValueError("Empty shape tuple for cython.array") * * if itemsize <= 0: # <<<<<<<<<<<<<< @@ -17016,90 +16325,77 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_2 = ((__pyx_v_itemsize <= 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":132 + /* "View.MemoryView":130 * * if itemsize <= 0: * raise ValueError("itemsize <= 0 for cython.array") # <<<<<<<<<<<<<< * - * if not isinstance(format, bytes): + * if isinstance(format, unicode): */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":131 - * raise ValueError("Empty shape tuple for cython.array") - * - * if itemsize <= 0: # <<<<<<<<<<<<<< - * raise ValueError("itemsize <= 0 for cython.array") - * - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":134 + /* "View.MemoryView":132 * raise ValueError("itemsize <= 0 for cython.array") * - * if not isinstance(format, bytes): # <<<<<<<<<<<<<< - * format = format.encode('ASCII') + * if isinstance(format, unicode): # <<<<<<<<<<<<<< + * format = (format).encode('ASCII') * self._format = format # keep a reference to the byte string */ - __pyx_t_2 = PyBytes_Check(__pyx_v_format); - __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0); + __pyx_t_2 = PyUnicode_Check(__pyx_v_format); + __pyx_t_4 = (__pyx_t_2 != 0); if (__pyx_t_4) { - /* "View.MemoryView":135 + /* "View.MemoryView":133 * - * if not isinstance(format, bytes): - * format = format.encode('ASCII') # <<<<<<<<<<<<<< + * if isinstance(format, unicode): + * format = (format).encode('ASCII') # <<<<<<<<<<<<<< * self._format = format # keep a reference to the byte string * self.format = self._format */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__pyx_v_format == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "encode"); + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + } + __pyx_t_3 = PyUnicode_AsASCIIString(((PyObject*)__pyx_v_format)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5); - __pyx_t_5 = 0; - - /* "View.MemoryView":134 - * raise ValueError("itemsize <= 0 for cython.array") - * - * if not isinstance(format, bytes): # <<<<<<<<<<<<<< - * format = format.encode('ASCII') - * self._format = format # keep a reference to the byte string - */ + __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3); + __pyx_t_3 = 0; + goto __pyx_L5; } + __pyx_L5:; - /* "View.MemoryView":136 - * if not isinstance(format, bytes): - * format = format.encode('ASCII') + /* "View.MemoryView":134 + * if isinstance(format, unicode): + * format = (format).encode('ASCII') * self._format = format # keep a reference to the byte string # <<<<<<<<<<<<<< * self.format = self._format * */ - if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_5 = __pyx_v_format; - __Pyx_INCREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); + if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_v_format; + __Pyx_INCREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->_format); __Pyx_DECREF(__pyx_v_self->_format); - __pyx_v_self->_format = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; + __pyx_v_self->_format = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; - /* "View.MemoryView":137 - * format = format.encode('ASCII') + /* "View.MemoryView":135 + * format = (format).encode('ASCII') * self._format = format # keep a reference to the byte string * self.format = self._format # <<<<<<<<<<<<<< * * */ - __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_v_self->format = __pyx_t_6; + __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->_format); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_v_self->format = __pyx_t_5; - /* "View.MemoryView":140 + /* "View.MemoryView":138 * * * self._shape = PyMem_Malloc(sizeof(Py_ssize_t)*self.ndim*2) # <<<<<<<<<<<<<< @@ -17108,7 +16404,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_self->_shape = ((Py_ssize_t *)PyMem_Malloc((((sizeof(Py_ssize_t)) * __pyx_v_self->ndim) * 2))); - /* "View.MemoryView":141 + /* "View.MemoryView":139 * * self._shape = PyMem_Malloc(sizeof(Py_ssize_t)*self.ndim*2) * self._strides = self._shape + self.ndim # <<<<<<<<<<<<<< @@ -17117,7 +16413,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_self->_strides = (__pyx_v_self->_shape + __pyx_v_self->ndim); - /* "View.MemoryView":143 + /* "View.MemoryView":141 * self._strides = self._shape + self.ndim * * if not self._shape: # <<<<<<<<<<<<<< @@ -17127,52 +16423,43 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_4 = ((!(__pyx_v_self->_shape != 0)) != 0); if (__pyx_t_4) { - /* "View.MemoryView":144 + /* "View.MemoryView":142 * * if not self._shape: * raise MemoryError("unable to allocate shape and strides.") # <<<<<<<<<<<<<< * * */ - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":143 - * self._strides = self._shape + self.ndim - * - * if not self._shape: # <<<<<<<<<<<<<< - * raise MemoryError("unable to allocate shape and strides.") - * - */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":147 + /* "View.MemoryView":145 * * * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< * if dim <= 0: * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) */ - __pyx_t_7 = 0; - __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0; + __pyx_t_6 = 0; + __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; for (;;) { - if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break; + if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_7); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_7); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_dim = __pyx_t_8; - __pyx_v_idx = __pyx_t_7; - __pyx_t_7 = (__pyx_t_7 + 1); + __pyx_v_idx = __pyx_t_6; + __pyx_t_6 = (__pyx_t_6 + 1); - /* "View.MemoryView":148 + /* "View.MemoryView":146 * * for idx, dim in enumerate(shape): * if dim <= 0: # <<<<<<<<<<<<<< @@ -17182,50 +16469,42 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_4 = ((__pyx_v_dim <= 0) != 0); if (__pyx_t_4) { - /* "View.MemoryView":149 + /* "View.MemoryView":147 * for idx, dim in enumerate(shape): * if dim <= 0: * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) # <<<<<<<<<<<<<< * self._shape[idx] = dim * */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); - __pyx_t_3 = 0; + __Pyx_GIVEREF(__pyx_t_9); + __pyx_t_7 = 0; __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":148 - * - * for idx, dim in enumerate(shape): - * if dim <= 0: # <<<<<<<<<<<<<< - * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) - * self._shape[idx] = dim - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":150 + /* "View.MemoryView":148 * if dim <= 0: * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) * self._shape[idx] = dim # <<<<<<<<<<<<<< @@ -17234,7 +16513,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ (__pyx_v_self->_shape[__pyx_v_idx]) = __pyx_v_dim; - /* "View.MemoryView":147 + /* "View.MemoryView":145 * * * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< @@ -17242,19 +16521,19 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) */ } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":153 + /* "View.MemoryView":151 * * cdef char order * if mode == 'fortran': # <<<<<<<<<<<<<< * order = b'F' * self.mode = u'fortran' */ - __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_4) { - /* "View.MemoryView":154 + /* "View.MemoryView":152 * cdef char order * if mode == 'fortran': * order = b'F' # <<<<<<<<<<<<<< @@ -17263,7 +16542,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_order = 'F'; - /* "View.MemoryView":155 + /* "View.MemoryView":153 * if mode == 'fortran': * order = b'F' * self.mode = u'fortran' # <<<<<<<<<<<<<< @@ -17275,28 +16554,20 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __Pyx_GOTREF(__pyx_v_self->mode); __Pyx_DECREF(__pyx_v_self->mode); __pyx_v_self->mode = __pyx_n_u_fortran; - - /* "View.MemoryView":153 - * - * cdef char order - * if mode == 'fortran': # <<<<<<<<<<<<<< - * order = b'F' - * self.mode = u'fortran' - */ goto __pyx_L10; } - /* "View.MemoryView":156 + /* "View.MemoryView":154 * order = b'F' * self.mode = u'fortran' * elif mode == 'c': # <<<<<<<<<<<<<< * order = b'C' * self.mode = u'c' */ - __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_4) { - /* "View.MemoryView":157 + /* "View.MemoryView":155 * self.mode = u'fortran' * elif mode == 'c': * order = b'C' # <<<<<<<<<<<<<< @@ -17305,7 +16576,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_order = 'C'; - /* "View.MemoryView":158 + /* "View.MemoryView":156 * elif mode == 'c': * order = b'C' * self.mode = u'c' # <<<<<<<<<<<<<< @@ -17317,42 +16588,34 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __Pyx_GOTREF(__pyx_v_self->mode); __Pyx_DECREF(__pyx_v_self->mode); __pyx_v_self->mode = __pyx_n_u_c; - - /* "View.MemoryView":156 - * order = b'F' - * self.mode = u'fortran' - * elif mode == 'c': # <<<<<<<<<<<<<< - * order = b'C' - * self.mode = u'c' - */ goto __pyx_L10; } + /*else*/ { - /* "View.MemoryView":160 + /* "View.MemoryView":158 * self.mode = u'c' * else: * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) # <<<<<<<<<<<<<< * * self.len = fill_contig_strides_array(self._shape, self._strides, */ - /*else*/ { - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L10:; - /* "View.MemoryView":162 + /* "View.MemoryView":160 * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) * * self.len = fill_contig_strides_array(self._shape, self._strides, # <<<<<<<<<<<<<< @@ -17361,7 +16624,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_self->len = __pyx_fill_contig_strides_array(__pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_itemsize, __pyx_v_self->ndim, __pyx_v_order); - /* "View.MemoryView":165 + /* "View.MemoryView":163 * itemsize, self.ndim, order) * * self.free_data = allocate_buffer # <<<<<<<<<<<<<< @@ -17370,19 +16633,19 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_self->free_data = __pyx_v_allocate_buffer; - /* "View.MemoryView":166 + /* "View.MemoryView":164 * * self.free_data = allocate_buffer * self.dtype_is_object = format == b'O' # <<<<<<<<<<<<<< * if allocate_buffer: * */ - __pyx_t_5 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_self->dtype_is_object = __pyx_t_4; - /* "View.MemoryView":167 + /* "View.MemoryView":165 * self.free_data = allocate_buffer * self.dtype_is_object = format == b'O' * if allocate_buffer: # <<<<<<<<<<<<<< @@ -17392,7 +16655,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_4 = (__pyx_v_allocate_buffer != 0); if (__pyx_t_4) { - /* "View.MemoryView":170 + /* "View.MemoryView":168 * * * self.data = malloc(self.len) # <<<<<<<<<<<<<< @@ -17401,7 +16664,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_self->data = ((char *)malloc(__pyx_v_self->len)); - /* "View.MemoryView":171 + /* "View.MemoryView":169 * * self.data = malloc(self.len) * if not self.data: # <<<<<<<<<<<<<< @@ -17411,29 +16674,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_4 = ((!(__pyx_v_self->data != 0)) != 0); if (__pyx_t_4) { - /* "View.MemoryView":172 + /* "View.MemoryView":170 * self.data = malloc(self.len) * if not self.data: * raise MemoryError("unable to allocate array data.") # <<<<<<<<<<<<<< * * if self.dtype_is_object: */ - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":171 - * - * self.data = malloc(self.len) - * if not self.data: # <<<<<<<<<<<<<< - * raise MemoryError("unable to allocate array data.") - * - */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":174 + /* "View.MemoryView":172 * raise MemoryError("unable to allocate array data.") * * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -17443,7 +16698,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_4 = (__pyx_v_self->dtype_is_object != 0); if (__pyx_t_4) { - /* "View.MemoryView":175 + /* "View.MemoryView":173 * * if self.dtype_is_object: * p = self.data # <<<<<<<<<<<<<< @@ -17452,7 +16707,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ __pyx_v_p = ((PyObject **)__pyx_v_self->data); - /* "View.MemoryView":176 + /* "View.MemoryView":174 * if self.dtype_is_object: * p = self.data * for i in range(self.len / itemsize): # <<<<<<<<<<<<<< @@ -17460,18 +16715,30 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * Py_INCREF(Py_None) */ if (unlikely(__pyx_v_itemsize == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) { + else if (sizeof(Py_ssize_t) == sizeof(long) && unlikely(__pyx_v_itemsize == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize); for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_1; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "View.MemoryView":177 + /* "View.MemoryView":175 * p = self.data * for i in range(self.len / itemsize): * p[i] = Py_None # <<<<<<<<<<<<<< @@ -17480,7 +16747,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ (__pyx_v_p[__pyx_v_i]) = Py_None; - /* "View.MemoryView":178 + /* "View.MemoryView":176 * for i in range(self.len / itemsize): * p[i] = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< @@ -17489,26 +16756,14 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ Py_INCREF(Py_None); } - - /* "View.MemoryView":174 - * raise MemoryError("unable to allocate array data.") - * - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * p = self.data - * for i in range(self.len / itemsize): - */ + goto __pyx_L13; } - - /* "View.MemoryView":167 - * self.free_data = allocate_buffer - * self.dtype_is_object = format == b'O' - * if allocate_buffer: # <<<<<<<<<<<<<< - * - * - */ + __pyx_L13:; + goto __pyx_L11; } + __pyx_L11:; - /* "View.MemoryView":118 + /* "View.MemoryView":116 * cdef bint dtype_is_object * * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< @@ -17521,7 +16776,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -17532,7 +16787,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ return __pyx_r; } -/* "View.MemoryView":181 +/* "View.MemoryView":179 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< @@ -17546,14 +16801,14 @@ static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + __pyx_r = __pyx_array_getbuffer_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { +static int __pyx_array_getbuffer_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_v_bufmode; int __pyx_r; __Pyx_RefNannyDeclarations @@ -17573,7 +16828,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "View.MemoryView":182 + /* "View.MemoryView":180 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * cdef int bufmode = -1 # <<<<<<<<<<<<<< @@ -17582,18 +16837,18 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru */ __pyx_v_bufmode = -1; - /* "View.MemoryView":183 + /* "View.MemoryView":181 * def __getbuffer__(self, Py_buffer *info, int flags): * cdef int bufmode = -1 * if self.mode == u"c": # <<<<<<<<<<<<<< * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":184 + /* "View.MemoryView":182 * cdef int bufmode = -1 * if self.mode == u"c": * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< @@ -17601,29 +16856,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS */ __pyx_v_bufmode = (PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); - - /* "View.MemoryView":183 - * def __getbuffer__(self, Py_buffer *info, int flags): - * cdef int bufmode = -1 - * if self.mode == u"c": # <<<<<<<<<<<<<< - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * elif self.mode == u"fortran": - */ goto __pyx_L3; } - /* "View.MemoryView":185 + /* "View.MemoryView":183 * if self.mode == u"c": * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": # <<<<<<<<<<<<<< * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): */ - __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "View.MemoryView":186 + /* "View.MemoryView":184 * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< @@ -17631,18 +16878,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru * raise ValueError("Can only create a buffer that is contiguous in memory.") */ __pyx_v_bufmode = (PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); - - /* "View.MemoryView":185 - * if self.mode == u"c": - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * elif self.mode == u"fortran": # <<<<<<<<<<<<<< - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * if not (flags & bufmode): - */ + goto __pyx_L3; } __pyx_L3:; - /* "View.MemoryView":187 + /* "View.MemoryView":185 * elif self.mode == u"fortran": * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): # <<<<<<<<<<<<<< @@ -17652,29 +16892,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_1 = ((!((__pyx_v_flags & __pyx_v_bufmode) != 0)) != 0); if (__pyx_t_1) { - /* "View.MemoryView":188 + /* "View.MemoryView":186 * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): * raise ValueError("Can only create a buffer that is contiguous in memory.") # <<<<<<<<<<<<<< * info.buf = self.data * info.len = self.len */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":187 - * elif self.mode == u"fortran": - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * if not (flags & bufmode): # <<<<<<<<<<<<<< - * raise ValueError("Can only create a buffer that is contiguous in memory.") - * info.buf = self.data - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":189 + /* "View.MemoryView":187 * if not (flags & bufmode): * raise ValueError("Can only create a buffer that is contiguous in memory.") * info.buf = self.data # <<<<<<<<<<<<<< @@ -17684,7 +16916,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_4 = __pyx_v_self->data; __pyx_v_info->buf = __pyx_t_4; - /* "View.MemoryView":190 + /* "View.MemoryView":188 * raise ValueError("Can only create a buffer that is contiguous in memory.") * info.buf = self.data * info.len = self.len # <<<<<<<<<<<<<< @@ -17694,7 +16926,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_5 = __pyx_v_self->len; __pyx_v_info->len = __pyx_t_5; - /* "View.MemoryView":191 + /* "View.MemoryView":189 * info.buf = self.data * info.len = self.len * info.ndim = self.ndim # <<<<<<<<<<<<<< @@ -17704,7 +16936,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_6 = __pyx_v_self->ndim; __pyx_v_info->ndim = __pyx_t_6; - /* "View.MemoryView":192 + /* "View.MemoryView":190 * info.len = self.len * info.ndim = self.ndim * info.shape = self._shape # <<<<<<<<<<<<<< @@ -17714,7 +16946,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_7 = __pyx_v_self->_shape; __pyx_v_info->shape = __pyx_t_7; - /* "View.MemoryView":193 + /* "View.MemoryView":191 * info.ndim = self.ndim * info.shape = self._shape * info.strides = self._strides # <<<<<<<<<<<<<< @@ -17724,7 +16956,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_7 = __pyx_v_self->_strides; __pyx_v_info->strides = __pyx_t_7; - /* "View.MemoryView":194 + /* "View.MemoryView":192 * info.shape = self._shape * info.strides = self._strides * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -17733,7 +16965,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru */ __pyx_v_info->suboffsets = NULL; - /* "View.MemoryView":195 + /* "View.MemoryView":193 * info.strides = self._strides * info.suboffsets = NULL * info.itemsize = self.itemsize # <<<<<<<<<<<<<< @@ -17743,7 +16975,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_5 = __pyx_v_self->itemsize; __pyx_v_info->itemsize = __pyx_t_5; - /* "View.MemoryView":196 + /* "View.MemoryView":194 * info.suboffsets = NULL * info.itemsize = self.itemsize * info.readonly = 0 # <<<<<<<<<<<<<< @@ -17752,7 +16984,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru */ __pyx_v_info->readonly = 0; - /* "View.MemoryView":198 + /* "View.MemoryView":196 * info.readonly = 0 * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -17762,7 +16994,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":199 + /* "View.MemoryView":197 * * if flags & PyBUF_FORMAT: * info.format = self.format # <<<<<<<<<<<<<< @@ -17771,30 +17003,22 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru */ __pyx_t_4 = __pyx_v_self->format; __pyx_v_info->format = __pyx_t_4; - - /* "View.MemoryView":198 - * info.readonly = 0 - * - * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< - * info.format = self.format - * else: - */ goto __pyx_L5; } + /*else*/ { - /* "View.MemoryView":201 + /* "View.MemoryView":199 * info.format = self.format * else: * info.format = NULL # <<<<<<<<<<<<<< * * info.obj = self */ - /*else*/ { __pyx_v_info->format = NULL; } __pyx_L5:; - /* "View.MemoryView":203 + /* "View.MemoryView":201 * info.format = NULL * * info.obj = self # <<<<<<<<<<<<<< @@ -17807,7 +17031,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "View.MemoryView":181 + /* "View.MemoryView":179 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< @@ -17837,7 +17061,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru return __pyx_r; } -/* "View.MemoryView":207 +/* "View.MemoryView":205 * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") * * def __dealloc__(array self): # <<<<<<<<<<<<<< @@ -17850,18 +17074,18 @@ static void __pyx_array___dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_array___dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self)); + __pyx_array_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } -static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) { +static void __pyx_array_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "View.MemoryView":208 + /* "View.MemoryView":206 * * def __dealloc__(array self): * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< @@ -17871,7 +17095,7 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc __pyx_t_1 = ((__pyx_v_self->callback_free_data != NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":209 + /* "View.MemoryView":207 * def __dealloc__(array self): * if self.callback_free_data != NULL: * self.callback_free_data(self.data) # <<<<<<<<<<<<<< @@ -17879,18 +17103,10 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc * if self.dtype_is_object: */ __pyx_v_self->callback_free_data(__pyx_v_self->data); - - /* "View.MemoryView":208 - * - * def __dealloc__(array self): - * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< - * self.callback_free_data(self.data) - * elif self.free_data: - */ goto __pyx_L3; } - /* "View.MemoryView":210 + /* "View.MemoryView":208 * if self.callback_free_data != NULL: * self.callback_free_data(self.data) * elif self.free_data: # <<<<<<<<<<<<<< @@ -17900,7 +17116,7 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc __pyx_t_1 = (__pyx_v_self->free_data != 0); if (__pyx_t_1) { - /* "View.MemoryView":211 + /* "View.MemoryView":209 * self.callback_free_data(self.data) * elif self.free_data: * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -17910,7 +17126,7 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0); if (__pyx_t_1) { - /* "View.MemoryView":212 + /* "View.MemoryView":210 * elif self.free_data: * if self.dtype_is_object: * refcount_objects_in_slice(self.data, self._shape, # <<<<<<<<<<<<<< @@ -17918,17 +17134,11 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc * free(self.data) */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_self->data, __pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_self->ndim, 0); - - /* "View.MemoryView":211 - * self.callback_free_data(self.data) - * elif self.free_data: - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * refcount_objects_in_slice(self.data, self._shape, - * self._strides, self.ndim, False) - */ + goto __pyx_L4; } + __pyx_L4:; - /* "View.MemoryView":214 + /* "View.MemoryView":212 * refcount_objects_in_slice(self.data, self._shape, * self._strides, self.ndim, False) * free(self.data) # <<<<<<<<<<<<<< @@ -17936,18 +17146,11 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc * */ free(__pyx_v_self->data); - - /* "View.MemoryView":210 - * if self.callback_free_data != NULL: - * self.callback_free_data(self.data) - * elif self.free_data: # <<<<<<<<<<<<<< - * if self.dtype_is_object: - * refcount_objects_in_slice(self.data, self._shape, - */ + goto __pyx_L3; } __pyx_L3:; - /* "View.MemoryView":215 + /* "View.MemoryView":213 * self._strides, self.ndim, False) * free(self.data) * PyMem_Free(self._shape) # <<<<<<<<<<<<<< @@ -17956,7 +17159,7 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc */ PyMem_Free(__pyx_v_self->_shape); - /* "View.MemoryView":207 + /* "View.MemoryView":205 * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") * * def __dealloc__(array self): # <<<<<<<<<<<<<< @@ -17968,7 +17171,7 @@ static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struc __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":219 +/* "View.MemoryView":217 * property memview: * @cname('get_memview') * def __get__(self): # <<<<<<<<<<<<<< @@ -17982,14 +17185,14 @@ static PyObject *get_memview(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self)); + __pyx_r = get_memview_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) { +static PyObject *get_memview_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) { int __pyx_v_flags; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -18001,7 +17204,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct _ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":221 + /* "View.MemoryView":219 * def __get__(self): * * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE # <<<<<<<<<<<<<< @@ -18010,7 +17213,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct _ */ __pyx_v_flags = ((PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT) | PyBUF_WRITABLE); - /* "View.MemoryView":222 + /* "View.MemoryView":220 * * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE * return memoryview(self, flags, self.dtype_is_object) # <<<<<<<<<<<<<< @@ -18018,29 +17221,29 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct _ * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_memoryview_type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":219 + /* "View.MemoryView":217 * property memview: * @cname('get_memview') * def __get__(self): # <<<<<<<<<<<<<< @@ -18061,7 +17264,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct _ return __pyx_r; } -/* "View.MemoryView":225 +/* "View.MemoryView":223 * * * def __getattr__(self, attr): # <<<<<<<<<<<<<< @@ -18075,14 +17278,14 @@ static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr)); + __pyx_r = __pyx_array_MemoryView_5array_6__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) { +static PyObject *__pyx_array_MemoryView_5array_6__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -18092,7 +17295,7 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__getattr__( int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getattr__", 0); - /* "View.MemoryView":226 + /* "View.MemoryView":224 * * def __getattr__(self, attr): * return getattr(self.memview, attr) # <<<<<<<<<<<<<< @@ -18100,16 +17303,16 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__getattr__( * def __getitem__(self, item): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":225 + /* "View.MemoryView":223 * * * def __getattr__(self, attr): # <<<<<<<<<<<<<< @@ -18129,7 +17332,7 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__getattr__( return __pyx_r; } -/* "View.MemoryView":228 +/* "View.MemoryView":226 * return getattr(self.memview, attr) * * def __getitem__(self, item): # <<<<<<<<<<<<<< @@ -18143,14 +17346,14 @@ static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item)); + __pyx_r = __pyx_array_MemoryView_5array_8__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) { +static PyObject *__pyx_array_MemoryView_5array_8__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -18160,7 +17363,7 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getitem__( int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "View.MemoryView":229 + /* "View.MemoryView":227 * * def __getitem__(self, item): * return self.memview[item] # <<<<<<<<<<<<<< @@ -18168,16 +17371,16 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getitem__( * def __setitem__(self, item, value): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":228 + /* "View.MemoryView":226 * return getattr(self.memview, attr) * * def __getitem__(self, item): # <<<<<<<<<<<<<< @@ -18197,7 +17400,7 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getitem__( return __pyx_r; } -/* "View.MemoryView":231 +/* "View.MemoryView":229 * return self.memview[item] * * def __setitem__(self, item, value): # <<<<<<<<<<<<<< @@ -18211,14 +17414,14 @@ static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_ite int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_array_MemoryView_5array_10__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { +static int __pyx_array_MemoryView_5array_10__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -18227,19 +17430,19 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__setitem__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setitem__", 0); - /* "View.MemoryView":232 + /* "View.MemoryView":230 * * def __setitem__(self, item, value): * self.memview[item] = value # <<<<<<<<<<<<<< * * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":231 + /* "View.MemoryView":229 * return self.memview[item] * * def __setitem__(self, item, value): # <<<<<<<<<<<<<< @@ -18259,7 +17462,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__setitem__(struc return __pyx_r; } -/* "View.MemoryView":236 +/* "View.MemoryView":234 * * @cname("__pyx_array_new") * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, # <<<<<<<<<<<<<< @@ -18281,7 +17484,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize int __pyx_clineno = 0; __Pyx_RefNannySetupContext("array_cwrapper", 0); - /* "View.MemoryView":240 + /* "View.MemoryView":238 * cdef array result * * if buf == NULL: # <<<<<<<<<<<<<< @@ -18291,104 +17494,96 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize __pyx_t_1 = ((__pyx_v_buf == NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":241 + /* "View.MemoryView":239 * * if buf == NULL: * result = array(shape, itemsize, format, mode.decode('ASCII')) # <<<<<<<<<<<<<< * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_shape); - __Pyx_GIVEREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_shape); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_4); __pyx_t_4 = 0; - - /* "View.MemoryView":240 - * cdef array result - * - * if buf == NULL: # <<<<<<<<<<<<<< - * result = array(shape, itemsize, format, mode.decode('ASCII')) - * else: - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":243 + /* "View.MemoryView":241 * result = array(shape, itemsize, format, mode.decode('ASCII')) * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), # <<<<<<<<<<<<<< * allocate_buffer=False) * result.data = buf */ - /*else*/ { - __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_shape); - __Pyx_GIVEREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_shape); - __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_v_shape); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_3 = 0; + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); - /* "View.MemoryView":244 + /* "View.MemoryView":242 * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), * allocate_buffer=False) # <<<<<<<<<<<<<< * result.data = buf * */ - __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":243 + /* "View.MemoryView":241 * result = array(shape, itemsize, format, mode.decode('ASCII')) * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), # <<<<<<<<<<<<<< * allocate_buffer=False) * result.data = buf */ - __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_array_type)), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_5); __pyx_t_5 = 0; - /* "View.MemoryView":245 + /* "View.MemoryView":243 * result = array(shape, itemsize, format, mode.decode('ASCII'), * allocate_buffer=False) * result.data = buf # <<<<<<<<<<<<<< @@ -18399,7 +17594,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize } __pyx_L3:; - /* "View.MemoryView":247 + /* "View.MemoryView":245 * result.data = buf * * return result # <<<<<<<<<<<<<< @@ -18411,7 +17606,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "View.MemoryView":236 + /* "View.MemoryView":234 * * @cname("__pyx_array_new") * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, # <<<<<<<<<<<<<< @@ -18434,7 +17629,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize return __pyx_r; } -/* "View.MemoryView":273 +/* "View.MemoryView":271 * cdef class Enum(object): * cdef object name * def __init__(self, name): # <<<<<<<<<<<<<< @@ -18470,7 +17665,7 @@ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_ar else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -18481,25 +17676,25 @@ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_ar } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name); + __pyx_r = __pyx_MemviewEnum_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) { +static int __pyx_MemviewEnum_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); - /* "View.MemoryView":274 + /* "View.MemoryView":272 * cdef object name * def __init__(self, name): * self.name = name # <<<<<<<<<<<<<< @@ -18512,7 +17707,7 @@ static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struc __Pyx_DECREF(__pyx_v_self->name); __pyx_v_self->name = __pyx_v_name; - /* "View.MemoryView":273 + /* "View.MemoryView":271 * cdef class Enum(object): * cdef object name * def __init__(self, name): # <<<<<<<<<<<<<< @@ -18526,7 +17721,7 @@ static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struc return __pyx_r; } -/* "View.MemoryView":275 +/* "View.MemoryView":273 * def __init__(self, name): * self.name = name * def __repr__(self): # <<<<<<<<<<<<<< @@ -18540,19 +17735,19 @@ static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); + __pyx_r = __pyx_MemviewEnum_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { +static PyObject *__pyx_MemviewEnum_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__", 0); - /* "View.MemoryView":276 + /* "View.MemoryView":274 * self.name = name * def __repr__(self): * return self.name # <<<<<<<<<<<<<< @@ -18564,7 +17759,7 @@ static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr_ __pyx_r = __pyx_v_self->name; goto __pyx_L0; - /* "View.MemoryView":275 + /* "View.MemoryView":273 * def __init__(self, name): * self.name = name * def __repr__(self): # <<<<<<<<<<<<<< @@ -18579,7 +17774,7 @@ static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr_ return __pyx_r; } -/* "View.MemoryView":290 +/* "View.MemoryView":288 * * @cname('__pyx_align_pointer') * cdef void *align_pointer(void *memory, size_t alignment) nogil: # <<<<<<<<<<<<<< @@ -18593,7 +17788,7 @@ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) void *__pyx_r; int __pyx_t_1; - /* "View.MemoryView":292 + /* "View.MemoryView":290 * cdef void *align_pointer(void *memory, size_t alignment) nogil: * "Align pointer memory on a given boundary" * cdef Py_intptr_t aligned_p = memory # <<<<<<<<<<<<<< @@ -18602,7 +17797,7 @@ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) */ __pyx_v_aligned_p = ((Py_intptr_t)__pyx_v_memory); - /* "View.MemoryView":296 + /* "View.MemoryView":294 * * with cython.cdivision(True): * offset = aligned_p % alignment # <<<<<<<<<<<<<< @@ -18611,7 +17806,7 @@ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) */ __pyx_v_offset = (__pyx_v_aligned_p % __pyx_v_alignment); - /* "View.MemoryView":298 + /* "View.MemoryView":296 * offset = aligned_p % alignment * * if offset > 0: # <<<<<<<<<<<<<< @@ -18621,7 +17816,7 @@ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) __pyx_t_1 = ((__pyx_v_offset > 0) != 0); if (__pyx_t_1) { - /* "View.MemoryView":299 + /* "View.MemoryView":297 * * if offset > 0: * aligned_p += alignment - offset # <<<<<<<<<<<<<< @@ -18629,17 +17824,11 @@ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) * return aligned_p */ __pyx_v_aligned_p = (__pyx_v_aligned_p + (__pyx_v_alignment - __pyx_v_offset)); - - /* "View.MemoryView":298 - * offset = aligned_p % alignment - * - * if offset > 0: # <<<<<<<<<<<<<< - * aligned_p += alignment - offset - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "View.MemoryView":301 + /* "View.MemoryView":299 * aligned_p += alignment - offset * * return aligned_p # <<<<<<<<<<<<<< @@ -18649,7 +17838,7 @@ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) __pyx_r = ((void *)__pyx_v_aligned_p); goto __pyx_L0; - /* "View.MemoryView":290 + /* "View.MemoryView":288 * * @cname('__pyx_align_pointer') * cdef void *align_pointer(void *memory, size_t alignment) nogil: # <<<<<<<<<<<<<< @@ -18662,7 +17851,7 @@ static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) return __pyx_r; } -/* "View.MemoryView":319 +/* "View.MemoryView":317 * cdef __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< @@ -18703,7 +17892,7 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { @@ -18712,7 +17901,7 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -18724,29 +17913,29 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar } } __pyx_v_obj = values[0]; - __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} if (values[2]) { - __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } else { __pyx_v_dtype_is_object = ((int)0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) { +static int __pyx_memoryview_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -18760,7 +17949,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "View.MemoryView":320 + /* "View.MemoryView":318 * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj # <<<<<<<<<<<<<< @@ -18773,7 +17962,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __Pyx_DECREF(__pyx_v_self->obj); __pyx_v_self->obj = __pyx_v_obj; - /* "View.MemoryView":321 + /* "View.MemoryView":319 * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj * self.flags = flags # <<<<<<<<<<<<<< @@ -18782,14 +17971,14 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->flags = __pyx_v_flags; - /* "View.MemoryView":322 + /* "View.MemoryView":320 * self.obj = obj * self.flags = flags * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: */ - __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)__pyx_memoryview_type)); + __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)((PyObject *)__pyx_memoryview_type))); __pyx_t_3 = (__pyx_t_2 != 0); if (!__pyx_t_3) { } else { @@ -18802,16 +17991,16 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "View.MemoryView":323 + /* "View.MemoryView":321 * self.flags = flags * if type(self) is memoryview or obj is not None: * __Pyx_GetBuffer(obj, &self.view, flags) # <<<<<<<<<<<<<< * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None */ - __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":324 + /* "View.MemoryView":322 * if type(self) is memoryview or obj is not None: * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: # <<<<<<<<<<<<<< @@ -18821,7 +18010,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = ((((PyObject *)__pyx_v_self->view.obj) == NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":325 + /* "View.MemoryView":323 * __Pyx_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None # <<<<<<<<<<<<<< @@ -18830,7 +18019,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None; - /* "View.MemoryView":326 + /* "View.MemoryView":324 * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< @@ -18838,26 +18027,14 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ * self.lock = PyThread_allocate_lock() */ Py_INCREF(Py_None); - - /* "View.MemoryView":324 - * if type(self) is memoryview or obj is not None: - * __Pyx_GetBuffer(obj, &self.view, flags) - * if self.view.obj == NULL: # <<<<<<<<<<<<<< - * (<__pyx_buffer *> &self.view).obj = Py_None - * Py_INCREF(Py_None) - */ + goto __pyx_L6; } - - /* "View.MemoryView":322 - * self.obj = obj - * self.flags = flags - * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< - * __Pyx_GetBuffer(obj, &self.view, flags) - * if self.view.obj == NULL: - */ + __pyx_L6:; + goto __pyx_L3; } + __pyx_L3:; - /* "View.MemoryView":328 + /* "View.MemoryView":326 * Py_INCREF(Py_None) * * self.lock = PyThread_allocate_lock() # <<<<<<<<<<<<<< @@ -18866,7 +18043,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->lock = PyThread_allocate_lock(); - /* "View.MemoryView":329 + /* "View.MemoryView":327 * * self.lock = PyThread_allocate_lock() * if self.lock == NULL: # <<<<<<<<<<<<<< @@ -18876,25 +18053,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":330 + /* "View.MemoryView":328 * self.lock = PyThread_allocate_lock() * if self.lock == NULL: * raise MemoryError # <<<<<<<<<<<<<< * * if flags & PyBUF_FORMAT: */ - PyErr_NoMemory(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":329 - * - * self.lock = PyThread_allocate_lock() - * if self.lock == NULL: # <<<<<<<<<<<<<< - * raise MemoryError - * - */ + PyErr_NoMemory(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":332 + /* "View.MemoryView":330 * raise MemoryError * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -18904,44 +18073,36 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":333 + /* "View.MemoryView":331 * * if flags & PyBUF_FORMAT: * self.dtype_is_object = self.view.format == b'O' # <<<<<<<<<<<<<< * else: * self.dtype_is_object = dtype_is_object */ - __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_self->dtype_is_object = __pyx_t_1; - - /* "View.MemoryView":332 - * raise MemoryError - * - * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< - * self.dtype_is_object = self.view.format == b'O' - * else: - */ goto __pyx_L8; } + /*else*/ { - /* "View.MemoryView":335 + /* "View.MemoryView":333 * self.dtype_is_object = self.view.format == b'O' * else: * self.dtype_is_object = dtype_is_object # <<<<<<<<<<<<<< * * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( */ - /*else*/ { __pyx_v_self->dtype_is_object = __pyx_v_dtype_is_object; } __pyx_L8:; - /* "View.MemoryView":337 + /* "View.MemoryView":335 * self.dtype_is_object = dtype_is_object * * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( # <<<<<<<<<<<<<< @@ -18950,7 +18111,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->acquisition_count_aligned_p = ((__pyx_atomic_int *)__pyx_align_pointer(((void *)(&(__pyx_v_self->acquisition_count[0]))), (sizeof(__pyx_atomic_int)))); - /* "View.MemoryView":339 + /* "View.MemoryView":337 * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( * &self.acquisition_count[0], sizeof(__pyx_atomic_int)) * self.typeinfo = NULL # <<<<<<<<<<<<<< @@ -18959,7 +18120,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->typeinfo = NULL; - /* "View.MemoryView":319 + /* "View.MemoryView":317 * cdef __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< @@ -18980,7 +18141,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ return __pyx_r; } -/* "View.MemoryView":341 +/* "View.MemoryView":339 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< @@ -18993,19 +18154,19 @@ static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_memoryview_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } -static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) { +static void __pyx_memoryview_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "View.MemoryView":342 + /* "View.MemoryView":340 * * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< @@ -19016,7 +18177,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":343 + /* "View.MemoryView":341 * def __dealloc__(memoryview self): * if self.obj is not None: * __Pyx_ReleaseBuffer(&self.view) # <<<<<<<<<<<<<< @@ -19024,17 +18185,11 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal * if self.lock != NULL: */ __Pyx_ReleaseBuffer((&__pyx_v_self->view)); - - /* "View.MemoryView":342 - * - * def __dealloc__(memoryview self): - * if self.obj is not None: # <<<<<<<<<<<<<< - * __Pyx_ReleaseBuffer(&self.view) - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "View.MemoryView":345 + /* "View.MemoryView":343 * __Pyx_ReleaseBuffer(&self.view) * * if self.lock != NULL: # <<<<<<<<<<<<<< @@ -19044,7 +18199,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_2 = ((__pyx_v_self->lock != NULL) != 0); if (__pyx_t_2) { - /* "View.MemoryView":346 + /* "View.MemoryView":344 * * if self.lock != NULL: * PyThread_free_lock(self.lock) # <<<<<<<<<<<<<< @@ -19052,17 +18207,11 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal * cdef char *get_item_pointer(memoryview self, object index) except NULL: */ PyThread_free_lock(__pyx_v_self->lock); - - /* "View.MemoryView":345 - * __Pyx_ReleaseBuffer(&self.view) - * - * if self.lock != NULL: # <<<<<<<<<<<<<< - * PyThread_free_lock(self.lock) - * - */ + goto __pyx_L4; } + __pyx_L4:; - /* "View.MemoryView":341 + /* "View.MemoryView":339 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< @@ -19074,7 +18223,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":348 +/* "View.MemoryView":346 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -19100,7 +18249,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_item_pointer", 0); - /* "View.MemoryView":350 + /* "View.MemoryView":348 * cdef char *get_item_pointer(memoryview self, object index) except NULL: * cdef Py_ssize_t dim * cdef char *itemp = self.view.buf # <<<<<<<<<<<<<< @@ -19109,7 +18258,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py */ __pyx_v_itemp = ((char *)__pyx_v_self->view.buf); - /* "View.MemoryView":352 + /* "View.MemoryView":350 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -19121,27 +18270,25 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -19150,7 +18297,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } @@ -19161,18 +18308,18 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_v_dim = __pyx_t_1; __pyx_t_1 = (__pyx_t_1 + 1); - /* "View.MemoryView":353 + /* "View.MemoryView":351 * * for dim, idx in enumerate(index): * itemp = pybuffer_index(&self.view, itemp, idx, dim) # <<<<<<<<<<<<<< * * return itemp */ - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_itemp = __pyx_t_7; - /* "View.MemoryView":352 + /* "View.MemoryView":350 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -19182,7 +18329,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":355 + /* "View.MemoryView":353 * itemp = pybuffer_index(&self.view, itemp, idx, dim) * * return itemp # <<<<<<<<<<<<<< @@ -19192,7 +18339,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_r = __pyx_v_itemp; goto __pyx_L0; - /* "View.MemoryView":348 + /* "View.MemoryView":346 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -19212,7 +18359,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py return __pyx_r; } -/* "View.MemoryView":358 +/* "View.MemoryView":356 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -19226,14 +18373,14 @@ static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject * PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { +static PyObject *__pyx_memoryview_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { PyObject *__pyx_v_have_slices = NULL; PyObject *__pyx_v_indices = NULL; char *__pyx_v_itemp; @@ -19250,7 +18397,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "View.MemoryView":359 + /* "View.MemoryView":357 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< @@ -19261,7 +18408,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":360 + /* "View.MemoryView":358 * def __getitem__(memoryview self, object index): * if index is Ellipsis: * return self # <<<<<<<<<<<<<< @@ -19272,24 +18419,16 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __Pyx_INCREF(((PyObject *)__pyx_v_self)); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - - /* "View.MemoryView":359 - * - * def __getitem__(memoryview self, object index): - * if index is Ellipsis: # <<<<<<<<<<<<<< - * return self - * - */ } - /* "View.MemoryView":362 + /* "View.MemoryView":360 * return self * * have_slices, indices = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * cdef char *itemp */ - __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); if (likely(__pyx_t_3 != Py_None)) { PyObject* sequence = __pyx_t_3; @@ -19301,7 +18440,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); @@ -19309,31 +18448,31 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_have_slices = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_indices = __pyx_t_5; __pyx_t_5 = 0; - /* "View.MemoryView":365 + /* "View.MemoryView":363 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< * return memview_slice(self, indices) * else: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_2) { - /* "View.MemoryView":366 + /* "View.MemoryView":364 * cdef char *itemp * if have_slices: * return memview_slice(self, indices) # <<<<<<<<<<<<<< @@ -19341,33 +18480,25 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * itemp = self.get_item_pointer(indices) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - - /* "View.MemoryView":365 - * - * cdef char *itemp - * if have_slices: # <<<<<<<<<<<<<< - * return memview_slice(self, indices) - * else: - */ } + /*else*/ { - /* "View.MemoryView":368 + /* "View.MemoryView":366 * return memview_slice(self, indices) * else: * itemp = self.get_item_pointer(indices) # <<<<<<<<<<<<<< * return self.convert_item_to_object(itemp) * */ - /*else*/ { - __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_itemp = __pyx_t_6; - /* "View.MemoryView":369 + /* "View.MemoryView":367 * else: * itemp = self.get_item_pointer(indices) * return self.convert_item_to_object(itemp) # <<<<<<<<<<<<<< @@ -19375,14 +18506,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * def __setitem__(memoryview self, object index, object value): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; } - /* "View.MemoryView":358 + /* "View.MemoryView":356 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -19405,7 +18536,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ return __pyx_r; } -/* "View.MemoryView":371 +/* "View.MemoryView":369 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -19419,14 +18550,14 @@ static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_ int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { +static int __pyx_memoryview_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { PyObject *__pyx_v_have_slices = NULL; PyObject *__pyx_v_obj = NULL; int __pyx_r; @@ -19441,14 +18572,14 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __Pyx_RefNannySetupContext("__setitem__", 0); __Pyx_INCREF(__pyx_v_index); - /* "View.MemoryView":372 + /* "View.MemoryView":370 * * def __setitem__(memoryview self, object index, object value): * have_slices, index = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * if have_slices: */ - __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (likely(__pyx_t_1 != Py_None)) { PyObject* sequence = __pyx_t_1; @@ -19460,7 +18591,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); @@ -19468,119 +18599,103 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_have_slices = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":374 + /* "View.MemoryView":372 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< * obj = self.is_slice(value) * if obj: */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_4) { - /* "View.MemoryView":375 + /* "View.MemoryView":373 * * if have_slices: * obj = self.is_slice(value) # <<<<<<<<<<<<<< * if obj: * self.setitem_slice_assignment(self[index], obj) */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_obj = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":376 + /* "View.MemoryView":374 * if have_slices: * obj = self.is_slice(value) * if obj: # <<<<<<<<<<<<<< * self.setitem_slice_assignment(self[index], obj) * else: */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_4) { - /* "View.MemoryView":377 + /* "View.MemoryView":375 * obj = self.is_slice(value) * if obj: * self.setitem_slice_assignment(self[index], obj) # <<<<<<<<<<<<<< * else: * self.setitem_slice_assign_scalar(self[index], value) */ - __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "View.MemoryView":376 - * if have_slices: - * obj = self.is_slice(value) - * if obj: # <<<<<<<<<<<<<< - * self.setitem_slice_assignment(self[index], obj) - * else: - */ goto __pyx_L4; } + /*else*/ { - /* "View.MemoryView":379 + /* "View.MemoryView":377 * self.setitem_slice_assignment(self[index], obj) * else: * self.setitem_slice_assign_scalar(self[index], value) # <<<<<<<<<<<<<< * else: * self.setitem_indexed(index, value) */ - /*else*/ { - __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; + __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L4:; - - /* "View.MemoryView":374 - * have_slices, index = _unellipsify(index, self.view.ndim) - * - * if have_slices: # <<<<<<<<<<<<<< - * obj = self.is_slice(value) - * if obj: - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":381 + /* "View.MemoryView":379 * self.setitem_slice_assign_scalar(self[index], value) * else: * self.setitem_indexed(index, value) # <<<<<<<<<<<<<< * * cdef is_slice(self, obj): */ - /*else*/ { - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L3:; - /* "View.MemoryView":371 + /* "View.MemoryView":369 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -19605,7 +18720,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit return __pyx_r; } -/* "View.MemoryView":383 +/* "View.MemoryView":381 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -19631,18 +18746,18 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_RefNannySetupContext("is_slice", 0); __Pyx_INCREF(__pyx_v_obj); - /* "View.MemoryView":384 + /* "View.MemoryView":382 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< * try: * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, */ - __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_memoryview_type); + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, ((PyObject *)__pyx_memoryview_type)); __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":385 + /* "View.MemoryView":383 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -19656,57 +18771,49 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { - /* "View.MemoryView":386 + /* "View.MemoryView":384 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< * self.dtype_is_object) * except TypeError: */ - __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_self->flags | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_self->flags | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_6); - /* "View.MemoryView":387 + /* "View.MemoryView":385 * try: * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) # <<<<<<<<<<<<<< * except TypeError: * return None */ - __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_7); - /* "View.MemoryView":386 + /* "View.MemoryView":384 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< * self.dtype_is_object) * except TypeError: */ - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_obj); - __Pyx_GIVEREF(__pyx_v_obj); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_obj); - __Pyx_GIVEREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_v_obj); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); __pyx_t_6 = 0; __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L4_error;} + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_memoryview_type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7); __pyx_t_7 = 0; - - /* "View.MemoryView":385 - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): - * try: # <<<<<<<<<<<<<< - * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, - * self.dtype_is_object) - */ } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -19717,7 +18824,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "View.MemoryView":388 + /* "View.MemoryView":386 * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) * except TypeError: # <<<<<<<<<<<<<< @@ -19727,12 +18834,12 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_6); - /* "View.MemoryView":389 + /* "View.MemoryView":387 * self.dtype_is_object) * except TypeError: * return None # <<<<<<<<<<<<<< @@ -19749,14 +18856,6 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ } goto __pyx_L6_except_error; __pyx_L6_except_error:; - - /* "View.MemoryView":385 - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): - * try: # <<<<<<<<<<<<<< - * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, - * self.dtype_is_object) - */ __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_5); @@ -19770,17 +18869,11 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ goto __pyx_L0; __pyx_L11_try_end:; } - - /* "View.MemoryView":384 - * - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< - * try: - * obj = memoryview(obj, self.flags|PyBUF_ANY_CONTIGUOUS, - */ + goto __pyx_L3; } + __pyx_L3:; - /* "View.MemoryView":391 + /* "View.MemoryView":389 * return None * * return obj # <<<<<<<<<<<<<< @@ -19792,7 +18885,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_r = __pyx_v_obj; goto __pyx_L0; - /* "View.MemoryView":383 + /* "View.MemoryView":381 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -19814,7 +18907,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ return __pyx_r; } -/* "View.MemoryView":393 +/* "View.MemoryView":391 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -19836,50 +18929,50 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assignment", 0); - /* "View.MemoryView":397 + /* "View.MemoryView":395 * cdef __Pyx_memviewslice src_slice * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ - if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":398 + /* "View.MemoryView":396 * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], * get_slice_from_memview(dst, &dst_slice)[0], # <<<<<<<<<<<<<< * src.ndim, dst.ndim, self.dtype_is_object) * */ - if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":399 + /* "View.MemoryView":397 * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) # <<<<<<<<<<<<<< * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":397 + /* "View.MemoryView":395 * cdef __Pyx_memviewslice src_slice * * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ - __pyx_t_4 = __pyx_memoryview_copy_contents((__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice))[0]), (__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice))[0]), __pyx_t_2, __pyx_t_3, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_memoryview_copy_contents((__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice))[0]), (__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice))[0]), __pyx_t_2, __pyx_t_3, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":393 + /* "View.MemoryView":391 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -19900,7 +18993,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi return __pyx_r; } -/* "View.MemoryView":401 +/* "View.MemoryView":399 * src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -19909,7 +19002,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi */ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) { - int __pyx_v_array[0x80]; + int __pyx_v_array[128]; void *__pyx_v_tmp; void *__pyx_v_item; __Pyx_memviewslice *__pyx_v_dst_slice; @@ -19932,7 +19025,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0); - /* "View.MemoryView":403 + /* "View.MemoryView":401 * cdef setitem_slice_assign_scalar(self, memoryview dst, value): * cdef int array[128] * cdef void *tmp = NULL # <<<<<<<<<<<<<< @@ -19941,7 +19034,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = NULL; - /* "View.MemoryView":408 + /* "View.MemoryView":406 * cdef __Pyx_memviewslice *dst_slice * cdef __Pyx_memviewslice tmp_slice * dst_slice = get_slice_from_memview(dst, &tmp_slice) # <<<<<<<<<<<<<< @@ -19950,7 +19043,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_dst_slice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); - /* "View.MemoryView":410 + /* "View.MemoryView":408 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< @@ -19960,7 +19053,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_1 = ((((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))) != 0); if (__pyx_t_1) { - /* "View.MemoryView":411 + /* "View.MemoryView":409 * * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) # <<<<<<<<<<<<<< @@ -19969,7 +19062,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize); - /* "View.MemoryView":412 + /* "View.MemoryView":410 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< @@ -19979,25 +19072,17 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_1 = ((__pyx_v_tmp == NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":413 + /* "View.MemoryView":411 * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: * raise MemoryError # <<<<<<<<<<<<<< * item = tmp * else: */ - PyErr_NoMemory(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":412 - * if self.view.itemsize > sizeof(array): - * tmp = PyMem_Malloc(self.view.itemsize) - * if tmp == NULL: # <<<<<<<<<<<<<< - * raise MemoryError - * item = tmp - */ + PyErr_NoMemory(); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":414 + /* "View.MemoryView":412 * if tmp == NULL: * raise MemoryError * item = tmp # <<<<<<<<<<<<<< @@ -20005,30 +19090,22 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * item = array */ __pyx_v_item = __pyx_v_tmp; - - /* "View.MemoryView":410 - * dst_slice = get_slice_from_memview(dst, &tmp_slice) - * - * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< - * tmp = PyMem_Malloc(self.view.itemsize) - * if tmp == NULL: - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":416 + /* "View.MemoryView":414 * item = tmp * else: * item = array # <<<<<<<<<<<<<< * * try: */ - /*else*/ { __pyx_v_item = ((void *)__pyx_v_array); } __pyx_L3:; - /* "View.MemoryView":418 + /* "View.MemoryView":416 * item = array * * try: # <<<<<<<<<<<<<< @@ -20037,7 +19114,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ /*try:*/ { - /* "View.MemoryView":419 + /* "View.MemoryView":417 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -20047,7 +19124,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0); if (__pyx_t_1) { - /* "View.MemoryView":420 + /* "View.MemoryView":418 * try: * if self.dtype_is_object: * ( item)[0] = value # <<<<<<<<<<<<<< @@ -20055,32 +19132,24 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * self.assign_item_from_object( item, value) */ (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value); - - /* "View.MemoryView":419 - * - * try: - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * ( item)[0] = value - * else: - */ goto __pyx_L8; } + /*else*/ { - /* "View.MemoryView":422 + /* "View.MemoryView":420 * ( item)[0] = value * else: * self.assign_item_from_object( item, value) # <<<<<<<<<<<<<< * * */ - /*else*/ { - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L6_error;} + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L6_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_L8:; - /* "View.MemoryView":426 + /* "View.MemoryView":424 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -20090,27 +19159,21 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_1 = ((__pyx_v_self->view.suboffsets != NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":427 + /* "View.MemoryView":425 * * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) # <<<<<<<<<<<<<< * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, * item, self.dtype_is_object) */ - __pyx_t_2 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L6_error;} + __pyx_t_2 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L6_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "View.MemoryView":426 - * - * - * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< - * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) - * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, - */ + goto __pyx_L9; } + __pyx_L9:; - /* "View.MemoryView":428 + /* "View.MemoryView":426 * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, # <<<<<<<<<<<<<< @@ -20120,7 +19183,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object); } - /* "View.MemoryView":431 + /* "View.MemoryView":429 * item, self.dtype_is_object) * finally: * PyMem_Free(tmp) # <<<<<<<<<<<<<< @@ -20165,7 +19228,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_L7:; } - /* "View.MemoryView":401 + /* "View.MemoryView":399 * src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -20186,7 +19249,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":433 +/* "View.MemoryView":431 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -20205,28 +19268,28 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_indexed", 0); - /* "View.MemoryView":434 + /* "View.MemoryView":432 * * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) # <<<<<<<<<<<<<< * self.assign_item_from_object(itemp, value) * */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_itemp = __pyx_t_1; - /* "View.MemoryView":435 + /* "View.MemoryView":433 * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) * self.assign_item_from_object(itemp, value) # <<<<<<<<<<<<<< * * cdef convert_item_to_object(self, char *itemp): */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":433 + /* "View.MemoryView":431 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -20247,7 +19310,7 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ return __pyx_r; } -/* "View.MemoryView":437 +/* "View.MemoryView":435 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -20278,31 +19341,31 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":440 + /* "View.MemoryView":438 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef bytes bytesitem * */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":443 + /* "View.MemoryView":441 * cdef bytes bytesitem * * bytesitem = itemp[:self.view.itemsize] # <<<<<<<<<<<<<< * try: * result = struct.unpack(self.view.format, bytesitem) */ - __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":444 + /* "View.MemoryView":442 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -20316,16 +19379,16 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "View.MemoryView":445 + /* "View.MemoryView":443 * bytesitem = itemp[:self.view.itemsize] * try: * result = struct.unpack(self.view.format, bytesitem) # <<<<<<<<<<<<<< * except struct.error: * raise ValueError("Unable to convert item to object") */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -20339,46 +19402,38 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __pyx_t_8 = 1; } } - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL; } - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_bytesitem); - __Pyx_GIVEREF(__pyx_v_bytesitem); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_bytesitem); + __Pyx_GIVEREF(__pyx_v_bytesitem); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_result = __pyx_t_1; __pyx_t_1 = 0; - - /* "View.MemoryView":444 - * - * bytesitem = itemp[:self.view.itemsize] - * try: # <<<<<<<<<<<<<< - * result = struct.unpack(self.view.format, bytesitem) - * except struct.error: - */ } + /*else:*/ { - /* "View.MemoryView":449 + /* "View.MemoryView":447 * raise ValueError("Unable to convert item to object") * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< * return result[0] * return result */ - /*else:*/ { __pyx_t_10 = strlen(__pyx_v_self->view.format); __pyx_t_11 = ((__pyx_t_10 == 1) != 0); if (__pyx_t_11) { - /* "View.MemoryView":450 + /* "View.MemoryView":448 * else: * if len(self.view.format) == 1: * return result[0] # <<<<<<<<<<<<<< @@ -20386,22 +19441,14 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}; + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}; __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6_except_return; - - /* "View.MemoryView":449 - * raise ValueError("Unable to convert item to object") - * else: - * if len(self.view.format) == 1: # <<<<<<<<<<<<<< - * return result[0] - * return result - */ } - /* "View.MemoryView":451 + /* "View.MemoryView":449 * if len(self.view.format) == 1: * return result[0] * return result # <<<<<<<<<<<<<< @@ -20420,47 +19467,39 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":446 + /* "View.MemoryView":444 * try: * result = struct.unpack(self.view.format, bytesitem) * except struct.error: # <<<<<<<<<<<<<< * raise ValueError("Unable to convert item to object") * else: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = PyErr_ExceptionMatches(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_12) { __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} + if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_9); - /* "View.MemoryView":447 + /* "View.MemoryView":445 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;} } goto __pyx_L5_except_error; __pyx_L5_except_error:; - - /* "View.MemoryView":444 - * - * bytesitem = itemp[:self.view.itemsize] - * try: # <<<<<<<<<<<<<< - * result = struct.unpack(self.view.format, bytesitem) - * except struct.error: - */ __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_XGIVEREF(__pyx_t_4); @@ -20474,7 +19513,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview goto __pyx_L0; } - /* "View.MemoryView":437 + /* "View.MemoryView":435 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -20500,7 +19539,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":453 +/* "View.MemoryView":451 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -20533,19 +19572,19 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":456 + /* "View.MemoryView":454 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef char c * cdef bytes bytesvalue */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":461 + /* "View.MemoryView":459 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< @@ -20556,57 +19595,49 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { - /* "View.MemoryView":462 + /* "View.MemoryView":460 * * if isinstance(value, tuple): * bytesvalue = struct.pack(self.view.format, *value) # <<<<<<<<<<<<<< * else: * bytesvalue = struct.pack(self.view.format, value) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - - /* "View.MemoryView":461 - * cdef Py_ssize_t i - * - * if isinstance(value, tuple): # <<<<<<<<<<<<<< - * bytesvalue = struct.pack(self.view.format, *value) - * else: - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":464 + /* "View.MemoryView":462 * bytesvalue = struct.pack(self.view.format, *value) * else: * bytesvalue = struct.pack(self.view.format, value) # <<<<<<<<<<<<<< * * for i, c in enumerate(bytesvalue): */ - /*else*/ { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; __pyx_t_7 = 0; @@ -20620,28 +19651,28 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_7 = 1; } } - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; } - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; } __pyx_L3:; - /* "View.MemoryView":466 + /* "View.MemoryView":464 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< @@ -20651,7 +19682,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_7 = 0; if (unlikely(__pyx_v_bytesvalue == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_INCREF(__pyx_v_bytesvalue); __pyx_t_9 = __pyx_v_bytesvalue; @@ -20661,7 +19692,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_10 = __pyx_t_13; __pyx_v_c = (__pyx_t_10[0]); - /* "View.MemoryView":467 + /* "View.MemoryView":465 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< @@ -20670,7 +19701,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie */ __pyx_v_i = __pyx_t_7; - /* "View.MemoryView":466 + /* "View.MemoryView":464 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< @@ -20679,7 +19710,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie */ __pyx_t_7 = (__pyx_t_7 + 1); - /* "View.MemoryView":467 + /* "View.MemoryView":465 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< @@ -20690,7 +19721,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "View.MemoryView":453 + /* "View.MemoryView":451 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -20718,7 +19749,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie return __pyx_r; } -/* "View.MemoryView":470 +/* "View.MemoryView":468 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< @@ -20732,14 +19763,14 @@ static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_b int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + __pyx_r = __pyx_memoryview_getbuffer_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { +static int __pyx_memoryview_getbuffer_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -20754,7 +19785,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "View.MemoryView":471 + /* "View.MemoryView":469 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -20764,7 +19795,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); if (__pyx_t_1) { - /* "View.MemoryView":472 + /* "View.MemoryView":470 * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_STRIDES: * info.shape = self.view.shape # <<<<<<<<<<<<<< @@ -20773,30 +19804,22 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ __pyx_t_2 = __pyx_v_self->view.shape; __pyx_v_info->shape = __pyx_t_2; - - /* "View.MemoryView":471 - * @cname('getbuffer') - * def __getbuffer__(self, Py_buffer *info, int flags): - * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< - * info.shape = self.view.shape - * else: - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":474 + /* "View.MemoryView":472 * info.shape = self.view.shape * else: * info.shape = NULL # <<<<<<<<<<<<<< * * if flags & PyBUF_STRIDES: */ - /*else*/ { __pyx_v_info->shape = NULL; } __pyx_L3:; - /* "View.MemoryView":476 + /* "View.MemoryView":474 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -20806,7 +19829,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); if (__pyx_t_1) { - /* "View.MemoryView":477 + /* "View.MemoryView":475 * * if flags & PyBUF_STRIDES: * info.strides = self.view.strides # <<<<<<<<<<<<<< @@ -20815,30 +19838,22 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ __pyx_t_2 = __pyx_v_self->view.strides; __pyx_v_info->strides = __pyx_t_2; + goto __pyx_L4; + } + /*else*/ { - /* "View.MemoryView":476 - * info.shape = NULL - * - * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< - * info.strides = self.view.strides - * else: - */ - goto __pyx_L4; - } - - /* "View.MemoryView":479 + /* "View.MemoryView":477 * info.strides = self.view.strides * else: * info.strides = NULL # <<<<<<<<<<<<<< * * if flags & PyBUF_INDIRECT: */ - /*else*/ { __pyx_v_info->strides = NULL; } __pyx_L4:; - /* "View.MemoryView":481 + /* "View.MemoryView":479 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< @@ -20848,7 +19863,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":482 + /* "View.MemoryView":480 * * if flags & PyBUF_INDIRECT: * info.suboffsets = self.view.suboffsets # <<<<<<<<<<<<<< @@ -20857,30 +19872,22 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ __pyx_t_2 = __pyx_v_self->view.suboffsets; __pyx_v_info->suboffsets = __pyx_t_2; - - /* "View.MemoryView":481 - * info.strides = NULL - * - * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< - * info.suboffsets = self.view.suboffsets - * else: - */ goto __pyx_L5; } + /*else*/ { - /* "View.MemoryView":484 + /* "View.MemoryView":482 * info.suboffsets = self.view.suboffsets * else: * info.suboffsets = NULL # <<<<<<<<<<<<<< * * if flags & PyBUF_FORMAT: */ - /*else*/ { __pyx_v_info->suboffsets = NULL; } __pyx_L5:; - /* "View.MemoryView":486 + /* "View.MemoryView":484 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -20890,7 +19897,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":487 + /* "View.MemoryView":485 * * if flags & PyBUF_FORMAT: * info.format = self.view.format # <<<<<<<<<<<<<< @@ -20899,30 +19906,22 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ __pyx_t_3 = __pyx_v_self->view.format; __pyx_v_info->format = __pyx_t_3; - - /* "View.MemoryView":486 - * info.suboffsets = NULL - * - * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< - * info.format = self.view.format - * else: - */ goto __pyx_L6; } + /*else*/ { - /* "View.MemoryView":489 + /* "View.MemoryView":487 * info.format = self.view.format * else: * info.format = NULL # <<<<<<<<<<<<<< * * info.buf = self.view.buf */ - /*else*/ { __pyx_v_info->format = NULL; } __pyx_L6:; - /* "View.MemoryView":491 + /* "View.MemoryView":489 * info.format = NULL * * info.buf = self.view.buf # <<<<<<<<<<<<<< @@ -20932,7 +19931,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_4 = __pyx_v_self->view.buf; __pyx_v_info->buf = __pyx_t_4; - /* "View.MemoryView":492 + /* "View.MemoryView":490 * * info.buf = self.view.buf * info.ndim = self.view.ndim # <<<<<<<<<<<<<< @@ -20942,7 +19941,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_5 = __pyx_v_self->view.ndim; __pyx_v_info->ndim = __pyx_t_5; - /* "View.MemoryView":493 + /* "View.MemoryView":491 * info.buf = self.view.buf * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize # <<<<<<<<<<<<<< @@ -20952,7 +19951,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_6 = __pyx_v_self->view.itemsize; __pyx_v_info->itemsize = __pyx_t_6; - /* "View.MemoryView":494 + /* "View.MemoryView":492 * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize * info.len = self.view.len # <<<<<<<<<<<<<< @@ -20962,7 +19961,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_6 = __pyx_v_self->view.len; __pyx_v_info->len = __pyx_t_6; - /* "View.MemoryView":495 + /* "View.MemoryView":493 * info.itemsize = self.view.itemsize * info.len = self.view.len * info.readonly = 0 # <<<<<<<<<<<<<< @@ -20971,7 +19970,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ __pyx_v_info->readonly = 0; - /* "View.MemoryView":496 + /* "View.MemoryView":494 * info.len = self.view.len * info.readonly = 0 * info.obj = self # <<<<<<<<<<<<<< @@ -20984,7 +19983,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "View.MemoryView":470 + /* "View.MemoryView":468 * * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< @@ -21002,7 +20001,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu return __pyx_r; } -/* "View.MemoryView":503 +/* "View.MemoryView":501 * property T: * @cname('__pyx_memoryview_transpose') * def __get__(self): # <<<<<<<<<<<<<< @@ -21016,14 +20015,14 @@ static PyObject *__pyx_memoryview_transpose(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_transpose_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_transpose_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) { struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -21034,29 +20033,29 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":504 + /* "View.MemoryView":502 * @cname('__pyx_memoryview_transpose') * def __get__(self): * cdef _memoryviewslice result = memoryview_copy(self) # <<<<<<<<<<<<<< * transpose_memslice(&result.from_slice) * return result */ - __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":505 + /* "View.MemoryView":503 * def __get__(self): * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) # <<<<<<<<<<<<<< * return result * */ - __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":506 + /* "View.MemoryView":504 * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) * return result # <<<<<<<<<<<<<< @@ -21068,7 +20067,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":503 + /* "View.MemoryView":501 * property T: * @cname('__pyx_memoryview_transpose') * def __get__(self): # <<<<<<<<<<<<<< @@ -21088,7 +20087,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ return __pyx_r; } -/* "View.MemoryView":510 +/* "View.MemoryView":508 * property base: * @cname('__pyx_memoryview__get__base') * def __get__(self): # <<<<<<<<<<<<<< @@ -21102,19 +20101,19 @@ static PyObject *__pyx_memoryview__get__base(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview__get__base_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview__get__base_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":511 + /* "View.MemoryView":509 * @cname('__pyx_memoryview__get__base') * def __get__(self): * return self.obj # <<<<<<<<<<<<<< @@ -21126,7 +20125,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc __pyx_r = __pyx_v_self->obj; goto __pyx_L0; - /* "View.MemoryView":510 + /* "View.MemoryView":508 * property base: * @cname('__pyx_memoryview__get__base') * def __get__(self): # <<<<<<<<<<<<<< @@ -21141,11 +20140,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc return __pyx_r; } -/* "View.MemoryView":515 +/* "View.MemoryView":513 * property shape: * @cname('__pyx_memoryview_get_shape') * def __get__(self): # <<<<<<<<<<<<<< - * return tuple([length for length in self.view.shape[:self.view.ndim]]) + * return tuple([self.view.shape[i] for i in xrange(self.view.ndim)]) * */ @@ -21155,65 +20154,63 @@ static PyObject *__pyx_memoryview_get_shape(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_get_shape_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - Py_ssize_t __pyx_v_length; +static PyObject *__pyx_memoryview_get_shape_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - Py_ssize_t *__pyx_t_2; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - PyObject *__pyx_t_5 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":516 + /* "View.MemoryView":514 * @cname('__pyx_memoryview_get_shape') * def __get__(self): - * return tuple([length for length in self.view.shape[:self.view.ndim]]) # <<<<<<<<<<<<<< + * return tuple([self.view.shape[i] for i in xrange(self.view.ndim)]) # <<<<<<<<<<<<<< * * property strides: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); - for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { - __pyx_t_2 = __pyx_t_4; - __pyx_v_length = (__pyx_t_2[0]); - __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_2 = __pyx_v_self->view.ndim; + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->view.shape[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } - __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; - /* "View.MemoryView":515 + /* "View.MemoryView":513 * property shape: * @cname('__pyx_memoryview_get_shape') * def __get__(self): # <<<<<<<<<<<<<< - * return tuple([length for length in self.view.shape[:self.view.ndim]]) + * return tuple([self.view.shape[i] for i in xrange(self.view.ndim)]) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("View.MemoryView.memoryview.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -21222,7 +20219,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru return __pyx_r; } -/* "View.MemoryView":520 +/* "View.MemoryView":518 * property strides: * @cname('__pyx_memoryview_get_strides') * def __get__(self): # <<<<<<<<<<<<<< @@ -21236,29 +20233,28 @@ static PyObject *__pyx_memoryview_get_strides(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_get_strides_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - Py_ssize_t __pyx_v_stride; +static PyObject *__pyx_memoryview_get_strides_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - Py_ssize_t *__pyx_t_5; - PyObject *__pyx_t_6 = NULL; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":521 + /* "View.MemoryView":519 * @cname('__pyx_memoryview_get_strides') * def __get__(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< @@ -21268,55 +20264,46 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st __pyx_t_1 = ((__pyx_v_self->view.strides == NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":523 + /* "View.MemoryView":521 * if self.view.strides == NULL: * * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< * - * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) + * return tuple([self.view.strides[i] for i in xrange(self.view.ndim)]) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":521 - * @cname('__pyx_memoryview_get_strides') - * def __get__(self): - * if self.view.strides == NULL: # <<<<<<<<<<<<<< - * - * raise ValueError("Buffer view does not expose strides") - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":525 + /* "View.MemoryView":523 * raise ValueError("Buffer view does not expose strides") * - * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) # <<<<<<<<<<<<<< + * return tuple([self.view.strides[i] for i in xrange(self.view.ndim)]) # <<<<<<<<<<<<<< * * property suboffsets: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); - for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { - __pyx_t_3 = __pyx_t_5; - __pyx_v_stride = (__pyx_t_3[0]); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_3 = __pyx_v_self->view.ndim; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = PyInt_FromSsize_t((__pyx_v_self->view.strides[__pyx_v_i])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; - /* "View.MemoryView":520 + /* "View.MemoryView":518 * property strides: * @cname('__pyx_memoryview_get_strides') * def __get__(self): # <<<<<<<<<<<<<< @@ -21327,7 +20314,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview.strides.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -21336,12 +20323,12 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st return __pyx_r; } -/* "View.MemoryView":529 +/* "View.MemoryView":527 * property suboffsets: * @cname('__pyx_memoryview_get_suboffsets') * def __get__(self): # <<<<<<<<<<<<<< * if self.view.suboffsets == NULL: - * return (-1,) * self.view.ndim + * return [-1] * self.view.ndim */ /* Python wrapper */ @@ -21350,102 +20337,96 @@ static PyObject *__pyx_memoryview_get_suboffsets(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_get_suboffsets_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - Py_ssize_t __pyx_v_suboffset; +static PyObject *__pyx_memoryview_get_suboffsets_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t *__pyx_t_4; - Py_ssize_t *__pyx_t_5; - Py_ssize_t *__pyx_t_6; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":530 + /* "View.MemoryView":528 * @cname('__pyx_memoryview_get_suboffsets') * def __get__(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< - * return (-1,) * self.view.ndim + * return [-1] * self.view.ndim * */ __pyx_t_1 = ((__pyx_v_self->view.suboffsets == NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":531 + /* "View.MemoryView":529 * def __get__(self): * if self.view.suboffsets == NULL: - * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< + * return [-1] * self.view.ndim # <<<<<<<<<<<<<< * - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) + * return tuple([self.view.suboffsets[i] for i in xrange(self.view.ndim)]) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(1 * ((__pyx_v_self->view.ndim<0) ? 0:__pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__23, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + { Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < __pyx_v_self->view.ndim; __pyx_temp++) { + __Pyx_INCREF(__pyx_int_neg_1); + PyList_SET_ITEM(__pyx_t_2, __pyx_temp, __pyx_int_neg_1); + __Pyx_GIVEREF(__pyx_int_neg_1); + } + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; goto __pyx_L0; - - /* "View.MemoryView":530 - * @cname('__pyx_memoryview_get_suboffsets') - * def __get__(self): - * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< - * return (-1,) * self.view.ndim - * - */ } - /* "View.MemoryView":533 - * return (-1,) * self.view.ndim + /* "View.MemoryView":531 + * return [-1] * self.view.ndim * - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) # <<<<<<<<<<<<<< + * return tuple([self.view.suboffsets[i] for i in xrange(self.view.ndim)]) # <<<<<<<<<<<<<< * * property ndim: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); - for (__pyx_t_6 = __pyx_v_self->view.suboffsets; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) { - __pyx_t_4 = __pyx_t_6; - __pyx_v_suboffset = (__pyx_t_4[0]); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_3 = __pyx_v_self->view.ndim; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + __pyx_t_5 = PyInt_FromSsize_t((__pyx_v_self->view.suboffsets[__pyx_v_i])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; - /* "View.MemoryView":529 + /* "View.MemoryView":527 * property suboffsets: * @cname('__pyx_memoryview_get_suboffsets') * def __get__(self): # <<<<<<<<<<<<<< * if self.view.suboffsets == NULL: - * return (-1,) * self.view.ndim + * return [-1] * self.view.ndim */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview.suboffsets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -21454,7 +20435,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ return __pyx_r; } -/* "View.MemoryView":537 +/* "View.MemoryView":535 * property ndim: * @cname('__pyx_memoryview_get_ndim') * def __get__(self): # <<<<<<<<<<<<<< @@ -21468,14 +20449,14 @@ static PyObject *__pyx_memoryview_get_ndim(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_get_ndim_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_get_ndim_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -21484,7 +20465,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":538 + /* "View.MemoryView":536 * @cname('__pyx_memoryview_get_ndim') * def __get__(self): * return self.view.ndim # <<<<<<<<<<<<<< @@ -21492,13 +20473,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc * property itemsize: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":537 + /* "View.MemoryView":535 * property ndim: * @cname('__pyx_memoryview_get_ndim') * def __get__(self): # <<<<<<<<<<<<<< @@ -21517,7 +20498,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc return __pyx_r; } -/* "View.MemoryView":542 +/* "View.MemoryView":540 * property itemsize: * @cname('__pyx_memoryview_get_itemsize') * def __get__(self): # <<<<<<<<<<<<<< @@ -21531,14 +20512,14 @@ static PyObject *__pyx_memoryview_get_itemsize(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_get_itemsize_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_get_itemsize_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -21547,7 +20528,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":543 + /* "View.MemoryView":541 * @cname('__pyx_memoryview_get_itemsize') * def __get__(self): * return self.view.itemsize # <<<<<<<<<<<<<< @@ -21555,13 +20536,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s * property nbytes: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":542 + /* "View.MemoryView":540 * property itemsize: * @cname('__pyx_memoryview_get_itemsize') * def __get__(self): # <<<<<<<<<<<<<< @@ -21580,7 +20561,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s return __pyx_r; } -/* "View.MemoryView":547 +/* "View.MemoryView":545 * property nbytes: * @cname('__pyx_memoryview_get_nbytes') * def __get__(self): # <<<<<<<<<<<<<< @@ -21594,14 +20575,14 @@ static PyObject *__pyx_memoryview_get_nbytes(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_get_nbytes_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_get_nbytes_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -21612,7 +20593,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":548 + /* "View.MemoryView":546 * @cname('__pyx_memoryview_get_nbytes') * def __get__(self): * return self.size * self.view.itemsize # <<<<<<<<<<<<<< @@ -21620,11 +20601,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str * property size: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -21632,7 +20613,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":547 + /* "View.MemoryView":545 * property nbytes: * @cname('__pyx_memoryview_get_nbytes') * def __get__(self): # <<<<<<<<<<<<<< @@ -21653,7 +20634,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str return __pyx_r; } -/* "View.MemoryView":552 +/* "View.MemoryView":550 * property size: * @cname('__pyx_memoryview_get_size') * def __get__(self): # <<<<<<<<<<<<<< @@ -21667,30 +20648,30 @@ static PyObject *__pyx_memoryview_get_size(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_get_size_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_get_size_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_v_result = NULL; PyObject *__pyx_v_length = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - Py_ssize_t *__pyx_t_5; - PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":553 + /* "View.MemoryView":551 * @cname('__pyx_memoryview_get_size') * def __get__(self): * if self._size is None: # <<<<<<<<<<<<<< @@ -21701,45 +20682,89 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":554 + /* "View.MemoryView":552 * def __get__(self): * if self._size is None: * result = 1 # <<<<<<<<<<<<<< * - * for length in self.view.shape[:self.view.ndim]: + * for length in self.shape: */ __Pyx_INCREF(__pyx_int_1); __pyx_v_result = __pyx_int_1; - /* "View.MemoryView":556 + /* "View.MemoryView":554 * result = 1 * - * for length in self.view.shape[:self.view.ndim]: # <<<<<<<<<<<<<< + * for length in self.shape: # <<<<<<<<<<<<<< * result *= length * */ - __pyx_t_4 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); - for (__pyx_t_5 = __pyx_v_self->view.shape; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { - __pyx_t_3 = __pyx_t_5; - __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_6); - __pyx_t_6 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_COMPILING_IN_CPYTHON + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif + } + } else { + __pyx_t_3 = __pyx_t_6(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_3); + __pyx_t_3 = 0; - /* "View.MemoryView":557 + /* "View.MemoryView":555 * - * for length in self.view.shape[:self.view.ndim]: + * for length in self.shape: * result *= length # <<<<<<<<<<<<<< * * self._size = result */ - __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6); - __pyx_t_6 = 0; + __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_3); + __pyx_t_3 = 0; + + /* "View.MemoryView":554 + * result = 1 + * + * for length in self.shape: # <<<<<<<<<<<<<< + * result *= length + * + */ } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":559 + /* "View.MemoryView":557 * result *= length * * self._size = result # <<<<<<<<<<<<<< @@ -21751,17 +20776,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __Pyx_GOTREF(__pyx_v_self->_size); __Pyx_DECREF(__pyx_v_self->_size); __pyx_v_self->_size = __pyx_v_result; - - /* "View.MemoryView":553 - * @cname('__pyx_memoryview_get_size') - * def __get__(self): - * if self._size is None: # <<<<<<<<<<<<<< - * result = 1 - * - */ + goto __pyx_L3; } + __pyx_L3:; - /* "View.MemoryView":561 + /* "View.MemoryView":559 * self._size = result * * return self._size # <<<<<<<<<<<<<< @@ -21773,7 +20792,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_r = __pyx_v_self->_size; goto __pyx_L0; - /* "View.MemoryView":552 + /* "View.MemoryView":550 * property size: * @cname('__pyx_memoryview_get_size') * def __get__(self): # <<<<<<<<<<<<<< @@ -21783,7 +20802,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc /* function exit code */ __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("View.MemoryView.memoryview.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -21794,7 +20814,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc return __pyx_r; } -/* "View.MemoryView":563 +/* "View.MemoryView":561 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -21808,20 +20828,20 @@ static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) { +static Py_ssize_t __pyx_memoryview_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("__len__", 0); - /* "View.MemoryView":564 + /* "View.MemoryView":562 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< @@ -21831,7 +20851,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_t_1 = ((__pyx_v_self->view.ndim >= 1) != 0); if (__pyx_t_1) { - /* "View.MemoryView":565 + /* "View.MemoryView":563 * def __len__(self): * if self.view.ndim >= 1: * return self.view.shape[0] # <<<<<<<<<<<<<< @@ -21840,17 +20860,9 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 */ __pyx_r = (__pyx_v_self->view.shape[0]); goto __pyx_L0; - - /* "View.MemoryView":564 - * - * def __len__(self): - * if self.view.ndim >= 1: # <<<<<<<<<<<<<< - * return self.view.shape[0] - * - */ } - /* "View.MemoryView":567 + /* "View.MemoryView":565 * return self.view.shape[0] * * return 0 # <<<<<<<<<<<<<< @@ -21860,7 +20872,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":563 + /* "View.MemoryView":561 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -21874,7 +20886,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 return __pyx_r; } -/* "View.MemoryView":569 +/* "View.MemoryView":567 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -21888,14 +20900,14 @@ static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -21906,7 +20918,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); - /* "View.MemoryView":570 + /* "View.MemoryView":568 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< @@ -21914,54 +20926,54 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":571 + /* "View.MemoryView":569 * def __repr__(self): * return "" % (self.base.__class__.__name__, * id(self)) # <<<<<<<<<<<<<< * * def __str__(self): */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":570 + /* "View.MemoryView":568 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< * id(self)) * */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":569 + /* "View.MemoryView":567 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -21982,7 +20994,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 return __pyx_r; } -/* "View.MemoryView":573 +/* "View.MemoryView":571 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -21996,14 +21008,14 @@ static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -22013,7 +21025,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 0); - /* "View.MemoryView":574 + /* "View.MemoryView":572 * * def __str__(self): * return "" % (self.base.__class__.__name__,) # <<<<<<<<<<<<<< @@ -22021,27 +21033,27 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":573 + /* "View.MemoryView":571 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -22061,7 +21073,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 return __pyx_r; } -/* "View.MemoryView":577 +/* "View.MemoryView":575 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -22075,14 +21087,14 @@ static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNU PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_c_contig (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice *__pyx_v_mslice; __Pyx_memviewslice __pyx_v_tmp; PyObject *__pyx_r = NULL; @@ -22093,7 +21105,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_c_contig", 0); - /* "View.MemoryView":580 + /* "View.MemoryView":578 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< @@ -22102,7 +21114,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 */ __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); - /* "View.MemoryView":581 + /* "View.MemoryView":579 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice, 'C', self.view.ndim) # <<<<<<<<<<<<<< @@ -22110,13 +21122,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 * def is_f_contig(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig(__pyx_v_mslice, 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig(__pyx_v_mslice, 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":577 + /* "View.MemoryView":575 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -22135,7 +21147,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 return __pyx_r; } -/* "View.MemoryView":583 +/* "View.MemoryView":581 * return slice_is_contig(mslice, 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -22149,14 +21161,14 @@ static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNU PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_f_contig (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice *__pyx_v_mslice; __Pyx_memviewslice __pyx_v_tmp; PyObject *__pyx_r = NULL; @@ -22167,7 +21179,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_f_contig", 0); - /* "View.MemoryView":586 + /* "View.MemoryView":584 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< @@ -22176,7 +21188,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 */ __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); - /* "View.MemoryView":587 + /* "View.MemoryView":585 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice, 'F', self.view.ndim) # <<<<<<<<<<<<<< @@ -22184,13 +21196,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 * def copy(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig(__pyx_v_mslice, 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig(__pyx_v_mslice, 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":583 + /* "View.MemoryView":581 * return slice_is_contig(mslice, 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -22209,7 +21221,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 return __pyx_r; } -/* "View.MemoryView":589 +/* "View.MemoryView":587 * return slice_is_contig(mslice, 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -22223,14 +21235,14 @@ static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyO PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("copy (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice __pyx_v_mslice; int __pyx_v_flags; PyObject *__pyx_r = NULL; @@ -22242,7 +21254,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy", 0); - /* "View.MemoryView":591 + /* "View.MemoryView":589 * def copy(self): * cdef __Pyx_memviewslice mslice * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS # <<<<<<<<<<<<<< @@ -22251,7 +21263,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS)); - /* "View.MemoryView":593 + /* "View.MemoryView":591 * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS * * slice_copy(self, &mslice) # <<<<<<<<<<<<<< @@ -22260,17 +21272,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice)); - /* "View.MemoryView":594 + /* "View.MemoryView":592 * * slice_copy(self, &mslice) * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_C_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), __pyx_k_c, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), __pyx_k_c, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":599 + /* "View.MemoryView":597 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &mslice) # <<<<<<<<<<<<<< @@ -22278,13 +21290,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 * def copy_fortran(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":589 + /* "View.MemoryView":587 * return slice_is_contig(mslice, 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -22303,7 +21315,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 return __pyx_r; } -/* "View.MemoryView":601 +/* "View.MemoryView":599 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -22317,14 +21329,14 @@ static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UN PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("copy_fortran (wrapper)", 0); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryview_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) { +static PyObject *__pyx_memoryview_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) { __Pyx_memviewslice __pyx_v_src; __Pyx_memviewslice __pyx_v_dst; int __pyx_v_flags; @@ -22337,7 +21349,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy_fortran", 0); - /* "View.MemoryView":603 + /* "View.MemoryView":601 * def copy_fortran(self): * cdef __Pyx_memviewslice src, dst * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS # <<<<<<<<<<<<<< @@ -22346,7 +21358,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS)); - /* "View.MemoryView":605 + /* "View.MemoryView":603 * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS * * slice_copy(self, &src) # <<<<<<<<<<<<<< @@ -22355,17 +21367,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src)); - /* "View.MemoryView":606 + /* "View.MemoryView":604 * * slice_copy(self, &src) * dst = slice_copy_contig(&src, "fortran", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_F_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), __pyx_k_fortran, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), __pyx_k_fortran, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_dst = __pyx_t_1; - /* "View.MemoryView":611 + /* "View.MemoryView":609 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &dst) # <<<<<<<<<<<<<< @@ -22373,13 +21385,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":601 + /* "View.MemoryView":599 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -22398,7 +21410,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 return __pyx_r; } -/* "View.MemoryView":615 +/* "View.MemoryView":613 * * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< @@ -22418,35 +21430,35 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_cwrapper", 0); - /* "View.MemoryView":616 + /* "View.MemoryView":614 * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) # <<<<<<<<<<<<<< * result.typeinfo = typeinfo * return result */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_o); - __Pyx_GIVEREF(__pyx_v_o); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_o); - __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_v_o); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_memoryview_type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":617 + /* "View.MemoryView":615 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo # <<<<<<<<<<<<<< @@ -22455,7 +21467,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in */ __pyx_v_result->typeinfo = __pyx_v_typeinfo; - /* "View.MemoryView":618 + /* "View.MemoryView":616 * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo * return result # <<<<<<<<<<<<<< @@ -22467,7 +21479,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":615 + /* "View.MemoryView":613 * * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< @@ -22489,7 +21501,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in return __pyx_r; } -/* "View.MemoryView":621 +/* "View.MemoryView":619 * * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< @@ -22503,18 +21515,18 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { int __pyx_t_1; __Pyx_RefNannySetupContext("memoryview_check", 0); - /* "View.MemoryView":622 + /* "View.MemoryView":620 * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): * return isinstance(o, memoryview) # <<<<<<<<<<<<<< * * cdef tuple _unellipsify(object index, int ndim): */ - __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, __pyx_memoryview_type); + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, ((PyObject *)__pyx_memoryview_type)); __pyx_r = __pyx_t_1; goto __pyx_L0; - /* "View.MemoryView":621 + /* "View.MemoryView":619 * * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< @@ -22528,7 +21540,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { return __pyx_r; } -/* "View.MemoryView":624 +/* "View.MemoryView":622 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -22562,7 +21574,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_unellipsify", 0); - /* "View.MemoryView":629 + /* "View.MemoryView":627 * full slices. * """ * if not isinstance(index, tuple): # <<<<<<<<<<<<<< @@ -22573,57 +21585,49 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":630 + /* "View.MemoryView":628 * """ * if not isinstance(index, tuple): * tup = (index,) # <<<<<<<<<<<<<< * else: * tup = index */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_index); - __Pyx_GIVEREF(__pyx_v_index); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index); + __Pyx_GIVEREF(__pyx_v_index); __pyx_v_tup = __pyx_t_3; __pyx_t_3 = 0; - - /* "View.MemoryView":629 - * full slices. - * """ - * if not isinstance(index, tuple): # <<<<<<<<<<<<<< - * tup = (index,) - * else: - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":632 + /* "View.MemoryView":630 * tup = (index,) * else: * tup = index # <<<<<<<<<<<<<< * * result = [] */ - /*else*/ { __Pyx_INCREF(__pyx_v_index); __pyx_v_tup = __pyx_v_index; } __pyx_L3:; - /* "View.MemoryView":634 + /* "View.MemoryView":632 * tup = index * * result = [] # <<<<<<<<<<<<<< * have_slices = False * seen_ellipsis = False */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":635 + /* "View.MemoryView":633 * * result = [] * have_slices = False # <<<<<<<<<<<<<< @@ -22632,7 +21636,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 0; - /* "View.MemoryView":636 + /* "View.MemoryView":634 * result = [] * have_slices = False * seen_ellipsis = False # <<<<<<<<<<<<<< @@ -22641,7 +21645,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_seen_ellipsis = 0; - /* "View.MemoryView":637 + /* "View.MemoryView":635 * have_slices = False * seen_ellipsis = False * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< @@ -22654,27 +21658,25 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_4 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_7); + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -22683,7 +21685,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } @@ -22693,13 +21695,13 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_3); - __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_7; __pyx_t_7 = 0; - /* "View.MemoryView":638 + /* "View.MemoryView":636 * seen_ellipsis = False * for idx, item in enumerate(tup): * if item is Ellipsis: # <<<<<<<<<<<<<< @@ -22710,7 +21712,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "View.MemoryView":639 + /* "View.MemoryView":637 * for idx, item in enumerate(tup): * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< @@ -22720,27 +21722,27 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_1 = ((!(__pyx_v_seen_ellipsis != 0)) != 0); if (__pyx_t_1) { - /* "View.MemoryView":640 + /* "View.MemoryView":638 * if item is Ellipsis: * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) # <<<<<<<<<<<<<< * seen_ellipsis = True * else: */ - __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) { - __Pyx_INCREF(__pyx_slice__24); - __Pyx_GIVEREF(__pyx_slice__24); - PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__24); + __Pyx_INCREF(__pyx_slice__22); + PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__22); + __Pyx_GIVEREF(__pyx_slice__22); } } - __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "View.MemoryView":641 + /* "View.MemoryView":639 * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) * seen_ellipsis = True # <<<<<<<<<<<<<< @@ -22748,30 +21750,22 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * result.append(slice(None)) */ __pyx_v_seen_ellipsis = 1; - - /* "View.MemoryView":639 - * for idx, item in enumerate(tup): - * if item is Ellipsis: - * if not seen_ellipsis: # <<<<<<<<<<<<<< - * result.extend([slice(None)] * (ndim - len(tup) + 1)) - * seen_ellipsis = True - */ goto __pyx_L7; } + /*else*/ { - /* "View.MemoryView":643 + /* "View.MemoryView":641 * seen_ellipsis = True * else: * result.append(slice(None)) # <<<<<<<<<<<<<< * have_slices = True * else: */ - /*else*/ { - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__25); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__23); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L7:; - /* "View.MemoryView":644 + /* "View.MemoryView":642 * else: * result.append(slice(None)) * have_slices = True # <<<<<<<<<<<<<< @@ -22779,25 +21773,17 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * if not isinstance(item, slice) and not PyIndex_Check(item): */ __pyx_v_have_slices = 1; - - /* "View.MemoryView":638 - * seen_ellipsis = False - * for idx, item in enumerate(tup): - * if item is Ellipsis: # <<<<<<<<<<<<<< - * if not seen_ellipsis: - * result.extend([slice(None)] * (ndim - len(tup) + 1)) - */ goto __pyx_L6; } + /*else*/ { - /* "View.MemoryView":646 + /* "View.MemoryView":644 * have_slices = True * else: * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< * raise TypeError("Cannot index with type '%s'" % type(item)) * */ - /*else*/ { __pyx_t_2 = PySlice_Check(__pyx_v_item); __pyx_t_10 = ((!(__pyx_t_2 != 0)) != 0); if (__pyx_t_10) { @@ -22810,37 +21796,29 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_L9_bool_binop_done:; if (__pyx_t_1) { - /* "View.MemoryView":647 + /* "View.MemoryView":645 * else: * if not isinstance(item, slice) and not PyIndex_Check(item): * raise TypeError("Cannot index with type '%s'" % type(item)) # <<<<<<<<<<<<<< * * have_slices = have_slices or isinstance(item, slice) */ - __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":646 - * have_slices = True - * else: - * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< - * raise TypeError("Cannot index with type '%s'" % type(item)) - * - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":649 + /* "View.MemoryView":647 * raise TypeError("Cannot index with type '%s'" % type(item)) * * have_slices = have_slices or isinstance(item, slice) # <<<<<<<<<<<<<< @@ -22859,18 +21837,18 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_L11_bool_binop_done:; __pyx_v_have_slices = __pyx_t_1; - /* "View.MemoryView":650 + /* "View.MemoryView":648 * * have_slices = have_slices or isinstance(item, slice) * result.append(item) # <<<<<<<<<<<<<< * * nslices = ndim - len(result) */ - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L6:; - /* "View.MemoryView":637 + /* "View.MemoryView":635 * have_slices = False * seen_ellipsis = False * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< @@ -22881,17 +21859,17 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":652 + /* "View.MemoryView":650 * result.append(item) * * nslices = ndim - len(result) # <<<<<<<<<<<<<< * if nslices: * result.extend([slice(None)] * nslices) */ - __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_nslices = (__pyx_v_ndim - __pyx_t_5); - /* "View.MemoryView":653 + /* "View.MemoryView":651 * * nslices = ndim - len(result) * if nslices: # <<<<<<<<<<<<<< @@ -22901,35 +21879,29 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_1 = (__pyx_v_nslices != 0); if (__pyx_t_1) { - /* "View.MemoryView":654 + /* "View.MemoryView":652 * nslices = ndim - len(result) * if nslices: * result.extend([slice(None)] * nslices) # <<<<<<<<<<<<<< * * return have_slices or nslices, tuple(result) */ - __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) { - __Pyx_INCREF(__pyx_slice__26); - __Pyx_GIVEREF(__pyx_slice__26); - PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__26); + __Pyx_INCREF(__pyx_slice__24); + PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__24); + __Pyx_GIVEREF(__pyx_slice__24); } } - __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "View.MemoryView":653 - * - * nslices = ndim - len(result) - * if nslices: # <<<<<<<<<<<<<< - * result.extend([slice(None)] * nslices) - * - */ + goto __pyx_L13; } + __pyx_L13:; - /* "View.MemoryView":656 + /* "View.MemoryView":654 * result.extend([slice(None)] * nslices) * * return have_slices or nslices, tuple(result) # <<<<<<<<<<<<<< @@ -22939,32 +21911,32 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_XDECREF(__pyx_r); if (!__pyx_v_have_slices) { } else { - __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L14_bool_binop_done; } - __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; __pyx_L14_bool_binop_done:; - __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_r = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L0; - /* "View.MemoryView":624 + /* "View.MemoryView":622 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -22990,86 +21962,76 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { return __pyx_r; } -/* "View.MemoryView":658 +/* "View.MemoryView":656 * return have_slices or nslices, tuple(result) * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: + * cdef int i + * for i in range(ndim): */ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ndim) { - Py_ssize_t __pyx_v_suboffset; + int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - Py_ssize_t *__pyx_t_1; - Py_ssize_t *__pyx_t_2; - Py_ssize_t *__pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assert_direct_dimensions", 0); - /* "View.MemoryView":659 - * + /* "View.MemoryView":658 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): - * for suboffset in suboffsets[:ndim]: # <<<<<<<<<<<<<< - * if suboffset >= 0: + * cdef int i + * for i in range(ndim): # <<<<<<<<<<<<<< + * if suboffsets[i] >= 0: * raise ValueError("Indirect dimensions not supported") */ - __pyx_t_2 = (__pyx_v_suboffsets + __pyx_v_ndim); - for (__pyx_t_3 = __pyx_v_suboffsets; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) { - __pyx_t_1 = __pyx_t_3; - __pyx_v_suboffset = (__pyx_t_1[0]); + __pyx_t_1 = __pyx_v_ndim; + for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { + __pyx_v_i = __pyx_t_2; - /* "View.MemoryView":660 - * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< + /* "View.MemoryView":659 + * cdef int i + * for i in range(ndim): + * if suboffsets[i] >= 0: # <<<<<<<<<<<<<< * raise ValueError("Indirect dimensions not supported") * */ - __pyx_t_4 = ((__pyx_v_suboffset >= 0) != 0); - if (__pyx_t_4) { + __pyx_t_3 = (((__pyx_v_suboffsets[__pyx_v_i]) >= 0) != 0); + if (__pyx_t_3) { - /* "View.MemoryView":661 - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: + /* "View.MemoryView":660 + * for i in range(ndim): + * if suboffsets[i] >= 0: * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< * * */ - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_5); - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":660 - * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< - * raise ValueError("Indirect dimensions not supported") - * - */ + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } - /* "View.MemoryView":658 + /* "View.MemoryView":656 * return have_slices or nslices, tuple(result) * * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: + * cdef int i + * for i in range(ndim): */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("View.MemoryView.assert_direct_dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -23078,7 +22040,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __ return __pyx_r; } -/* "View.MemoryView":668 +/* "View.MemoryView":667 * * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< @@ -23122,7 +22084,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memview_slice", 0); - /* "View.MemoryView":669 + /* "View.MemoryView":668 * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): * cdef int new_ndim = 0, suboffset_dim = -1, dim # <<<<<<<<<<<<<< @@ -23132,7 +22094,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_new_ndim = 0; __pyx_v_suboffset_dim = -1; - /* "View.MemoryView":676 + /* "View.MemoryView":675 * * * memset(&dst, 0, sizeof(dst)) # <<<<<<<<<<<<<< @@ -23141,7 +22103,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst))); - /* "View.MemoryView":680 + /* "View.MemoryView":679 * cdef _memoryviewslice memviewsliceobj * * assert memview.view.ndim > 0 # <<<<<<<<<<<<<< @@ -23152,36 +22114,36 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_memview->view.ndim > 0) != 0))) { PyErr_SetNone(PyExc_AssertionError); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } } #endif - /* "View.MemoryView":682 + /* "View.MemoryView":681 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), ((PyObject *)__pyx_memoryviewslice_type)); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":683 + /* "View.MemoryView":682 * * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview # <<<<<<<<<<<<<< * p_src = &memviewsliceobj.from_slice * else: */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":684 + /* "View.MemoryView":683 * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice # <<<<<<<<<<<<<< @@ -23189,28 +22151,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * slice_copy(memview, &src) */ __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice); - - /* "View.MemoryView":682 - * assert memview.view.ndim > 0 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * memviewsliceobj = memview - * p_src = &memviewsliceobj.from_slice - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":686 + /* "View.MemoryView":685 * p_src = &memviewsliceobj.from_slice * else: * slice_copy(memview, &src) # <<<<<<<<<<<<<< * p_src = &src * */ - /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src)); - /* "View.MemoryView":687 + /* "View.MemoryView":686 * else: * slice_copy(memview, &src) * p_src = &src # <<<<<<<<<<<<<< @@ -23221,7 +22175,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L3:; - /* "View.MemoryView":693 + /* "View.MemoryView":692 * * * dst.memview = p_src.memview # <<<<<<<<<<<<<< @@ -23231,7 +22185,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_4 = __pyx_v_p_src->memview; __pyx_v_dst.memview = __pyx_t_4; - /* "View.MemoryView":694 + /* "View.MemoryView":693 * * dst.memview = p_src.memview * dst.data = p_src.data # <<<<<<<<<<<<<< @@ -23241,7 +22195,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_5 = __pyx_v_p_src->data; __pyx_v_dst.data = __pyx_t_5; - /* "View.MemoryView":699 + /* "View.MemoryView":698 * * * cdef __Pyx_memviewslice *p_dst = &dst # <<<<<<<<<<<<<< @@ -23250,7 +22204,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_dst = (&__pyx_v_dst); - /* "View.MemoryView":700 + /* "View.MemoryView":699 * * cdef __Pyx_memviewslice *p_dst = &dst * cdef int *p_suboffset_dim = &suboffset_dim # <<<<<<<<<<<<<< @@ -23259,7 +22213,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim); - /* "View.MemoryView":704 + /* "View.MemoryView":703 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -23271,27 +22225,25 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_3 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_9); + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else - __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_9); + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } } else { @@ -23300,7 +22252,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } @@ -23311,7 +22263,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_dim = __pyx_t_6; __pyx_t_6 = (__pyx_t_6 + 1); - /* "View.MemoryView":705 + /* "View.MemoryView":704 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< @@ -23321,35 +22273,27 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_2 = (PyIndex_Check(__pyx_v_index) != 0); if (__pyx_t_2) { - /* "View.MemoryView":709 + /* "View.MemoryView":708 * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, * index, 0, 0, # start, stop, step # <<<<<<<<<<<<<< * 0, 0, 0, # have_{start,stop,step} * False) */ - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":706 + /* "View.MemoryView":705 * for dim, index in enumerate(indices): * if PyIndex_Check(index): * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":705 - * - * for dim, index in enumerate(indices): - * if PyIndex_Check(index): # <<<<<<<<<<<<<< - * slice_memviewslice( - * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], - */ + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L6; } - /* "View.MemoryView":712 + /* "View.MemoryView":711 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< @@ -23360,7 +22304,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { - /* "View.MemoryView":713 + /* "View.MemoryView":712 * False) * elif index is None: * p_dst.shape[new_ndim] = 1 # <<<<<<<<<<<<<< @@ -23369,7 +22313,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1; - /* "View.MemoryView":714 + /* "View.MemoryView":713 * elif index is None: * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 # <<<<<<<<<<<<<< @@ -23378,16 +22322,16 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0; - /* "View.MemoryView":715 + /* "View.MemoryView":714 * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 # <<<<<<<<<<<<<< * new_ndim += 1 * else: */ - (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L; + (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1; - /* "View.MemoryView":716 + /* "View.MemoryView":715 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 * new_ndim += 1 # <<<<<<<<<<<<<< @@ -23395,32 +22339,24 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * start = index.start or 0 */ __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); - - /* "View.MemoryView":712 - * 0, 0, 0, # have_{start,stop,step} - * False) - * elif index is None: # <<<<<<<<<<<<<< - * p_dst.shape[new_ndim] = 1 - * p_dst.strides[new_ndim] = 0 - */ goto __pyx_L6; } + /*else*/ { - /* "View.MemoryView":718 + /* "View.MemoryView":717 * new_ndim += 1 * else: * start = index.start or 0 # <<<<<<<<<<<<<< * stop = index.stop or 0 * step = index.step or 0 */ - /*else*/ { - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L7_bool_binop_done; @@ -23429,20 +22365,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L7_bool_binop_done:; __pyx_v_start = __pyx_t_10; - /* "View.MemoryView":719 + /* "View.MemoryView":718 * else: * start = index.start or 0 * stop = index.stop or 0 # <<<<<<<<<<<<<< * step = index.step or 0 * */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L9_bool_binop_done; @@ -23451,20 +22387,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L9_bool_binop_done:; __pyx_v_stop = __pyx_t_10; - /* "View.MemoryView":720 + /* "View.MemoryView":719 * start = index.start or 0 * stop = index.stop or 0 * step = index.step or 0 # <<<<<<<<<<<<<< * * have_start = index.start is not None */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_bool_binop_done; @@ -23473,55 +22409,55 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L11_bool_binop_done:; __pyx_v_step = __pyx_t_10; - /* "View.MemoryView":722 + /* "View.MemoryView":721 * step = index.step or 0 * * have_start = index.start is not None # <<<<<<<<<<<<<< * have_stop = index.stop is not None * have_step = index.step is not None */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_start = __pyx_t_1; - /* "View.MemoryView":723 + /* "View.MemoryView":722 * * have_start = index.start is not None * have_stop = index.stop is not None # <<<<<<<<<<<<<< * have_step = index.step is not None * */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_stop = __pyx_t_1; - /* "View.MemoryView":724 + /* "View.MemoryView":723 * have_start = index.start is not None * have_stop = index.stop is not None * have_step = index.step is not None # <<<<<<<<<<<<<< * * slice_memviewslice( */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_have_step = __pyx_t_1; - /* "View.MemoryView":726 + /* "View.MemoryView":725 * have_step = index.step is not None * * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":732 + /* "View.MemoryView":731 * have_start, have_stop, have_step, * True) * new_ndim += 1 # <<<<<<<<<<<<<< @@ -23532,7 +22468,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L6:; - /* "View.MemoryView":704 + /* "View.MemoryView":703 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -23542,18 +22478,18 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":734 + /* "View.MemoryView":733 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), ((PyObject *)__pyx_memoryviewslice_type)); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":735 + /* "View.MemoryView":734 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< @@ -23562,81 +22498,73 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __Pyx_XDECREF(((PyObject *)__pyx_r)); - /* "View.MemoryView":736 + /* "View.MemoryView":735 * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, # <<<<<<<<<<<<<< * memviewsliceobj.to_dtype_func, * memview.dtype_is_object) */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":737 + /* "View.MemoryView":736 * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, # <<<<<<<<<<<<<< * memview.dtype_is_object) * else: */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":735 + /* "View.MemoryView":734 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, */ - __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - - /* "View.MemoryView":734 - * new_ndim += 1 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * return memoryview_fromslice(dst, new_ndim, - * memviewsliceobj.to_object_func, - */ } + /*else*/ { - /* "View.MemoryView":740 + /* "View.MemoryView":739 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< * memview.dtype_is_object) * */ - /*else*/ { __Pyx_XDECREF(((PyObject *)__pyx_r)); - /* "View.MemoryView":741 + /* "View.MemoryView":740 * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - /* "View.MemoryView":740 + /* "View.MemoryView":739 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< * memview.dtype_is_object) * */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; } - /* "View.MemoryView":668 + /* "View.MemoryView":667 * * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< @@ -23658,7 +22586,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ return __pyx_r; } -/* "View.MemoryView":765 +/* "View.MemoryView":764 * * @cname('__pyx_memoryview_slice_memviewslice') * cdef int slice_memviewslice( # <<<<<<<<<<<<<< @@ -23677,7 +22605,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "View.MemoryView":785 + /* "View.MemoryView":784 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< @@ -23687,7 +22615,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = ((!(__pyx_v_is_slice != 0)) != 0); if (__pyx_t_1) { - /* "View.MemoryView":787 + /* "View.MemoryView":786 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< @@ -23697,7 +22625,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = ((__pyx_v_start < 0) != 0); if (__pyx_t_1) { - /* "View.MemoryView":788 + /* "View.MemoryView":787 * * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -23705,17 +22633,11 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - - /* "View.MemoryView":787 - * if not is_slice: - * - * if start < 0: # <<<<<<<<<<<<<< - * start += shape - * if not 0 <= start < shape: - */ + goto __pyx_L4; } + __pyx_L4:; - /* "View.MemoryView":789 + /* "View.MemoryView":788 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< @@ -23729,42 +22651,28 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":790 + /* "View.MemoryView":789 * start += shape * if not 0 <= start < shape: * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) # <<<<<<<<<<<<<< * else: * */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, __pyx_k_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":789 - * if start < 0: - * start += shape - * if not 0 <= start < shape: # <<<<<<<<<<<<<< - * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) - * else: - */ + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, __pyx_k_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L5; } - - /* "View.MemoryView":785 - * cdef bint negative_step - * - * if not is_slice: # <<<<<<<<<<<<<< - * - * if start < 0: - */ + __pyx_L5:; goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":793 + /* "View.MemoryView":792 * else: * * negative_step = have_step != 0 and step < 0 # <<<<<<<<<<<<<< * * if have_step and step == 0: */ - /*else*/ { __pyx_t_1 = ((__pyx_v_have_step != 0) != 0); if (__pyx_t_1) { } else { @@ -23776,7 +22684,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_L6_bool_binop_done:; __pyx_v_negative_step = __pyx_t_2; - /* "View.MemoryView":795 + /* "View.MemoryView":794 * negative_step = have_step != 0 and step < 0 * * if have_step and step == 0: # <<<<<<<<<<<<<< @@ -23794,25 +22702,19 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_L9_bool_binop_done:; if (__pyx_t_2) { - /* "View.MemoryView":796 + /* "View.MemoryView":795 * * if have_step and step == 0: * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, __pyx_k_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":795 - * negative_step = have_step != 0 and step < 0 - * - * if have_step and step == 0: # <<<<<<<<<<<<<< - * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) - * - */ + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, __pyx_k_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L8; } + __pyx_L8:; - /* "View.MemoryView":799 + /* "View.MemoryView":798 * * * if have_start: # <<<<<<<<<<<<<< @@ -23822,7 +22724,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_start != 0); if (__pyx_t_2) { - /* "View.MemoryView":800 + /* "View.MemoryView":799 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< @@ -23832,7 +22734,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_start < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":801 + /* "View.MemoryView":800 * if have_start: * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -23841,7 +22743,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - /* "View.MemoryView":802 + /* "View.MemoryView":801 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< @@ -23851,7 +22753,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_start < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":803 + /* "View.MemoryView":802 * start += shape * if start < 0: * start = 0 # <<<<<<<<<<<<<< @@ -23859,27 +22761,13 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * if negative_step: */ __pyx_v_start = 0; - - /* "View.MemoryView":802 - * if start < 0: - * start += shape - * if start < 0: # <<<<<<<<<<<<<< - * start = 0 - * elif start >= shape: - */ + goto __pyx_L13; } - - /* "View.MemoryView":800 - * - * if have_start: - * if start < 0: # <<<<<<<<<<<<<< - * start += shape - * if start < 0: - */ + __pyx_L13:; goto __pyx_L12; } - /* "View.MemoryView":804 + /* "View.MemoryView":803 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< @@ -23889,7 +22777,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_start >= __pyx_v_shape) != 0); if (__pyx_t_2) { - /* "View.MemoryView":805 + /* "View.MemoryView":804 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< @@ -23899,7 +22787,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":806 + /* "View.MemoryView":805 * elif start >= shape: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -23907,61 +22795,38 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * start = shape */ __pyx_v_start = (__pyx_v_shape - 1); - - /* "View.MemoryView":805 - * start = 0 - * elif start >= shape: - * if negative_step: # <<<<<<<<<<<<<< - * start = shape - 1 - * else: - */ goto __pyx_L14; } + /*else*/ { - /* "View.MemoryView":808 + /* "View.MemoryView":807 * start = shape - 1 * else: * start = shape # <<<<<<<<<<<<<< * else: * if negative_step: */ - /*else*/ { __pyx_v_start = __pyx_v_shape; } __pyx_L14:; - - /* "View.MemoryView":804 - * if start < 0: - * start = 0 - * elif start >= shape: # <<<<<<<<<<<<<< - * if negative_step: - * start = shape - 1 - */ + goto __pyx_L12; } __pyx_L12:; - - /* "View.MemoryView":799 - * - * - * if have_start: # <<<<<<<<<<<<<< - * if start < 0: - * start += shape - */ goto __pyx_L11; } + /*else*/ { - /* "View.MemoryView":810 + /* "View.MemoryView":809 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< * start = shape - 1 * else: */ - /*else*/ { __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":811 + /* "View.MemoryView":810 * else: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -23969,32 +22834,24 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * start = 0 */ __pyx_v_start = (__pyx_v_shape - 1); - - /* "View.MemoryView":810 - * start = shape - * else: - * if negative_step: # <<<<<<<<<<<<<< - * start = shape - 1 - * else: - */ goto __pyx_L15; } + /*else*/ { - /* "View.MemoryView":813 + /* "View.MemoryView":812 * start = shape - 1 * else: * start = 0 # <<<<<<<<<<<<<< * * if have_stop: */ - /*else*/ { __pyx_v_start = 0; } __pyx_L15:; } __pyx_L11:; - /* "View.MemoryView":815 + /* "View.MemoryView":814 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< @@ -24004,7 +22861,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_stop != 0); if (__pyx_t_2) { - /* "View.MemoryView":816 + /* "View.MemoryView":815 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< @@ -24014,7 +22871,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_stop < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":817 + /* "View.MemoryView":816 * if have_stop: * if stop < 0: * stop += shape # <<<<<<<<<<<<<< @@ -24023,7 +22880,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape); - /* "View.MemoryView":818 + /* "View.MemoryView":817 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< @@ -24033,7 +22890,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_stop < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":819 + /* "View.MemoryView":818 * stop += shape * if stop < 0: * stop = 0 # <<<<<<<<<<<<<< @@ -24041,27 +22898,13 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * stop = shape */ __pyx_v_stop = 0; - - /* "View.MemoryView":818 - * if stop < 0: - * stop += shape - * if stop < 0: # <<<<<<<<<<<<<< - * stop = 0 - * elif stop > shape: - */ + goto __pyx_L18; } - - /* "View.MemoryView":816 - * - * if have_stop: - * if stop < 0: # <<<<<<<<<<<<<< - * stop += shape - * if stop < 0: - */ + __pyx_L18:; goto __pyx_L17; } - /* "View.MemoryView":820 + /* "View.MemoryView":819 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< @@ -24071,7 +22914,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_stop > __pyx_v_shape) != 0); if (__pyx_t_2) { - /* "View.MemoryView":821 + /* "View.MemoryView":820 * stop = 0 * elif stop > shape: * stop = shape # <<<<<<<<<<<<<< @@ -24079,72 +22922,49 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * if negative_step: */ __pyx_v_stop = __pyx_v_shape; - - /* "View.MemoryView":820 - * if stop < 0: - * stop = 0 - * elif stop > shape: # <<<<<<<<<<<<<< - * stop = shape - * else: - */ + goto __pyx_L17; } __pyx_L17:; - - /* "View.MemoryView":815 - * start = 0 - * - * if have_stop: # <<<<<<<<<<<<<< - * if stop < 0: - * stop += shape - */ goto __pyx_L16; } + /*else*/ { - /* "View.MemoryView":823 + /* "View.MemoryView":822 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< * stop = -1 * else: */ - /*else*/ { __pyx_t_2 = (__pyx_v_negative_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":824 + /* "View.MemoryView":823 * else: * if negative_step: * stop = -1 # <<<<<<<<<<<<<< * else: * stop = shape */ - __pyx_v_stop = -1L; - - /* "View.MemoryView":823 - * stop = shape - * else: - * if negative_step: # <<<<<<<<<<<<<< - * stop = -1 - * else: - */ + __pyx_v_stop = -1; goto __pyx_L19; } + /*else*/ { - /* "View.MemoryView":826 + /* "View.MemoryView":825 * stop = -1 * else: * stop = shape # <<<<<<<<<<<<<< * * if not have_step: */ - /*else*/ { __pyx_v_stop = __pyx_v_shape; } __pyx_L19:; } __pyx_L16:; - /* "View.MemoryView":828 + /* "View.MemoryView":827 * stop = shape * * if not have_step: # <<<<<<<<<<<<<< @@ -24154,7 +22974,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((!(__pyx_v_have_step != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":829 + /* "View.MemoryView":828 * * if not have_step: * step = 1 # <<<<<<<<<<<<<< @@ -24162,17 +22982,11 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * */ __pyx_v_step = 1; - - /* "View.MemoryView":828 - * stop = shape - * - * if not have_step: # <<<<<<<<<<<<<< - * step = 1 - * - */ + goto __pyx_L20; } + __pyx_L20:; - /* "View.MemoryView":833 + /* "View.MemoryView":832 * * with cython.cdivision(True): * new_shape = (stop - start) // step # <<<<<<<<<<<<<< @@ -24181,7 +22995,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step); - /* "View.MemoryView":835 + /* "View.MemoryView":834 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< @@ -24191,7 +23005,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":836 + /* "View.MemoryView":835 * * if (stop - start) - step * new_shape: * new_shape += 1 # <<<<<<<<<<<<<< @@ -24199,17 +23013,11 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * if new_shape < 0: */ __pyx_v_new_shape = (__pyx_v_new_shape + 1); - - /* "View.MemoryView":835 - * new_shape = (stop - start) // step - * - * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< - * new_shape += 1 - * - */ + goto __pyx_L21; } + __pyx_L21:; - /* "View.MemoryView":838 + /* "View.MemoryView":837 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< @@ -24219,7 +23027,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_new_shape < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":839 + /* "View.MemoryView":838 * * if new_shape < 0: * new_shape = 0 # <<<<<<<<<<<<<< @@ -24227,17 +23035,11 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * */ __pyx_v_new_shape = 0; - - /* "View.MemoryView":838 - * new_shape += 1 - * - * if new_shape < 0: # <<<<<<<<<<<<<< - * new_shape = 0 - * - */ + goto __pyx_L22; } + __pyx_L22:; - /* "View.MemoryView":842 + /* "View.MemoryView":841 * * * dst.strides[new_ndim] = stride * step # <<<<<<<<<<<<<< @@ -24246,7 +23048,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step); - /* "View.MemoryView":843 + /* "View.MemoryView":842 * * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape # <<<<<<<<<<<<<< @@ -24255,7 +23057,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape; - /* "View.MemoryView":844 + /* "View.MemoryView":843 * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape * dst.suboffsets[new_ndim] = suboffset # <<<<<<<<<<<<<< @@ -24266,7 +23068,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L3:; - /* "View.MemoryView":847 + /* "View.MemoryView":846 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< @@ -24276,7 +23078,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (((__pyx_v_suboffset_dim[0]) < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":848 + /* "View.MemoryView":847 * * if suboffset_dim[0] < 0: * dst.data += start * stride # <<<<<<<<<<<<<< @@ -24284,31 +23086,23 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * dst.suboffsets[suboffset_dim[0]] += start * stride */ __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride)); - - /* "View.MemoryView":847 - * - * - * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< - * dst.data += start * stride - * else: - */ goto __pyx_L23; } + /*else*/ { - /* "View.MemoryView":850 + /* "View.MemoryView":849 * dst.data += start * stride * else: * dst.suboffsets[suboffset_dim[0]] += start * stride # <<<<<<<<<<<<<< * * if suboffset >= 0: */ - /*else*/ { __pyx_t_3 = (__pyx_v_suboffset_dim[0]); (__pyx_v_dst->suboffsets[__pyx_t_3]) = ((__pyx_v_dst->suboffsets[__pyx_t_3]) + (__pyx_v_start * __pyx_v_stride)); } __pyx_L23:; - /* "View.MemoryView":852 + /* "View.MemoryView":851 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -24318,7 +23112,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":853 + /* "View.MemoryView":852 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< @@ -24328,7 +23122,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((!(__pyx_v_is_slice != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":854 + /* "View.MemoryView":853 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< @@ -24338,7 +23132,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_new_ndim == 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":855 + /* "View.MemoryView":854 * if not is_slice: * if new_ndim == 0: * dst.data = ( dst.data)[0] + suboffset # <<<<<<<<<<<<<< @@ -24346,69 +23140,39 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * _err_dim(IndexError, "All dimensions preceding dimension %d " */ __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset); - - /* "View.MemoryView":854 - * if suboffset >= 0: - * if not is_slice: - * if new_ndim == 0: # <<<<<<<<<<<<<< - * dst.data = ( dst.data)[0] + suboffset - * else: - */ goto __pyx_L26; } + /*else*/ { - /* "View.MemoryView":857 + /* "View.MemoryView":856 * dst.data = ( dst.data)[0] + suboffset * else: * _err_dim(IndexError, "All dimensions preceding dimension %d " # <<<<<<<<<<<<<< * "must be indexed and not sliced", dim) * else: */ - /*else*/ { - - /* "View.MemoryView":858 - * else: - * _err_dim(IndexError, "All dimensions preceding dimension %d " - * "must be indexed and not sliced", dim) # <<<<<<<<<<<<<< - * else: - * suboffset_dim[0] = new_ndim - */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, __pyx_k_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, __pyx_k_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L26:; - - /* "View.MemoryView":853 - * - * if suboffset >= 0: - * if not is_slice: # <<<<<<<<<<<<<< - * if new_ndim == 0: - * dst.data = ( dst.data)[0] + suboffset - */ goto __pyx_L25; } + /*else*/ { - /* "View.MemoryView":860 + /* "View.MemoryView":859 * "must be indexed and not sliced", dim) * else: * suboffset_dim[0] = new_ndim # <<<<<<<<<<<<<< * * return 0 */ - /*else*/ { (__pyx_v_suboffset_dim[0]) = __pyx_v_new_ndim; } __pyx_L25:; - - /* "View.MemoryView":852 - * dst.suboffsets[suboffset_dim[0]] += start * stride - * - * if suboffset >= 0: # <<<<<<<<<<<<<< - * if not is_slice: - * if new_ndim == 0: - */ + goto __pyx_L24; } + __pyx_L24:; - /* "View.MemoryView":862 + /* "View.MemoryView":861 * suboffset_dim[0] = new_ndim * * return 0 # <<<<<<<<<<<<<< @@ -24418,7 +23182,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":765 + /* "View.MemoryView":764 * * @cname('__pyx_memoryview_slice_memviewslice') * cdef int slice_memviewslice( # <<<<<<<<<<<<<< @@ -24442,7 +23206,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, return __pyx_r; } -/* "View.MemoryView":868 +/* "View.MemoryView":867 * * @cname('__pyx_pybuffer_index') * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< @@ -24467,16 +23231,16 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P int __pyx_clineno = 0; __Pyx_RefNannySetupContext("pybuffer_index", 0); - /* "View.MemoryView":870 + /* "View.MemoryView":869 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 # <<<<<<<<<<<<<< * cdef Py_ssize_t itemsize = view.itemsize * cdef char *resultp */ - __pyx_v_suboffset = -1L; + __pyx_v_suboffset = -1; - /* "View.MemoryView":871 + /* "View.MemoryView":870 * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 * cdef Py_ssize_t itemsize = view.itemsize # <<<<<<<<<<<<<< @@ -24486,7 +23250,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_1 = __pyx_v_view->itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":874 + /* "View.MemoryView":873 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< @@ -24496,7 +23260,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_view->ndim == 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":875 + /* "View.MemoryView":874 * * if view.ndim == 0: * shape = view.len / itemsize # <<<<<<<<<<<<<< @@ -24504,16 +23268,28 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P * else: */ if (unlikely(__pyx_v_itemsize == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { + else if (sizeof(Py_ssize_t) == sizeof(long) && unlikely(__pyx_v_itemsize == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize); - /* "View.MemoryView":876 + /* "View.MemoryView":875 * if view.ndim == 0: * shape = view.len / itemsize * stride = itemsize # <<<<<<<<<<<<<< @@ -24521,28 +23297,20 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P * shape = view.shape[dim] */ __pyx_v_stride = __pyx_v_itemsize; - - /* "View.MemoryView":874 - * cdef char *resultp - * - * if view.ndim == 0: # <<<<<<<<<<<<<< - * shape = view.len / itemsize - * stride = itemsize - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":878 + /* "View.MemoryView":877 * stride = itemsize * else: * shape = view.shape[dim] # <<<<<<<<<<<<<< * stride = view.strides[dim] * if view.suboffsets != NULL: */ - /*else*/ { __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]); - /* "View.MemoryView":879 + /* "View.MemoryView":878 * else: * shape = view.shape[dim] * stride = view.strides[dim] # <<<<<<<<<<<<<< @@ -24551,7 +23319,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]); - /* "View.MemoryView":880 + /* "View.MemoryView":879 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -24561,7 +23329,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_view->suboffsets != NULL) != 0); if (__pyx_t_2) { - /* "View.MemoryView":881 + /* "View.MemoryView":880 * stride = view.strides[dim] * if view.suboffsets != NULL: * suboffset = view.suboffsets[dim] # <<<<<<<<<<<<<< @@ -24569,19 +23337,13 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P * if index < 0: */ __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]); - - /* "View.MemoryView":880 - * shape = view.shape[dim] - * stride = view.strides[dim] - * if view.suboffsets != NULL: # <<<<<<<<<<<<<< - * suboffset = view.suboffsets[dim] - * - */ + goto __pyx_L4; } + __pyx_L4:; } __pyx_L3:; - /* "View.MemoryView":883 + /* "View.MemoryView":882 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< @@ -24591,7 +23353,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_index < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":884 + /* "View.MemoryView":883 * * if index < 0: * index += view.shape[dim] # <<<<<<<<<<<<<< @@ -24600,7 +23362,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim])); - /* "View.MemoryView":885 + /* "View.MemoryView":884 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< @@ -24610,49 +23372,35 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_index < 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":886 + /* "View.MemoryView":885 * index += view.shape[dim] * if index < 0: * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< * * if index >= shape: */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":885 - * if index < 0: - * index += view.shape[dim] - * if index < 0: # <<<<<<<<<<<<<< - * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) - * - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - - /* "View.MemoryView":883 - * suboffset = view.suboffsets[dim] - * - * if index < 0: # <<<<<<<<<<<<<< - * index += view.shape[dim] - * if index < 0: - */ + goto __pyx_L5; } + __pyx_L5:; - /* "View.MemoryView":888 + /* "View.MemoryView":887 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * if index >= shape: # <<<<<<<<<<<<<< @@ -24662,40 +23410,32 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_index >= __pyx_v_shape) != 0); if (__pyx_t_2) { - /* "View.MemoryView":889 + /* "View.MemoryView":888 * * if index >= shape: * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< * * resultp = bufp + index * stride */ - __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":888 - * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) - * - * if index >= shape: # <<<<<<<<<<<<<< - * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) - * - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":891 + /* "View.MemoryView":890 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) * * resultp = bufp + index * stride # <<<<<<<<<<<<<< @@ -24704,7 +23444,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride)); - /* "View.MemoryView":892 + /* "View.MemoryView":891 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -24714,7 +23454,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":893 + /* "View.MemoryView":892 * resultp = bufp + index * stride * if suboffset >= 0: * resultp = ( resultp)[0] + suboffset # <<<<<<<<<<<<<< @@ -24722,17 +23462,11 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P * return resultp */ __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset); - - /* "View.MemoryView":892 - * - * resultp = bufp + index * stride - * if suboffset >= 0: # <<<<<<<<<<<<<< - * resultp = ( resultp)[0] + suboffset - * - */ + goto __pyx_L8; } + __pyx_L8:; - /* "View.MemoryView":895 + /* "View.MemoryView":894 * resultp = ( resultp)[0] + suboffset * * return resultp # <<<<<<<<<<<<<< @@ -24742,7 +23476,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_r = __pyx_v_resultp; goto __pyx_L0; - /* "View.MemoryView":868 + /* "View.MemoryView":867 * * @cname('__pyx_pybuffer_index') * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< @@ -24761,7 +23495,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P return __pyx_r; } -/* "View.MemoryView":901 +/* "View.MemoryView":900 * * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< @@ -24788,7 +23522,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "View.MemoryView":902 + /* "View.MemoryView":901 * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: * cdef int ndim = memslice.memview.view.ndim # <<<<<<<<<<<<<< @@ -24798,7 +23532,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_1 = __pyx_v_memslice->memview->view.ndim; __pyx_v_ndim = __pyx_t_1; - /* "View.MemoryView":904 + /* "View.MemoryView":903 * cdef int ndim = memslice.memview.view.ndim * * cdef Py_ssize_t *shape = memslice.shape # <<<<<<<<<<<<<< @@ -24808,7 +23542,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->shape; __pyx_v_shape = __pyx_t_2; - /* "View.MemoryView":905 + /* "View.MemoryView":904 * * cdef Py_ssize_t *shape = memslice.shape * cdef Py_ssize_t *strides = memslice.strides # <<<<<<<<<<<<<< @@ -24818,7 +23552,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->strides; __pyx_v_strides = __pyx_t_2; - /* "View.MemoryView":909 + /* "View.MemoryView":908 * * cdef int i, j * for i in range(ndim / 2): # <<<<<<<<<<<<<< @@ -24829,7 +23563,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_3; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":910 + /* "View.MemoryView":909 * cdef int i, j * for i in range(ndim / 2): * j = ndim - 1 - i # <<<<<<<<<<<<<< @@ -24838,7 +23572,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { */ __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i); - /* "View.MemoryView":911 + /* "View.MemoryView":910 * for i in range(ndim / 2): * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] # <<<<<<<<<<<<<< @@ -24850,7 +23584,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_strides[__pyx_v_i]) = __pyx_t_4; (__pyx_v_strides[__pyx_v_j]) = __pyx_t_5; - /* "View.MemoryView":912 + /* "View.MemoryView":911 * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] * shape[i], shape[j] = shape[j], shape[i] # <<<<<<<<<<<<<< @@ -24862,7 +23596,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_shape[__pyx_v_i]) = __pyx_t_5; (__pyx_v_shape[__pyx_v_j]) = __pyx_t_4; - /* "View.MemoryView":914 + /* "View.MemoryView":913 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< @@ -24880,26 +23614,20 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_L6_bool_binop_done:; if (__pyx_t_6) { - /* "View.MemoryView":915 + /* "View.MemoryView":914 * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") # <<<<<<<<<<<<<< * * return 1 */ - __pyx_t_8 = __pyx_memoryview_err(__pyx_builtin_ValueError, __pyx_k_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":914 - * shape[i], shape[j] = shape[j], shape[i] - * - * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< - * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") - * - */ + __pyx_t_8 = __pyx_memoryview_err(__pyx_builtin_ValueError, __pyx_k_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L5; } + __pyx_L5:; } - /* "View.MemoryView":917 + /* "View.MemoryView":916 * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") * * return 1 # <<<<<<<<<<<<<< @@ -24909,7 +23637,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_r = 1; goto __pyx_L0; - /* "View.MemoryView":901 + /* "View.MemoryView":900 * * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< @@ -24933,7 +23661,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { return __pyx_r; } -/* "View.MemoryView":934 +/* "View.MemoryView":933 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -24946,17 +23674,17 @@ static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); + __pyx_memoryviewslice_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } -static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { +static void __pyx_memoryviewslice_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "View.MemoryView":935 + /* "View.MemoryView":934 * * def __dealloc__(self): * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) # <<<<<<<<<<<<<< @@ -24965,7 +23693,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl */ __PYX_XDEC_MEMVIEW((&__pyx_v_self->from_slice), 1); - /* "View.MemoryView":934 + /* "View.MemoryView":933 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -24977,7 +23705,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":937 +/* "View.MemoryView":936 * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -24995,7 +23723,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":938 + /* "View.MemoryView":937 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< @@ -25005,7 +23733,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor __pyx_t_1 = ((__pyx_v_self->to_object_func != NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":939 + /* "View.MemoryView":938 * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: * return self.to_object_func(itemp) # <<<<<<<<<<<<<< @@ -25013,38 +23741,30 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor * return memoryview.convert_item_to_object(self, itemp) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - - /* "View.MemoryView":938 - * - * cdef convert_item_to_object(self, char *itemp): - * if self.to_object_func != NULL: # <<<<<<<<<<<<<< - * return self.to_object_func(itemp) - * else: - */ } + /*else*/ { - /* "View.MemoryView":941 + /* "View.MemoryView":940 * return self.to_object_func(itemp) * else: * return memoryview.convert_item_to_object(self, itemp) # <<<<<<<<<<<<<< * * cdef assign_item_from_object(self, char *itemp, object value): */ - /*else*/ { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":937 + /* "View.MemoryView":936 * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -25063,7 +23783,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":943 +/* "View.MemoryView":942 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -25082,7 +23802,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":944 + /* "View.MemoryView":943 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< @@ -25092,40 +23812,32 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo __pyx_t_1 = ((__pyx_v_self->to_dtype_func != NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":945 + /* "View.MemoryView":944 * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: * self.to_dtype_func(itemp, value) # <<<<<<<<<<<<<< * else: * memoryview.assign_item_from_object(self, itemp, value) */ - __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":944 - * - * cdef assign_item_from_object(self, char *itemp, object value): - * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< - * self.to_dtype_func(itemp, value) - * else: - */ + __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":947 + /* "View.MemoryView":946 * self.to_dtype_func(itemp, value) * else: * memoryview.assign_item_from_object(self, itemp, value) # <<<<<<<<<<<<<< * * property base: */ - /*else*/ { - __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; - /* "View.MemoryView":943 + /* "View.MemoryView":942 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -25146,7 +23858,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo return __pyx_r; } -/* "View.MemoryView":951 +/* "View.MemoryView":950 * property base: * @cname('__pyx_memoryviewslice__get__base') * def __get__(self): # <<<<<<<<<<<<<< @@ -25160,19 +23872,19 @@ static PyObject *__pyx_memoryviewslice__get__base(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); + __pyx_r = __pyx_memoryviewslice__get__base_MemoryView_16_memoryviewslice_4base___get__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { +static PyObject *__pyx_memoryviewslice__get__base_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":952 + /* "View.MemoryView":951 * @cname('__pyx_memoryviewslice__get__base') * def __get__(self): * return self.from_object # <<<<<<<<<<<<<< @@ -25184,7 +23896,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__ __pyx_r = __pyx_v_self->from_object; goto __pyx_L0; - /* "View.MemoryView":951 + /* "View.MemoryView":950 * property base: * @cname('__pyx_memoryviewslice__get__base') * def __get__(self): # <<<<<<<<<<<<<< @@ -25199,7 +23911,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__ return __pyx_r; } -/* "View.MemoryView":958 +/* "View.MemoryView":957 * * @cname('__pyx_memoryview_fromslice') * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< @@ -25209,8 +23921,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice, int __pyx_v_ndim, PyObject *(*__pyx_v_to_object_func)(char *), int (*__pyx_v_to_dtype_func)(char *, PyObject *), int __pyx_v_dtype_is_object) { struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; - Py_ssize_t __pyx_v_suboffset; - PyObject *__pyx_v_length = NULL; + int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -25218,17 +23929,16 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl PyObject *__pyx_t_3 = NULL; __Pyx_TypeInfo *__pyx_t_4; Py_buffer __pyx_t_5; - Py_ssize_t *__pyx_t_6; - Py_ssize_t *__pyx_t_7; - Py_ssize_t *__pyx_t_8; - Py_ssize_t __pyx_t_9; + Py_ssize_t __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_fromslice", 0); /* "View.MemoryView":966 - * cdef _memoryviewslice result + * cdef int i * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< * return None @@ -25248,14 +23958,6 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; - - /* "View.MemoryView":966 - * cdef _memoryviewslice result - * - * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< - * return None - * - */ } /* "View.MemoryView":972 @@ -25270,15 +23972,15 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None); + __Pyx_GIVEREF(Py_None); __Pyx_INCREF(__pyx_int_0); - __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_memoryviewslice_type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); @@ -25387,7 +24089,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl * * result.view.shape = result.from_slice.shape # <<<<<<<<<<<<<< * result.view.strides = result.from_slice.strides - * + * result.view.suboffsets = result.from_slice.suboffsets */ __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape); @@ -25395,115 +24097,53 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl * * result.view.shape = result.from_slice.shape * result.view.strides = result.from_slice.strides # <<<<<<<<<<<<<< - * + * result.view.suboffsets = result.from_slice.suboffsets * */ __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides); - /* "View.MemoryView":992 - * - * - * result.view.suboffsets = NULL # <<<<<<<<<<<<<< - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: - */ - __pyx_v_result->__pyx_base.view.suboffsets = NULL; - - /* "View.MemoryView":993 - * - * result.view.suboffsets = NULL - * for suboffset in result.from_slice.suboffsets[:ndim]: # <<<<<<<<<<<<<< - * if suboffset >= 0: - * result.view.suboffsets = result.from_slice.suboffsets - */ - __pyx_t_7 = (__pyx_v_result->from_slice.suboffsets + __pyx_v_ndim); - for (__pyx_t_8 = __pyx_v_result->from_slice.suboffsets; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { - __pyx_t_6 = __pyx_t_8; - __pyx_v_suboffset = (__pyx_t_6[0]); - - /* "View.MemoryView":994 - * result.view.suboffsets = NULL - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< - * result.view.suboffsets = result.from_slice.suboffsets - * break - */ - __pyx_t_1 = ((__pyx_v_suboffset >= 0) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":995 - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: - * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< - * break - * - */ - __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); - - /* "View.MemoryView":996 - * if suboffset >= 0: - * result.view.suboffsets = result.from_slice.suboffsets - * break # <<<<<<<<<<<<<< + /* "View.MemoryView":990 + * result.view.shape = result.from_slice.shape + * result.view.strides = result.from_slice.strides + * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< * * result.view.len = result.view.itemsize */ - goto __pyx_L5_break; - - /* "View.MemoryView":994 - * result.view.suboffsets = NULL - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< - * result.view.suboffsets = result.from_slice.suboffsets - * break - */ - } - } - __pyx_L5_break:; + __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); - /* "View.MemoryView":998 - * break + /* "View.MemoryView":992 + * result.view.suboffsets = result.from_slice.suboffsets * * result.view.len = result.view.itemsize # <<<<<<<<<<<<<< - * for length in result.view.shape[:ndim]: - * result.view.len *= length + * for i in range(ndim): + * result.view.len *= result.view.shape[i] */ - __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize; - __pyx_v_result->__pyx_base.view.len = __pyx_t_9; + __pyx_t_6 = __pyx_v_result->__pyx_base.view.itemsize; + __pyx_v_result->__pyx_base.view.len = __pyx_t_6; - /* "View.MemoryView":999 + /* "View.MemoryView":993 * * result.view.len = result.view.itemsize - * for length in result.view.shape[:ndim]: # <<<<<<<<<<<<<< - * result.view.len *= length + * for i in range(ndim): # <<<<<<<<<<<<<< + * result.view.len *= result.view.shape[i] * */ - __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); - for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { - __pyx_t_6 = __pyx_t_8; - __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); - __pyx_t_2 = 0; + __pyx_t_7 = __pyx_v_ndim; + for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { + __pyx_v_i = __pyx_t_8; - /* "View.MemoryView":1000 + /* "View.MemoryView":994 * result.view.len = result.view.itemsize - * for length in result.view.shape[:ndim]: - * result.view.len *= length # <<<<<<<<<<<<<< + * for i in range(ndim): + * result.view.len *= result.view.shape[i] # <<<<<<<<<<<<<< * * result.to_object_func = to_object_func */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_result->__pyx_base.view.len = __pyx_t_9; + __pyx_v_result->__pyx_base.view.len = (__pyx_v_result->__pyx_base.view.len * (__pyx_v_result->__pyx_base.view.shape[__pyx_v_i])); } - /* "View.MemoryView":1002 - * result.view.len *= length + /* "View.MemoryView":996 + * result.view.len *= result.view.shape[i] * * result.to_object_func = to_object_func # <<<<<<<<<<<<<< * result.to_dtype_func = to_dtype_func @@ -25511,7 +24151,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_object_func = __pyx_v_to_object_func; - /* "View.MemoryView":1003 + /* "View.MemoryView":997 * * result.to_object_func = to_object_func * result.to_dtype_func = to_dtype_func # <<<<<<<<<<<<<< @@ -25520,7 +24160,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func; - /* "View.MemoryView":1005 + /* "View.MemoryView":999 * result.to_dtype_func = to_dtype_func * * return result # <<<<<<<<<<<<<< @@ -25532,7 +24172,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":958 + /* "View.MemoryView":957 * * @cname('__pyx_memoryview_fromslice') * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< @@ -25548,13 +24188,12 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_XDECREF(__pyx_v_length); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":1008 +/* "View.MemoryView":1002 * * @cname('__pyx_memoryview_get_slice_from_memoryview') * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< @@ -25574,31 +24213,31 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_slice_from_memview", 0); - /* "View.MemoryView":1011 + /* "View.MemoryView":1005 * __Pyx_memviewslice *mslice): * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * obj = memview * return &obj.from_slice */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), ((PyObject *)__pyx_memoryviewslice_type)); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":1012 + /* "View.MemoryView":1006 * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): * obj = memview # <<<<<<<<<<<<<< * return &obj.from_slice * else: */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":1013 + /* "View.MemoryView":1007 * if isinstance(memview, _memoryviewslice): * obj = memview * return &obj.from_slice # <<<<<<<<<<<<<< @@ -25607,27 +24246,19 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p */ __pyx_r = (&__pyx_v_obj->from_slice); goto __pyx_L0; - - /* "View.MemoryView":1011 - * __Pyx_memviewslice *mslice): - * cdef _memoryviewslice obj - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * obj = memview - * return &obj.from_slice - */ } + /*else*/ { - /* "View.MemoryView":1015 + /* "View.MemoryView":1009 * return &obj.from_slice * else: * slice_copy(memview, mslice) # <<<<<<<<<<<<<< * return mslice * */ - /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice); - /* "View.MemoryView":1016 + /* "View.MemoryView":1010 * else: * slice_copy(memview, mslice) * return mslice # <<<<<<<<<<<<<< @@ -25638,7 +24269,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p goto __pyx_L0; } - /* "View.MemoryView":1008 + /* "View.MemoryView":1002 * * @cname('__pyx_memoryview_get_slice_from_memoryview') * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< @@ -25649,7 +24280,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); - __Pyx_WriteUnraisable("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); + __Pyx_WriteUnraisable("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename, 0); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_obj); @@ -25657,7 +24288,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p return __pyx_r; } -/* "View.MemoryView":1019 +/* "View.MemoryView":1013 * * @cname('__pyx_memoryview_slice_copy') * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< @@ -25674,10 +24305,10 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem Py_ssize_t *__pyx_t_1; int __pyx_t_2; int __pyx_t_3; - Py_ssize_t __pyx_t_4; + int __pyx_t_4; __Pyx_RefNannySetupContext("slice_copy", 0); - /* "View.MemoryView":1023 + /* "View.MemoryView":1017 * cdef (Py_ssize_t*) shape, strides, suboffsets * * shape = memview.view.shape # <<<<<<<<<<<<<< @@ -25687,7 +24318,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.shape; __pyx_v_shape = __pyx_t_1; - /* "View.MemoryView":1024 + /* "View.MemoryView":1018 * * shape = memview.view.shape * strides = memview.view.strides # <<<<<<<<<<<<<< @@ -25697,7 +24328,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.strides; __pyx_v_strides = __pyx_t_1; - /* "View.MemoryView":1025 + /* "View.MemoryView":1019 * shape = memview.view.shape * strides = memview.view.strides * suboffsets = memview.view.suboffsets # <<<<<<<<<<<<<< @@ -25707,7 +24338,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.suboffsets; __pyx_v_suboffsets = __pyx_t_1; - /* "View.MemoryView":1027 + /* "View.MemoryView":1021 * suboffsets = memview.view.suboffsets * * dst.memview = <__pyx_memoryview *> memview # <<<<<<<<<<<<<< @@ -25716,7 +24347,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview); - /* "View.MemoryView":1028 + /* "View.MemoryView":1022 * * dst.memview = <__pyx_memoryview *> memview * dst.data = memview.view.buf # <<<<<<<<<<<<<< @@ -25725,7 +24356,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf); - /* "View.MemoryView":1030 + /* "View.MemoryView":1024 * dst.data = memview.view.buf * * for dim in range(memview.view.ndim): # <<<<<<<<<<<<<< @@ -25736,40 +24367,59 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_dim = __pyx_t_3; - /* "View.MemoryView":1031 + /* "View.MemoryView":1025 * * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] # <<<<<<<<<<<<<< * dst.strides[dim] = strides[dim] - * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 + * if suboffsets == NULL: */ (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]); - /* "View.MemoryView":1032 + /* "View.MemoryView":1026 * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] # <<<<<<<<<<<<<< - * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 - * + * if suboffsets == NULL: + * dst.suboffsets[dim] = -1 */ (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]); - /* "View.MemoryView":1033 + /* "View.MemoryView":1027 * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] - * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 # <<<<<<<<<<<<<< + * if suboffsets == NULL: # <<<<<<<<<<<<<< + * dst.suboffsets[dim] = -1 + * else: + */ + __pyx_t_4 = ((__pyx_v_suboffsets == NULL) != 0); + if (__pyx_t_4) { + + /* "View.MemoryView":1028 + * dst.strides[dim] = strides[dim] + * if suboffsets == NULL: + * dst.suboffsets[dim] = -1 # <<<<<<<<<<<<<< + * else: + * dst.suboffsets[dim] = suboffsets[dim] + */ + (__pyx_v_dst->suboffsets[__pyx_v_dim]) = -1; + goto __pyx_L5; + } + /*else*/ { + + /* "View.MemoryView":1030 + * dst.suboffsets[dim] = -1 + * else: + * dst.suboffsets[dim] = suboffsets[dim] # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_copy_object') */ - if ((__pyx_v_suboffsets != 0)) { - __pyx_t_4 = (__pyx_v_suboffsets[__pyx_v_dim]); - } else { - __pyx_t_4 = -1L; + (__pyx_v_dst->suboffsets[__pyx_v_dim]) = (__pyx_v_suboffsets[__pyx_v_dim]); } - (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_4; + __pyx_L5:; } - /* "View.MemoryView":1019 + /* "View.MemoryView":1013 * * @cname('__pyx_memoryview_slice_copy') * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< @@ -25781,7 +24431,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":1036 +/* "View.MemoryView":1033 * * @cname('__pyx_memoryview_copy_object') * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< @@ -25799,7 +24449,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy", 0); - /* "View.MemoryView":1039 + /* "View.MemoryView":1036 * "Create a new memoryview object" * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -25808,7 +24458,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx */ __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice)); - /* "View.MemoryView":1040 + /* "View.MemoryView":1037 * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) * return memoryview_copy_from_slice(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -25816,13 +24466,13 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx * @cname('__pyx_memoryview_copy_object_from_slice') */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":1036 + /* "View.MemoryView":1033 * * @cname('__pyx_memoryview_copy_object') * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< @@ -25841,7 +24491,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx return __pyx_r; } -/* "View.MemoryView":1043 +/* "View.MemoryView":1040 * * @cname('__pyx_memoryview_copy_object_from_slice') * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< @@ -25864,18 +24514,18 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0); - /* "View.MemoryView":1050 + /* "View.MemoryView":1047 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), ((PyObject *)__pyx_memoryviewslice_type)); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "View.MemoryView":1051 + /* "View.MemoryView":1048 * * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func # <<<<<<<<<<<<<< @@ -25885,7 +24535,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func; __pyx_v_to_object_func = __pyx_t_3; - /* "View.MemoryView":1052 + /* "View.MemoryView":1049 * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func # <<<<<<<<<<<<<< @@ -25894,28 +24544,20 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview */ __pyx_t_4 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func; __pyx_v_to_dtype_func = __pyx_t_4; - - /* "View.MemoryView":1050 - * cdef int (*to_dtype_func)(char *, object) except 0 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * to_object_func = (<_memoryviewslice> memview).to_object_func - * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":1054 + /* "View.MemoryView":1051 * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func * else: * to_object_func = NULL # <<<<<<<<<<<<<< * to_dtype_func = NULL * */ - /*else*/ { __pyx_v_to_object_func = NULL; - /* "View.MemoryView":1055 + /* "View.MemoryView":1052 * else: * to_object_func = NULL * to_dtype_func = NULL # <<<<<<<<<<<<<< @@ -25926,7 +24568,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview } __pyx_L3:; - /* "View.MemoryView":1057 + /* "View.MemoryView":1054 * to_dtype_func = NULL * * return memoryview_fromslice(memviewslice[0], memview.view.ndim, # <<<<<<<<<<<<<< @@ -25935,20 +24577,20 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview */ __Pyx_XDECREF(__pyx_r); - /* "View.MemoryView":1059 + /* "View.MemoryView":1056 * return memoryview_fromslice(memviewslice[0], memview.view.ndim, * to_object_func, to_dtype_func, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "View.MemoryView":1043 + /* "View.MemoryView":1040 * * @cname('__pyx_memoryview_copy_object_from_slice') * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< @@ -25967,7 +24609,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":1065 +/* "View.MemoryView":1062 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< @@ -25979,7 +24621,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { Py_ssize_t __pyx_r; int __pyx_t_1; - /* "View.MemoryView":1066 + /* "View.MemoryView":1063 * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: # <<<<<<<<<<<<<< @@ -25989,7 +24631,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { __pyx_t_1 = ((__pyx_v_arg < 0) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1067 + /* "View.MemoryView":1064 * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: * if arg < 0: * return -arg # <<<<<<<<<<<<<< @@ -25998,29 +24640,21 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { */ __pyx_r = (-__pyx_v_arg); goto __pyx_L0; - - /* "View.MemoryView":1066 - * - * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: - * if arg < 0: # <<<<<<<<<<<<<< - * return -arg - * else: - */ } + /*else*/ { - /* "View.MemoryView":1069 + /* "View.MemoryView":1066 * return -arg * else: * return arg # <<<<<<<<<<<<<< * * @cname('__pyx_get_best_slice_order') */ - /*else*/ { __pyx_r = __pyx_v_arg; goto __pyx_L0; } - /* "View.MemoryView":1065 + /* "View.MemoryView":1062 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< @@ -26033,7 +24667,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { return __pyx_r; } -/* "View.MemoryView":1072 +/* "View.MemoryView":1069 * * @cname('__pyx_get_best_slice_order') * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< @@ -26050,7 +24684,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ int __pyx_t_2; int __pyx_t_3; - /* "View.MemoryView":1077 + /* "View.MemoryView":1074 * """ * cdef int i * cdef Py_ssize_t c_stride = 0 # <<<<<<<<<<<<<< @@ -26059,7 +24693,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = 0; - /* "View.MemoryView":1078 + /* "View.MemoryView":1075 * cdef int i * cdef Py_ssize_t c_stride = 0 * cdef Py_ssize_t f_stride = 0 # <<<<<<<<<<<<<< @@ -26068,17 +24702,17 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = 0; - /* "View.MemoryView":1080 + /* "View.MemoryView":1077 * cdef Py_ssize_t f_stride = 0 * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] */ - for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1L; __pyx_t_1-=1) { + for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1081 + /* "View.MemoryView":1078 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -26088,7 +24722,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1082 + /* "View.MemoryView":1079 * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -26097,7 +24731,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1083 + /* "View.MemoryView":1080 * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -26105,19 +24739,11 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ * for i in range(ndim): */ goto __pyx_L4_break; - - /* "View.MemoryView":1081 - * - * for i in range(ndim - 1, -1, -1): - * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< - * c_stride = mslice.strides[i] - * break - */ } } __pyx_L4_break:; - /* "View.MemoryView":1085 + /* "View.MemoryView":1082 * break * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -26128,7 +24754,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_1; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1086 + /* "View.MemoryView":1083 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -26138,7 +24764,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1087 + /* "View.MemoryView":1084 * for i in range(ndim): * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -26147,7 +24773,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1088 + /* "View.MemoryView":1085 * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -26155,19 +24781,11 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): */ goto __pyx_L7_break; - - /* "View.MemoryView":1086 - * - * for i in range(ndim): - * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< - * f_stride = mslice.strides[i] - * break - */ } } __pyx_L7_break:; - /* "View.MemoryView":1090 + /* "View.MemoryView":1087 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< @@ -26177,7 +24795,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = ((abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1091 + /* "View.MemoryView":1088 * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): * return 'C' # <<<<<<<<<<<<<< @@ -26186,29 +24804,21 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_r = 'C'; goto __pyx_L0; - - /* "View.MemoryView":1090 - * break - * - * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< - * return 'C' - * else: - */ } + /*else*/ { - /* "View.MemoryView":1093 + /* "View.MemoryView":1090 * return 'C' * else: * return 'F' # <<<<<<<<<<<<<< * * @cython.cdivision(True) */ - /*else*/ { __pyx_r = 'F'; goto __pyx_L0; } - /* "View.MemoryView":1072 + /* "View.MemoryView":1069 * * @cname('__pyx_get_best_slice_order') * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< @@ -26221,7 +24831,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ return __pyx_r; } -/* "View.MemoryView":1096 +/* "View.MemoryView":1093 * * @cython.cdivision(True) * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< @@ -26241,7 +24851,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v Py_ssize_t __pyx_t_4; Py_ssize_t __pyx_t_5; - /* "View.MemoryView":1103 + /* "View.MemoryView":1100 * * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] # <<<<<<<<<<<<<< @@ -26250,7 +24860,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_extent = (__pyx_v_src_shape[0]); - /* "View.MemoryView":1104 + /* "View.MemoryView":1101 * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] # <<<<<<<<<<<<<< @@ -26259,7 +24869,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_extent = (__pyx_v_dst_shape[0]); - /* "View.MemoryView":1105 + /* "View.MemoryView":1102 * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] # <<<<<<<<<<<<<< @@ -26268,7 +24878,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_stride = (__pyx_v_src_strides[0]); - /* "View.MemoryView":1106 + /* "View.MemoryView":1103 * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] * cdef Py_ssize_t dst_stride = dst_strides[0] # <<<<<<<<<<<<<< @@ -26277,7 +24887,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_stride = (__pyx_v_dst_strides[0]); - /* "View.MemoryView":1108 + /* "View.MemoryView":1105 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -26287,7 +24897,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1109 + /* "View.MemoryView":1106 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< @@ -26307,7 +24917,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v goto __pyx_L5_bool_binop_done; } - /* "View.MemoryView":1110 + /* "View.MemoryView":1107 * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< @@ -26321,17 +24931,9 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v __pyx_t_3 = (__pyx_t_2 != 0); __pyx_t_1 = __pyx_t_3; __pyx_L5_bool_binop_done:; - - /* "View.MemoryView":1109 - * - * if ndim == 1: - * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): - * memcpy(dst_data, src_data, itemsize * dst_extent) - */ if (__pyx_t_1) { - /* "View.MemoryView":1111 + /* "View.MemoryView":1108 * if (src_stride > 0 and dst_stride > 0 and * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) # <<<<<<<<<<<<<< @@ -26339,30 +24941,22 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v * for i in range(dst_extent): */ memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent)); - - /* "View.MemoryView":1109 - * - * if ndim == 1: - * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): - * memcpy(dst_data, src_data, itemsize * dst_extent) - */ goto __pyx_L4; } + /*else*/ { - /* "View.MemoryView":1113 + /* "View.MemoryView":1110 * memcpy(dst_data, src_data, itemsize * dst_extent) * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< * memcpy(dst_data, src_data, itemsize) * src_data += src_stride */ - /*else*/ { __pyx_t_4 = __pyx_v_dst_extent; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1114 + /* "View.MemoryView":1111 * else: * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) # <<<<<<<<<<<<<< @@ -26371,7 +24965,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize); - /* "View.MemoryView":1115 + /* "View.MemoryView":1112 * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -26380,7 +24974,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1116 + /* "View.MemoryView":1113 * memcpy(dst_data, src_data, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -26391,30 +24985,22 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } } __pyx_L4:; - - /* "View.MemoryView":1108 - * cdef Py_ssize_t dst_stride = dst_strides[0] - * - * if ndim == 1: # <<<<<<<<<<<<<< - * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":1118 + /* "View.MemoryView":1115 * dst_data += dst_stride * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< * _copy_strided_to_strided(src_data, src_strides + 1, * dst_data, dst_strides + 1, */ - /*else*/ { __pyx_t_4 = __pyx_v_dst_extent; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1119 + /* "View.MemoryView":1116 * else: * for i in range(dst_extent): * _copy_strided_to_strided(src_data, src_strides + 1, # <<<<<<<<<<<<<< @@ -26423,7 +25009,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize); - /* "View.MemoryView":1123 + /* "View.MemoryView":1120 * src_shape + 1, dst_shape + 1, * ndim - 1, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -26432,7 +25018,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1124 + /* "View.MemoryView":1121 * ndim - 1, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -26444,7 +25030,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } __pyx_L3:; - /* "View.MemoryView":1096 + /* "View.MemoryView":1093 * * @cython.cdivision(True) * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< @@ -26455,7 +25041,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v /* function exit code */ } -/* "View.MemoryView":1126 +/* "View.MemoryView":1123 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -26465,7 +25051,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) { - /* "View.MemoryView":1129 + /* "View.MemoryView":1126 * __Pyx_memviewslice *dst, * int ndim, size_t itemsize) nogil: * _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides, # <<<<<<<<<<<<<< @@ -26474,7 +25060,7 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi */ _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1126 + /* "View.MemoryView":1123 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -26485,7 +25071,7 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi /* function exit code */ } -/* "View.MemoryView":1133 +/* "View.MemoryView":1130 * * @cname('__pyx_memoryview_slice_get_size') * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< @@ -26501,7 +25087,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr int __pyx_t_2; int __pyx_t_3; - /* "View.MemoryView":1136 + /* "View.MemoryView":1133 * "Return the size of the memory occupied by the slice in number of bytes" * cdef int i * cdef Py_ssize_t size = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -26511,7 +25097,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_size = __pyx_t_1; - /* "View.MemoryView":1138 + /* "View.MemoryView":1135 * cdef Py_ssize_t size = src.memview.view.itemsize * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -26522,7 +25108,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1139 + /* "View.MemoryView":1136 * * for i in range(ndim): * size *= src.shape[i] # <<<<<<<<<<<<<< @@ -26532,7 +25118,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_v_size = (__pyx_v_size * (__pyx_v_src->shape[__pyx_v_i])); } - /* "View.MemoryView":1141 + /* "View.MemoryView":1138 * size *= src.shape[i] * * return size # <<<<<<<<<<<<<< @@ -26542,7 +25128,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_r = __pyx_v_size; goto __pyx_L0; - /* "View.MemoryView":1133 + /* "View.MemoryView":1130 * * @cname('__pyx_memoryview_slice_get_size') * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< @@ -26555,7 +25141,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr return __pyx_r; } -/* "View.MemoryView":1144 +/* "View.MemoryView":1141 * * @cname('__pyx_fill_contig_strides_array') * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< @@ -26570,7 +25156,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ int __pyx_t_2; int __pyx_t_3; - /* "View.MemoryView":1153 + /* "View.MemoryView":1150 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< @@ -26580,7 +25166,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_t_1 = ((__pyx_v_order == 'F') != 0); if (__pyx_t_1) { - /* "View.MemoryView":1154 + /* "View.MemoryView":1151 * * if order == 'F': * for idx in range(ndim): # <<<<<<<<<<<<<< @@ -26591,7 +25177,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_idx = __pyx_t_3; - /* "View.MemoryView":1155 + /* "View.MemoryView":1152 * if order == 'F': * for idx in range(ndim): * strides[idx] = stride # <<<<<<<<<<<<<< @@ -26600,38 +25186,30 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1156 + /* "View.MemoryView":1153 * for idx in range(ndim): * strides[idx] = stride * stride = stride * shape[idx] # <<<<<<<<<<<<<< * else: - * for idx in range(ndim - 1, -1, -1): - */ - __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); - } - - /* "View.MemoryView":1153 - * cdef int idx - * - * if order == 'F': # <<<<<<<<<<<<<< - * for idx in range(ndim): - * strides[idx] = stride + * for idx in range(ndim - 1, -1, -1): */ + __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); + } goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":1158 + /* "View.MemoryView":1155 * stride = stride * shape[idx] * else: * for idx in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< * strides[idx] = stride * stride = stride * shape[idx] */ - /*else*/ { - for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1L; __pyx_t_2-=1) { + for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) { __pyx_v_idx = __pyx_t_2; - /* "View.MemoryView":1159 + /* "View.MemoryView":1156 * else: * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride # <<<<<<<<<<<<<< @@ -26640,7 +25218,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1160 + /* "View.MemoryView":1157 * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride * stride = stride * shape[idx] # <<<<<<<<<<<<<< @@ -26652,7 +25230,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ } __pyx_L3:; - /* "View.MemoryView":1162 + /* "View.MemoryView":1159 * stride = stride * shape[idx] * * return stride # <<<<<<<<<<<<<< @@ -26662,7 +25240,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_r = __pyx_v_stride; goto __pyx_L0; - /* "View.MemoryView":1144 + /* "View.MemoryView":1141 * * @cname('__pyx_fill_contig_strides_array') * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< @@ -26675,7 +25253,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ return __pyx_r; } -/* "View.MemoryView":1165 +/* "View.MemoryView":1162 * * @cname('__pyx_memoryview_copy_data_to_temp') * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -26698,7 +25276,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "View.MemoryView":1176 + /* "View.MemoryView":1173 * cdef void *result * * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -26708,7 +25286,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1177 + /* "View.MemoryView":1174 * * cdef size_t itemsize = src.memview.view.itemsize * cdef size_t size = slice_get_size(src, ndim) # <<<<<<<<<<<<<< @@ -26717,7 +25295,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim); - /* "View.MemoryView":1179 + /* "View.MemoryView":1176 * cdef size_t size = slice_get_size(src, ndim) * * result = malloc(size) # <<<<<<<<<<<<<< @@ -26726,7 +25304,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_result = malloc(__pyx_v_size); - /* "View.MemoryView":1180 + /* "View.MemoryView":1177 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< @@ -26736,25 +25314,19 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = ((!(__pyx_v_result != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1181 + /* "View.MemoryView":1178 * result = malloc(size) * if not result: * _err(MemoryError, NULL) # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":1180 - * - * result = malloc(size) - * if not result: # <<<<<<<<<<<<<< - * _err(MemoryError, NULL) - * - */ + __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L3; } + __pyx_L3:; - /* "View.MemoryView":1184 + /* "View.MemoryView":1181 * * * tmpslice.data = result # <<<<<<<<<<<<<< @@ -26763,7 +25335,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_tmpslice->data = ((char *)__pyx_v_result); - /* "View.MemoryView":1185 + /* "View.MemoryView":1182 * * tmpslice.data = result * tmpslice.memview = src.memview # <<<<<<<<<<<<<< @@ -26773,7 +25345,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_4 = __pyx_v_src->memview; __pyx_v_tmpslice->memview = __pyx_t_4; - /* "View.MemoryView":1186 + /* "View.MemoryView":1183 * tmpslice.data = result * tmpslice.memview = src.memview * for i in range(ndim): # <<<<<<<<<<<<<< @@ -26784,7 +25356,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1187 + /* "View.MemoryView":1184 * tmpslice.memview = src.memview * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] # <<<<<<<<<<<<<< @@ -26793,17 +25365,17 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]); - /* "View.MemoryView":1188 + /* "View.MemoryView":1185 * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] * tmpslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< * * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, */ - (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L; + (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1; } - /* "View.MemoryView":1190 + /* "View.MemoryView":1187 * tmpslice.suboffsets[i] = -1 * * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, # <<<<<<<<<<<<<< @@ -26812,7 +25384,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order); - /* "View.MemoryView":1194 + /* "View.MemoryView":1191 * * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -26823,7 +25395,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1195 + /* "View.MemoryView":1192 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< @@ -26833,7 +25405,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = (((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1196 + /* "View.MemoryView":1193 * for i in range(ndim): * if tmpslice.shape[i] == 1: * tmpslice.strides[i] = 0 # <<<<<<<<<<<<<< @@ -26841,18 +25413,12 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, * if slice_is_contig(src, order, ndim): */ (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0; - - /* "View.MemoryView":1195 - * - * for i in range(ndim): - * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< - * tmpslice.strides[i] = 0 - * - */ + goto __pyx_L8; } + __pyx_L8:; } - /* "View.MemoryView":1198 + /* "View.MemoryView":1195 * tmpslice.strides[i] = 0 * * if slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< @@ -26862,7 +25428,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1199 + /* "View.MemoryView":1196 * * if slice_is_contig(src, order, ndim): * memcpy(result, src.data, size) # <<<<<<<<<<<<<< @@ -26870,30 +25436,22 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, * copy_strided_to_strided(src, tmpslice, ndim, itemsize) */ memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size); - - /* "View.MemoryView":1198 - * tmpslice.strides[i] = 0 - * - * if slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< - * memcpy(result, src.data, size) - * else: - */ goto __pyx_L9; } + /*else*/ { - /* "View.MemoryView":1201 + /* "View.MemoryView":1198 * memcpy(result, src.data, size) * else: * copy_strided_to_strided(src, tmpslice, ndim, itemsize) # <<<<<<<<<<<<<< * * return result */ - /*else*/ { copy_strided_to_strided(__pyx_v_src, __pyx_v_tmpslice, __pyx_v_ndim, __pyx_v_itemsize); } __pyx_L9:; - /* "View.MemoryView":1203 + /* "View.MemoryView":1200 * copy_strided_to_strided(src, tmpslice, ndim, itemsize) * * return result # <<<<<<<<<<<<<< @@ -26903,7 +25461,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "View.MemoryView":1165 + /* "View.MemoryView":1162 * * @cname('__pyx_memoryview_copy_data_to_temp') * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -26927,7 +25485,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, return __pyx_r; } -/* "View.MemoryView":1208 +/* "View.MemoryView":1205 * * @cname('__pyx_memoryview_err_extents') * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< @@ -26950,54 +25508,54 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent #endif __Pyx_RefNannySetupContext("_err_extents", 0); - /* "View.MemoryView":1211 + /* "View.MemoryView":1208 * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % * (i, extent1, extent2)) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err_dim') */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; - /* "View.MemoryView":1210 + /* "View.MemoryView":1207 * cdef int _err_extents(int i, Py_ssize_t extent1, * Py_ssize_t extent2) except -1 with gil: * raise ValueError("got differing extents in dimension %d (got %d and %d)" % # <<<<<<<<<<<<<< * (i, extent1, extent2)) * */ - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":1208 + /* "View.MemoryView":1205 * * @cname('__pyx_memoryview_err_extents') * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< @@ -27020,7 +25578,7 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent return __pyx_r; } -/* "View.MemoryView":1214 +/* "View.MemoryView":1211 * * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< @@ -27045,18 +25603,18 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, __Pyx_RefNannySetupContext("_err_dim", 0); __Pyx_INCREF(__pyx_v_error); - /* "View.MemoryView":1215 + /* "View.MemoryView":1212 * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: * raise error(msg.decode('ascii') % dim) # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err') */ - __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -27072,26 +25630,26 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, } } if (!__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL; PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":1214 + /* "View.MemoryView":1211 * * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< @@ -27116,7 +25674,7 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, return __pyx_r; } -/* "View.MemoryView":1218 +/* "View.MemoryView":1215 * * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< @@ -27142,7 +25700,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { __Pyx_RefNannySetupContext("_err", 0); __Pyx_INCREF(__pyx_v_error); - /* "View.MemoryView":1219 + /* "View.MemoryView":1216 * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: # <<<<<<<<<<<<<< @@ -27152,14 +25710,14 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { __pyx_t_1 = ((__pyx_v_msg != NULL) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1220 + /* "View.MemoryView":1217 * cdef int _err(object error, char *msg) except -1 with gil: * if msg != NULL: * raise error(msg.decode('ascii')) # <<<<<<<<<<<<<< * else: * raise error */ - __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_error); __pyx_t_4 = __pyx_v_error; __pyx_t_5 = NULL; @@ -27173,47 +25731,39 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { } } if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL; PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":1219 - * @cname('__pyx_memoryview_err') - * cdef int _err(object error, char *msg) except -1 with gil: - * if msg != NULL: # <<<<<<<<<<<<<< - * raise error(msg.decode('ascii')) - * else: - */ + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } + /*else*/ { - /* "View.MemoryView":1222 + /* "View.MemoryView":1219 * raise error(msg.decode('ascii')) * else: * raise error # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_copy_contents') */ - /*else*/ { __Pyx_Raise(__pyx_v_error, 0, 0, 0); - {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } - /* "View.MemoryView":1218 + /* "View.MemoryView":1215 * * @cname('__pyx_memoryview_err') * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< @@ -27238,7 +25788,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { return __pyx_r; } -/* "View.MemoryView":1225 +/* "View.MemoryView":1222 * * @cname('__pyx_memoryview_copy_contents') * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< @@ -27267,7 +25817,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "View.MemoryView":1233 + /* "View.MemoryView":1230 * Check for overlapping memory and verify the shapes. * """ * cdef void *tmpdata = NULL # <<<<<<<<<<<<<< @@ -27276,7 +25826,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_tmpdata = NULL; - /* "View.MemoryView":1234 + /* "View.MemoryView":1231 * """ * cdef void *tmpdata = NULL * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -27286,7 +25836,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_1 = __pyx_v_src.memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1236 + /* "View.MemoryView":1233 * cdef size_t itemsize = src.memview.view.itemsize * cdef int i * cdef char order = get_best_order(&src, src_ndim) # <<<<<<<<<<<<<< @@ -27295,7 +25845,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim); - /* "View.MemoryView":1237 + /* "View.MemoryView":1234 * cdef int i * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False # <<<<<<<<<<<<<< @@ -27304,7 +25854,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 0; - /* "View.MemoryView":1238 + /* "View.MemoryView":1235 * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False * cdef bint direct_copy = False # <<<<<<<<<<<<<< @@ -27313,7 +25863,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = 0; - /* "View.MemoryView":1241 + /* "View.MemoryView":1238 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< @@ -27323,7 +25873,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src_ndim < __pyx_v_dst_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1242 + /* "View.MemoryView":1239 * * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -27331,18 +25881,10 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * broadcast_leading(&dst, dst_ndim, src_ndim) */ __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim); - - /* "View.MemoryView":1241 - * cdef __Pyx_memviewslice tmp - * - * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< - * broadcast_leading(&src, src_ndim, dst_ndim) - * elif dst_ndim < src_ndim: - */ goto __pyx_L3; } - /* "View.MemoryView":1243 + /* "View.MemoryView":1240 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< @@ -27352,7 +25894,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_dst_ndim < __pyx_v_src_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1244 + /* "View.MemoryView":1241 * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: * broadcast_leading(&dst, dst_ndim, src_ndim) # <<<<<<<<<<<<<< @@ -27360,18 +25902,11 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * cdef int ndim = max(src_ndim, dst_ndim) */ __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim); - - /* "View.MemoryView":1243 - * if src_ndim < dst_ndim: - * broadcast_leading(&src, src_ndim, dst_ndim) - * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< - * broadcast_leading(&dst, dst_ndim, src_ndim) - * - */ + goto __pyx_L3; } __pyx_L3:; - /* "View.MemoryView":1246 + /* "View.MemoryView":1243 * broadcast_leading(&dst, dst_ndim, src_ndim) * * cdef int ndim = max(src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -27387,7 +25922,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_v_ndim = __pyx_t_5; - /* "View.MemoryView":1248 + /* "View.MemoryView":1245 * cdef int ndim = max(src_ndim, dst_ndim) * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -27398,7 +25933,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_5; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1249 + /* "View.MemoryView":1246 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< @@ -27408,7 +25943,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1250 + /* "View.MemoryView":1247 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< @@ -27418,7 +25953,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) == 1) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1251 + /* "View.MemoryView":1248 * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: * broadcasting = True # <<<<<<<<<<<<<< @@ -27427,7 +25962,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 1; - /* "View.MemoryView":1252 + /* "View.MemoryView":1249 * if src.shape[i] == 1: * broadcasting = True * src.strides[i] = 0 # <<<<<<<<<<<<<< @@ -27435,39 +25970,25 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * _err_extents(i, dst.shape[i], src.shape[i]) */ (__pyx_v_src.strides[__pyx_v_i]) = 0; - - /* "View.MemoryView":1250 - * for i in range(ndim): - * if src.shape[i] != dst.shape[i]: - * if src.shape[i] == 1: # <<<<<<<<<<<<<< - * broadcasting = True - * src.strides[i] = 0 - */ goto __pyx_L7; } + /*else*/ { - /* "View.MemoryView":1254 + /* "View.MemoryView":1251 * src.strides[i] = 0 * else: * _err_extents(i, dst.shape[i], src.shape[i]) # <<<<<<<<<<<<<< * * if src.suboffsets[i] >= 0: */ - /*else*/ { - __pyx_t_4 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_L7:; - - /* "View.MemoryView":1249 - * - * for i in range(ndim): - * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< - * if src.shape[i] == 1: - * broadcasting = True - */ + goto __pyx_L6; } + __pyx_L6:; - /* "View.MemoryView":1256 + /* "View.MemoryView":1253 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< @@ -27477,26 +25998,20 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1257 + /* "View.MemoryView":1254 * * if src.suboffsets[i] >= 0: * _err_dim(ValueError, "Dimension %d is not direct", i) # <<<<<<<<<<<<<< * * if slices_overlap(&src, &dst, ndim, itemsize): */ - __pyx_t_4 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, __pyx_k_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":1256 - * _err_extents(i, dst.shape[i], src.shape[i]) - * - * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< - * _err_dim(ValueError, "Dimension %d is not direct", i) - * - */ + __pyx_t_4 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, __pyx_k_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L8; } + __pyx_L8:; } - /* "View.MemoryView":1259 + /* "View.MemoryView":1256 * _err_dim(ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< @@ -27506,7 +26021,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1261 + /* "View.MemoryView":1258 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(&src, order, ndim): # <<<<<<<<<<<<<< @@ -27516,7 +26031,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((!(__pyx_memviewslice_is_contig((&__pyx_v_src), __pyx_v_order, __pyx_v_ndim) != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1262 + /* "View.MemoryView":1259 * * if not slice_is_contig(&src, order, ndim): * order = get_best_order(&dst, ndim) # <<<<<<<<<<<<<< @@ -27524,27 +26039,21 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim); - - /* "View.MemoryView":1261 - * if slices_overlap(&src, &dst, ndim, itemsize): - * - * if not slice_is_contig(&src, order, ndim): # <<<<<<<<<<<<<< - * order = get_best_order(&dst, ndim) - * - */ + goto __pyx_L10; } + __pyx_L10:; - /* "View.MemoryView":1264 + /* "View.MemoryView":1261 * order = get_best_order(&dst, ndim) * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) # <<<<<<<<<<<<<< * src = tmp * */ - __pyx_t_6 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_tmpdata = __pyx_t_6; - /* "View.MemoryView":1265 + /* "View.MemoryView":1262 * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) * src = tmp # <<<<<<<<<<<<<< @@ -27552,17 +26061,11 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * if not broadcasting: */ __pyx_v_src = __pyx_v_tmp; - - /* "View.MemoryView":1259 - * _err_dim(ValueError, "Dimension %d is not direct", i) - * - * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< - * - * if not slice_is_contig(&src, order, ndim): - */ + goto __pyx_L9; } + __pyx_L9:; - /* "View.MemoryView":1267 + /* "View.MemoryView":1264 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< @@ -27572,7 +26075,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((!(__pyx_v_broadcasting != 0)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1270 + /* "View.MemoryView":1267 * * * if slice_is_contig(&src, 'C', ndim): # <<<<<<<<<<<<<< @@ -27582,7 +26085,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_memviewslice_is_contig((&__pyx_v_src), 'C', __pyx_v_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1271 + /* "View.MemoryView":1268 * * if slice_is_contig(&src, 'C', ndim): * direct_copy = slice_is_contig(&dst, 'C', ndim) # <<<<<<<<<<<<<< @@ -27590,18 +26093,10 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * direct_copy = slice_is_contig(&dst, 'F', ndim) */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig((&__pyx_v_dst), 'C', __pyx_v_ndim); - - /* "View.MemoryView":1270 - * - * - * if slice_is_contig(&src, 'C', ndim): # <<<<<<<<<<<<<< - * direct_copy = slice_is_contig(&dst, 'C', ndim) - * elif slice_is_contig(&src, 'F', ndim): - */ goto __pyx_L12; } - /* "View.MemoryView":1272 + /* "View.MemoryView":1269 * if slice_is_contig(&src, 'C', ndim): * direct_copy = slice_is_contig(&dst, 'C', ndim) * elif slice_is_contig(&src, 'F', ndim): # <<<<<<<<<<<<<< @@ -27611,7 +26106,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_memviewslice_is_contig((&__pyx_v_src), 'F', __pyx_v_ndim) != 0); if (__pyx_t_2) { - /* "View.MemoryView":1273 + /* "View.MemoryView":1270 * direct_copy = slice_is_contig(&dst, 'C', ndim) * elif slice_is_contig(&src, 'F', ndim): * direct_copy = slice_is_contig(&dst, 'F', ndim) # <<<<<<<<<<<<<< @@ -27619,18 +26114,11 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * if direct_copy: */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig((&__pyx_v_dst), 'F', __pyx_v_ndim); - - /* "View.MemoryView":1272 - * if slice_is_contig(&src, 'C', ndim): - * direct_copy = slice_is_contig(&dst, 'C', ndim) - * elif slice_is_contig(&src, 'F', ndim): # <<<<<<<<<<<<<< - * direct_copy = slice_is_contig(&dst, 'F', ndim) - * - */ + goto __pyx_L12; } __pyx_L12:; - /* "View.MemoryView":1275 + /* "View.MemoryView":1272 * direct_copy = slice_is_contig(&dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< @@ -27640,7 +26128,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_v_direct_copy != 0); if (__pyx_t_2) { - /* "View.MemoryView":1277 + /* "View.MemoryView":1274 * if direct_copy: * * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< @@ -27649,7 +26137,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1278 + /* "View.MemoryView":1275 * * refcount_copying(&dst, dtype_is_object, ndim, False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) # <<<<<<<<<<<<<< @@ -27658,7 +26146,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim)); - /* "View.MemoryView":1279 + /* "View.MemoryView":1276 * refcount_copying(&dst, dtype_is_object, ndim, False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< @@ -27667,7 +26155,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1280 + /* "View.MemoryView":1277 * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, True) * free(tmpdata) # <<<<<<<<<<<<<< @@ -27676,7 +26164,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1281 + /* "View.MemoryView":1278 * refcount_copying(&dst, dtype_is_object, ndim, True) * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -27685,26 +26173,12 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_r = 0; goto __pyx_L0; - - /* "View.MemoryView":1275 - * direct_copy = slice_is_contig(&dst, 'F', ndim) - * - * if direct_copy: # <<<<<<<<<<<<<< - * - * refcount_copying(&dst, dtype_is_object, ndim, False) - */ } - - /* "View.MemoryView":1267 - * src = tmp - * - * if not broadcasting: # <<<<<<<<<<<<<< - * - * - */ + goto __pyx_L11; } + __pyx_L11:; - /* "View.MemoryView":1283 + /* "View.MemoryView":1280 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< @@ -27718,34 +26192,28 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_7 = (__pyx_t_2 != 0); if (__pyx_t_7) { - /* "View.MemoryView":1286 + /* "View.MemoryView":1283 * * * transpose_memslice(&src) # <<<<<<<<<<<<<< * transpose_memslice(&dst) * */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":1287 + /* "View.MemoryView":1284 * * transpose_memslice(&src) * transpose_memslice(&dst) # <<<<<<<<<<<<<< * * refcount_copying(&dst, dtype_is_object, ndim, False) */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - - /* "View.MemoryView":1283 - * return 0 - * - * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< - * - * - */ + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + goto __pyx_L14; } + __pyx_L14:; - /* "View.MemoryView":1289 + /* "View.MemoryView":1286 * transpose_memslice(&dst) * * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< @@ -27754,7 +26222,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1290 + /* "View.MemoryView":1287 * * refcount_copying(&dst, dtype_is_object, ndim, False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) # <<<<<<<<<<<<<< @@ -27763,7 +26231,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1291 + /* "View.MemoryView":1288 * refcount_copying(&dst, dtype_is_object, ndim, False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< @@ -27772,7 +26240,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1293 + /* "View.MemoryView":1290 * refcount_copying(&dst, dtype_is_object, ndim, True) * * free(tmpdata) # <<<<<<<<<<<<<< @@ -27781,7 +26249,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1294 + /* "View.MemoryView":1291 * * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -27791,7 +26259,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":1225 + /* "View.MemoryView":1222 * * @cname('__pyx_memoryview_copy_contents') * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< @@ -27815,21 +26283,21 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ return __pyx_r; } -/* "View.MemoryView":1297 +/* "View.MemoryView":1294 * * @cname('__pyx_memoryview_broadcast_leading') - * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< + * cdef void broadcast_leading(__Pyx_memviewslice *slice, # <<<<<<<<<<<<<< * int ndim, * int ndim_other) nogil: */ -static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim, int __pyx_v_ndim_other) { +static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_slice, int __pyx_v_ndim, int __pyx_v_ndim_other) { int __pyx_v_i; int __pyx_v_offset; int __pyx_t_1; int __pyx_t_2; - /* "View.MemoryView":1301 + /* "View.MemoryView":1298 * int ndim_other) nogil: * cdef int i * cdef int offset = ndim_other - ndim # <<<<<<<<<<<<<< @@ -27838,87 +26306,87 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim); - /* "View.MemoryView":1303 + /* "View.MemoryView":1300 * cdef int offset = ndim_other - ndim * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< - * mslice.shape[i + offset] = mslice.shape[i] - * mslice.strides[i + offset] = mslice.strides[i] + * slice.shape[i + offset] = slice.shape[i] + * slice.strides[i + offset] = slice.strides[i] */ - for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1L; __pyx_t_1-=1) { + for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1304 + /* "View.MemoryView":1301 * * for i in range(ndim - 1, -1, -1): - * mslice.shape[i + offset] = mslice.shape[i] # <<<<<<<<<<<<<< - * mslice.strides[i + offset] = mslice.strides[i] - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] + * slice.shape[i + offset] = slice.shape[i] # <<<<<<<<<<<<<< + * slice.strides[i + offset] = slice.strides[i] + * slice.suboffsets[i + offset] = slice.suboffsets[i] */ - (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]); + (__pyx_v_slice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_slice->shape[__pyx_v_i]); - /* "View.MemoryView":1305 + /* "View.MemoryView":1302 * for i in range(ndim - 1, -1, -1): - * mslice.shape[i + offset] = mslice.shape[i] - * mslice.strides[i + offset] = mslice.strides[i] # <<<<<<<<<<<<<< - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] + * slice.shape[i + offset] = slice.shape[i] + * slice.strides[i + offset] = slice.strides[i] # <<<<<<<<<<<<<< + * slice.suboffsets[i + offset] = slice.suboffsets[i] * */ - (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]); + (__pyx_v_slice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_slice->strides[__pyx_v_i]); - /* "View.MemoryView":1306 - * mslice.shape[i + offset] = mslice.shape[i] - * mslice.strides[i + offset] = mslice.strides[i] - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] # <<<<<<<<<<<<<< + /* "View.MemoryView":1303 + * slice.shape[i + offset] = slice.shape[i] + * slice.strides[i + offset] = slice.strides[i] + * slice.suboffsets[i + offset] = slice.suboffsets[i] # <<<<<<<<<<<<<< * * for i in range(offset): */ - (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]); + (__pyx_v_slice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_slice->suboffsets[__pyx_v_i]); } - /* "View.MemoryView":1308 - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] + /* "View.MemoryView":1305 + * slice.suboffsets[i + offset] = slice.suboffsets[i] * * for i in range(offset): # <<<<<<<<<<<<<< - * mslice.shape[i] = 1 - * mslice.strides[i] = mslice.strides[0] + * slice.shape[i] = 1 + * slice.strides[i] = slice.strides[0] */ __pyx_t_1 = __pyx_v_offset; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; - /* "View.MemoryView":1309 + /* "View.MemoryView":1306 * * for i in range(offset): - * mslice.shape[i] = 1 # <<<<<<<<<<<<<< - * mslice.strides[i] = mslice.strides[0] - * mslice.suboffsets[i] = -1 + * slice.shape[i] = 1 # <<<<<<<<<<<<<< + * slice.strides[i] = slice.strides[0] + * slice.suboffsets[i] = -1 */ - (__pyx_v_mslice->shape[__pyx_v_i]) = 1; + (__pyx_v_slice->shape[__pyx_v_i]) = 1; - /* "View.MemoryView":1310 + /* "View.MemoryView":1307 * for i in range(offset): - * mslice.shape[i] = 1 - * mslice.strides[i] = mslice.strides[0] # <<<<<<<<<<<<<< - * mslice.suboffsets[i] = -1 + * slice.shape[i] = 1 + * slice.strides[i] = slice.strides[0] # <<<<<<<<<<<<<< + * slice.suboffsets[i] = -1 * */ - (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]); + (__pyx_v_slice->strides[__pyx_v_i]) = (__pyx_v_slice->strides[0]); - /* "View.MemoryView":1311 - * mslice.shape[i] = 1 - * mslice.strides[i] = mslice.strides[0] - * mslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< + /* "View.MemoryView":1308 + * slice.shape[i] = 1 + * slice.strides[i] = slice.strides[0] + * slice.suboffsets[i] = -1 # <<<<<<<<<<<<<< * * */ - (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L; + (__pyx_v_slice->suboffsets[__pyx_v_i]) = -1; } - /* "View.MemoryView":1297 + /* "View.MemoryView":1294 * * @cname('__pyx_memoryview_broadcast_leading') - * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< + * cdef void broadcast_leading(__Pyx_memviewslice *slice, # <<<<<<<<<<<<<< * int ndim, * int ndim_other) nogil: */ @@ -27926,7 +26394,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic /* function exit code */ } -/* "View.MemoryView":1319 +/* "View.MemoryView":1316 * * @cname('__pyx_memoryview_refcount_copying') * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< @@ -27937,7 +26405,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) { int __pyx_t_1; - /* "View.MemoryView":1323 + /* "View.MemoryView":1320 * * * if dtype_is_object: # <<<<<<<<<<<<<< @@ -27947,7 +26415,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i __pyx_t_1 = (__pyx_v_dtype_is_object != 0); if (__pyx_t_1) { - /* "View.MemoryView":1324 + /* "View.MemoryView":1321 * * if dtype_is_object: * refcount_objects_in_slice_with_gil(dst.data, dst.shape, # <<<<<<<<<<<<<< @@ -27955,17 +26423,11 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i * */ __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc); - - /* "View.MemoryView":1323 - * - * - * if dtype_is_object: # <<<<<<<<<<<<<< - * refcount_objects_in_slice_with_gil(dst.data, dst.shape, - * dst.strides, ndim, inc) - */ + goto __pyx_L3; } + __pyx_L3:; - /* "View.MemoryView":1319 + /* "View.MemoryView":1316 * * @cname('__pyx_memoryview_refcount_copying') * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< @@ -27976,7 +26438,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i /* function exit code */ } -/* "View.MemoryView":1328 +/* "View.MemoryView":1325 * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -27991,7 +26453,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da #endif __Pyx_RefNannySetupContext("refcount_objects_in_slice_with_gil", 0); - /* "View.MemoryView":1331 + /* "View.MemoryView":1328 * Py_ssize_t *strides, int ndim, * bint inc) with gil: * refcount_objects_in_slice(data, shape, strides, ndim, inc) # <<<<<<<<<<<<<< @@ -28000,7 +26462,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc); - /* "View.MemoryView":1328 + /* "View.MemoryView":1325 * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -28015,7 +26477,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da #endif } -/* "View.MemoryView":1334 +/* "View.MemoryView":1331 * * @cname('__pyx_memoryview_refcount_objects_in_slice') * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -28031,7 +26493,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss int __pyx_t_3; __Pyx_RefNannySetupContext("refcount_objects_in_slice", 0); - /* "View.MemoryView":1338 + /* "View.MemoryView":1335 * cdef Py_ssize_t i * * for i in range(shape[0]): # <<<<<<<<<<<<<< @@ -28042,7 +26504,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; - /* "View.MemoryView":1339 + /* "View.MemoryView":1336 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< @@ -28052,7 +26514,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_t_3 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_3) { - /* "View.MemoryView":1340 + /* "View.MemoryView":1337 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< @@ -28062,7 +26524,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_t_3 = (__pyx_v_inc != 0); if (__pyx_t_3) { - /* "View.MemoryView":1341 + /* "View.MemoryView":1338 * if ndim == 1: * if inc: * Py_INCREF(( data)[0]) # <<<<<<<<<<<<<< @@ -28070,60 +26532,36 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss * Py_DECREF(( data)[0]) */ Py_INCREF((((PyObject **)__pyx_v_data)[0])); - - /* "View.MemoryView":1340 - * for i in range(shape[0]): - * if ndim == 1: - * if inc: # <<<<<<<<<<<<<< - * Py_INCREF(( data)[0]) - * else: - */ goto __pyx_L6; } + /*else*/ { - /* "View.MemoryView":1343 + /* "View.MemoryView":1340 * Py_INCREF(( data)[0]) * else: * Py_DECREF(( data)[0]) # <<<<<<<<<<<<<< * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, */ - /*else*/ { Py_DECREF((((PyObject **)__pyx_v_data)[0])); } __pyx_L6:; - - /* "View.MemoryView":1339 - * - * for i in range(shape[0]): - * if ndim == 1: # <<<<<<<<<<<<<< - * if inc: - * Py_INCREF(( data)[0]) - */ goto __pyx_L5; } + /*else*/ { - /* "View.MemoryView":1345 + /* "View.MemoryView":1342 * Py_DECREF(( data)[0]) * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< * ndim - 1, inc) * - */ - /*else*/ { - - /* "View.MemoryView":1346 - * else: - * refcount_objects_in_slice(data, shape + 1, strides + 1, - * ndim - 1, inc) # <<<<<<<<<<<<<< - * - * data += strides[0] */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_inc); } __pyx_L5:; - /* "View.MemoryView":1348 + /* "View.MemoryView":1345 * ndim - 1, inc) * * data += strides[0] # <<<<<<<<<<<<<< @@ -28133,7 +26571,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_v_data = (__pyx_v_data + (__pyx_v_strides[0])); } - /* "View.MemoryView":1334 + /* "View.MemoryView":1331 * * @cname('__pyx_memoryview_refcount_objects_in_slice') * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -28145,7 +26583,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __Pyx_RefNannyFinishContext(); } -/* "View.MemoryView":1354 +/* "View.MemoryView":1351 * * @cname('__pyx_memoryview_slice_assign_scalar') * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< @@ -28155,7 +26593,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) { - /* "View.MemoryView":1357 + /* "View.MemoryView":1354 * size_t itemsize, void *item, * bint dtype_is_object) nogil: * refcount_copying(dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< @@ -28164,7 +26602,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1358 + /* "View.MemoryView":1355 * bint dtype_is_object) nogil: * refcount_copying(dst, dtype_is_object, ndim, False) * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, # <<<<<<<<<<<<<< @@ -28173,7 +26611,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1360 + /* "View.MemoryView":1357 * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, * itemsize, item) * refcount_copying(dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< @@ -28182,7 +26620,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1354 + /* "View.MemoryView":1351 * * @cname('__pyx_memoryview_slice_assign_scalar') * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< @@ -28193,7 +26631,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst /* function exit code */ } -/* "View.MemoryView":1364 +/* "View.MemoryView":1361 * * @cname('__pyx_memoryview__slice_assign_scalar') * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -28209,7 +26647,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t Py_ssize_t __pyx_t_2; Py_ssize_t __pyx_t_3; - /* "View.MemoryView":1368 + /* "View.MemoryView":1365 * size_t itemsize, void *item) nogil: * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< @@ -28218,7 +26656,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_stride = (__pyx_v_strides[0]); - /* "View.MemoryView":1369 + /* "View.MemoryView":1366 * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] * cdef Py_ssize_t extent = shape[0] # <<<<<<<<<<<<<< @@ -28227,7 +26665,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_extent = (__pyx_v_shape[0]); - /* "View.MemoryView":1371 + /* "View.MemoryView":1368 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -28237,7 +26675,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1372 + /* "View.MemoryView":1369 * * if ndim == 1: * for i in range(extent): # <<<<<<<<<<<<<< @@ -28248,7 +26686,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1373 + /* "View.MemoryView":1370 * if ndim == 1: * for i in range(extent): * memcpy(data, item, itemsize) # <<<<<<<<<<<<<< @@ -28257,7 +26695,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize); - /* "View.MemoryView":1374 + /* "View.MemoryView":1371 * for i in range(extent): * memcpy(data, item, itemsize) * data += stride # <<<<<<<<<<<<<< @@ -28266,30 +26704,22 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } - - /* "View.MemoryView":1371 - * cdef Py_ssize_t extent = shape[0] - * - * if ndim == 1: # <<<<<<<<<<<<<< - * for i in range(extent): - * memcpy(data, item, itemsize) - */ goto __pyx_L3; } + /*else*/ { - /* "View.MemoryView":1376 + /* "View.MemoryView":1373 * data += stride * else: * for i in range(extent): # <<<<<<<<<<<<<< * _slice_assign_scalar(data, shape + 1, strides + 1, * ndim - 1, itemsize, item) */ - /*else*/ { __pyx_t_2 = __pyx_v_extent; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1377 + /* "View.MemoryView":1374 * else: * for i in range(extent): * _slice_assign_scalar(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< @@ -28298,7 +26728,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1379 + /* "View.MemoryView":1376 * _slice_assign_scalar(data, shape + 1, strides + 1, * ndim - 1, itemsize, item) * data += stride # <<<<<<<<<<<<<< @@ -28310,7 +26740,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t } __pyx_L3:; - /* "View.MemoryView":1364 + /* "View.MemoryView":1361 * * @cname('__pyx_memoryview__slice_assign_scalar') * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -28383,7 +26813,7 @@ static PyObject *__pyx_getprop_5pyFAI_3ext_9watershed_8Bilinear_height(PyObject static PyMethodDef __pyx_methods_5pyFAI_3ext_9watershed_Bilinear[] = { {"f_cy", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_5f_cy, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_8Bilinear_4f_cy}, {"local_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_7local_maxi, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_8Bilinear_6local_maxi}, - {"cp_local_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_9cp_local_maxi, METH_O, 0}, + {"cp_local_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_8Bilinear_9cp_local_maxi, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_8Bilinear_8cp_local_maxi}, {0, 0, 0, 0} }; @@ -28407,9 +26837,8 @@ static PyTypeObject __pyx_type_5pyFAI_3ext_9watershed_Bilinear = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ @@ -28563,14 +26992,14 @@ static PyObject *__pyx_getprop_5pyFAI_3ext_9watershed_6Region_peaks(PyObject *o, static PyMethodDef __pyx_methods_5pyFAI_3ext_9watershed_Region[] = { {"init_values", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_7init_values, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_6Region_6init_values}, - {"get_size", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_9get_size, METH_NOARGS, 0}, - {"get_highest_pass", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_11get_highest_pass, METH_NOARGS, 0}, - {"get_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_13get_maxi, METH_NOARGS, 0}, - {"get_mini", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_15get_mini, METH_NOARGS, 0}, - {"get_pass_to", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_17get_pass_to, METH_NOARGS, 0}, - {"get_index", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_19get_index, METH_NOARGS, 0}, - {"get_borders", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_21get_borders, METH_NOARGS, 0}, - {"get_neighbors", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_23get_neighbors, METH_NOARGS, 0}, + {"get_size", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_9get_size, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_8get_size}, + {"get_highest_pass", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_11get_highest_pass, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_10get_highest_pass}, + {"get_maxi", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_13get_maxi, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_12get_maxi}, + {"get_mini", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_15get_mini, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_14get_mini}, + {"get_pass_to", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_17get_pass_to, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_16get_pass_to}, + {"get_index", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_19get_index, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_18get_index}, + {"get_borders", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_21get_borders, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_20get_borders}, + {"get_neighbors", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_23get_neighbors, METH_NOARGS, __pyx_doc_5pyFAI_3ext_9watershed_6Region_22get_neighbors}, {"merge", (PyCFunction)__pyx_pw_5pyFAI_3ext_9watershed_6Region_25merge, METH_O, __pyx_doc_5pyFAI_3ext_9watershed_6Region_24merge}, {0, 0, 0, 0} }; @@ -28599,9 +27028,8 @@ static PyTypeObject __pyx_type_5pyFAI_3ext_9watershed_Region = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif __pyx_pw_5pyFAI_3ext_9watershed_6Region_5__repr__, /*tp_repr*/ 0, /*tp_as_number*/ @@ -28772,9 +27200,8 @@ static PyTypeObject __pyx_type___pyx_array = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ @@ -28878,9 +27305,8 @@ static PyTypeObject __pyx_type___pyx_MemviewEnum = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif __pyx_MemviewEnum___repr__, /*tp_repr*/ 0, /*tp_as_number*/ @@ -29125,9 +27551,8 @@ static PyTypeObject __pyx_type___pyx_memoryview = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif __pyx_memoryview___repr__, /*tp_repr*/ 0, /*tp_as_number*/ @@ -29250,9 +27675,8 @@ static PyTypeObject __pyx_type___pyx_memoryviewslice = { 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ + #else + 0, /*reserved*/ #endif #if CYTHON_COMPILING_IN_PYPY __pyx_memoryview___repr__, /*tp_repr*/ @@ -29328,9 +27752,8 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_s_01_12_2016, __pyx_k_01_12_2016, sizeof(__pyx_k_01_12_2016), 0, 0, 1, 0}, {&__pyx_kp_s_1_0, __pyx_k_1_0, sizeof(__pyx_k_1_0), 0, 0, 1, 0}, - {&__pyx_kp_s_27_10_2016, __pyx_k_27_10_2016, sizeof(__pyx_k_27_10_2016), 0, 0, 1, 0}, - {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_increase_threshold_was_s, __pyx_k_Cannot_increase_threshold_was_s, sizeof(__pyx_k_Cannot_increase_threshold_was_s), 0, 0, 1, 0}, @@ -29416,7 +27839,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1}, - {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_n_s_end, __pyx_k_end, sizeof(__pyx_k_end), 0, 0, 1, 1}, {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, @@ -29441,7 +27863,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_h5py, __pyx_k_h5py, sizeof(__pyx_k_h5py), 0, 0, 1, 1}, {&__pyx_n_s_height, __pyx_k_height, sizeof(__pyx_k_height), 0, 0, 1, 1}, {&__pyx_n_s_highest_pass, __pyx_k_highest_pass, sizeof(__pyx_k_highest_pass), 0, 0, 1, 1}, - {&__pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_k_home_kieffer_workspace_pyFAI_py, sizeof(__pyx_k_home_kieffer_workspace_pyFAI_py), 0, 0, 1, 0}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1}, @@ -29563,6 +27984,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0}, {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0}, {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1}, + {&__pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_k_users_kieffer_workspace_400_pyF, sizeof(__pyx_k_users_kieffer_workspace_400_pyF), 0, 0, 1, 0}, {&__pyx_n_s_val, __pyx_k_val, sizeof(__pyx_k_val), 0, 0, 1, 1}, {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, @@ -29570,23 +27992,29 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_where, __pyx_k_where, sizeof(__pyx_k_where), 0, 0, 1, 1}, {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, + {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1}, {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_round = __Pyx_GetBuiltinName(__pyx_n_s_round); if (!__pyx_builtin_round) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s_sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s_sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #if PY_MAJOR_VERSION >= 3 + __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #else + __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif + __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -29618,102 +28046,102 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "pyFAI/ext/watershed.pyx":234 + /* "pyFAI/ext/watershed.pyx":236 * h5["NAME"] = self.NAME * h5["VERSION"] = self.VERSION * for i in ("data", "height", "width", "labels", "borders", "thres"): # <<<<<<<<<<<<<< * h5[i] = self.__getattribute__(i) * r = h5.require_group("regions") */ - __pyx_tuple__3 = PyTuple_Pack(6, __pyx_n_s_data, __pyx_n_s_height, __pyx_n_s_width, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_thres); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__3 = PyTuple_Pack(6, __pyx_n_s_data, __pyx_n_s_height, __pyx_n_s_width, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_thres); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "pyFAI/ext/watershed.pyx":236 + /* "pyFAI/ext/watershed.pyx":238 * for i in ("data", "height", "width", "labels", "borders", "thres"): * h5[i] = self.__getattribute__(i) * r = h5.require_group("regions") # <<<<<<<<<<<<<< * * for i in set(self.regions.values()): */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_regions); if (unlikely(!__pyx_tuple__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_regions); if (unlikely(!__pyx_tuple__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "pyFAI/ext/watershed.pyx":240 + /* "pyFAI/ext/watershed.pyx":242 * for i in set(self.regions.values()): * s = r.require_group(str(i.index)) * for j in ("index", "size", "pass_to", "mini", "maxi", "highest_pass", "neighbors", "border", "peaks"): # <<<<<<<<<<<<<< * s[j] = i.__getattribute__(j) * */ - __pyx_tuple__5 = PyTuple_Pack(9, __pyx_n_s_index, __pyx_n_s_size, __pyx_n_s_pass_to, __pyx_n_s_mini, __pyx_n_s_maxi, __pyx_n_s_highest_pass, __pyx_n_s_neighbors, __pyx_n_s_border, __pyx_n_s_peaks); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__5 = PyTuple_Pack(9, __pyx_n_s_index, __pyx_n_s_size, __pyx_n_s_pass_to, __pyx_n_s_mini, __pyx_n_s_maxi, __pyx_n_s_highest_pass, __pyx_n_s_neighbors, __pyx_n_s_border, __pyx_n_s_peaks); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "pyFAI/ext/watershed.pyx":231 + /* "pyFAI/ext/watershed.pyx":233 * """ * import h5py * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< * h5["NAME"] = self.NAME * h5["VERSION"] = self.VERSION */ - __pyx_tuple__6 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__6 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "pyFAI/ext/watershed.pyx":253 + /* "pyFAI/ext/watershed.pyx":255 * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" * self = cls(h5["data"].value, h5["thres"].value) * for i in ("labels", "borders"): # <<<<<<<<<<<<<< * setattr(self, i, h5[i].value) * for i in h5["regions"].values(): */ - __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_labels, __pyx_n_s_borders); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_labels, __pyx_n_s_borders); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); - /* "pyFAI/ext/watershed.pyx":249 + /* "pyFAI/ext/watershed.pyx":251 * """ * import h5py * with h5py.File(fname) as h5: # <<<<<<<<<<<<<< * assert h5["VERSION"].value == cls.VERSION, "Version of module used for HDF5" * assert h5["NAME"].value == cls.NAME, "Name of module used for HDF5" */ - __pyx_tuple__8 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__8 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":215 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":219 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< * * info.buf = PyArray_DATA(self) */ - __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); - /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../usr/lib/python2.7/dist-packages/Cython/Includes/numpy/__init__.pxd":257 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" */ - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); @@ -29750,151 +28178,126 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); - /* "View.MemoryView":129 + /* "View.MemoryView":127 * * if not self.ndim: * raise ValueError("Empty shape tuple for cython.array") # <<<<<<<<<<<<<< * * if itemsize <= 0: */ - __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); - /* "View.MemoryView":132 + /* "View.MemoryView":130 * * if itemsize <= 0: * raise ValueError("itemsize <= 0 for cython.array") # <<<<<<<<<<<<<< * - * if not isinstance(format, bytes): + * if isinstance(format, unicode): */ - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); - /* "View.MemoryView":135 - * - * if not isinstance(format, bytes): - * format = format.encode('ASCII') # <<<<<<<<<<<<<< - * self._format = format # keep a reference to the byte string - * self.format = self._format - */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - - /* "View.MemoryView":144 + /* "View.MemoryView":142 * * if not self._shape: * raise MemoryError("unable to allocate shape and strides.") # <<<<<<<<<<<<<< * * */ - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); - /* "View.MemoryView":172 + /* "View.MemoryView":170 * self.data = malloc(self.len) * if not self.data: * raise MemoryError("unable to allocate array data.") # <<<<<<<<<<<<<< * * if self.dtype_is_object: */ - __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__19)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); - /* "View.MemoryView":188 + /* "View.MemoryView":186 * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): * raise ValueError("Can only create a buffer that is contiguous in memory.") # <<<<<<<<<<<<<< * info.buf = self.data * info.len = self.len */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__19)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); - /* "View.MemoryView":447 + /* "View.MemoryView":445 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_GIVEREF(__pyx_tuple__20); - /* "View.MemoryView":523 + /* "View.MemoryView":521 * if self.view.strides == NULL: * * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< * - * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) + * return tuple([self.view.strides[i] for i in xrange(self.view.ndim)]) */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__22)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); - - /* "View.MemoryView":531 - * def __get__(self): - * if self.view.suboffsets == NULL: - * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< - * - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) - */ - __pyx_tuple__23 = PyTuple_New(1); if (unlikely(!__pyx_tuple__23)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_INCREF(__pyx_int_neg_1); - __Pyx_GIVEREF(__pyx_int_neg_1); - PyTuple_SET_ITEM(__pyx_tuple__23, 0, __pyx_int_neg_1); - __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); - /* "View.MemoryView":640 + /* "View.MemoryView":638 * if item is Ellipsis: * if not seen_ellipsis: * result.extend([slice(None)] * (ndim - len(tup) + 1)) # <<<<<<<<<<<<<< * seen_ellipsis = True * else: */ - __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_slice__24); - __Pyx_GIVEREF(__pyx_slice__24); + __pyx_slice__22 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__22)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_slice__22); + __Pyx_GIVEREF(__pyx_slice__22); - /* "View.MemoryView":643 + /* "View.MemoryView":641 * seen_ellipsis = True * else: * result.append(slice(None)) # <<<<<<<<<<<<<< * have_slices = True * else: */ - __pyx_slice__25 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__25)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_slice__25); - __Pyx_GIVEREF(__pyx_slice__25); + __pyx_slice__23 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__23)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_slice__23); + __Pyx_GIVEREF(__pyx_slice__23); - /* "View.MemoryView":654 + /* "View.MemoryView":652 * nslices = ndim - len(result) * if nslices: * result.extend([slice(None)] * nslices) # <<<<<<<<<<<<<< * * return have_slices or nslices, tuple(result) */ - __pyx_slice__26 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__26)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_slice__26); - __Pyx_GIVEREF(__pyx_slice__26); + __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_slice__24); + __Pyx_GIVEREF(__pyx_slice__24); - /* "View.MemoryView":661 - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: + /* "View.MemoryView":660 + * for i in range(ndim): + * if suboffsets[i] >= 0: * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< * * */ - __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); /* "pyFAI/ext/watershed.pyx":42 * import sys @@ -29903,226 +28306,226 @@ static int __Pyx_InitCachedConstants(void) { * from ..decorators import timeit * from cython.parallel import prange */ - __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_pyFAI_ext_watershed); if (unlikely(!__pyx_tuple__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_pyFAI_ext_watershed); if (unlikely(!__pyx_tuple__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); - /* "pyFAI/ext/watershed.pyx":201 + /* "pyFAI/ext/watershed.pyx":203 * VERSION = "1.0" * * def __init__(self, data not None, thres=1.0): # <<<<<<<<<<<<<< * """ - * @param data: 2d image as numpy array + * :param data: 2d image as numpy array */ - __pyx_tuple__29 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_thres); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__27 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_thres); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__29 = PyTuple_Pack(1, ((PyObject*)__pyx_float_1_0)); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); - __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_init, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_tuple__31 = PyTuple_Pack(1, ((PyObject*)__pyx_float_1_0)); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); - /* "pyFAI/ext/watershed.pyx":217 + /* "pyFAI/ext/watershed.pyx":219 * self._actual_thres = 2 * * def __dealloc__(self): # <<<<<<<<<<<<<< * """destructor""" * self.data = None */ - __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__32); - __Pyx_GIVEREF(__pyx_tuple__32); - __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_dealloc, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_dealloc, 219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":226 + /* "pyFAI/ext/watershed.pyx":228 * self.dict = None * * def save(self, fname): # <<<<<<<<<<<<<< * """ * Save all regions into a HDF5 file */ - __pyx_tuple__34 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_fname, __pyx_n_s_h5py, __pyx_n_s_h5, __pyx_n_s_i, __pyx_n_s_r, __pyx_n_s_s, __pyx_n_s_j); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__34); - __Pyx_GIVEREF(__pyx_tuple__34); - __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_save, 226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__32 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_fname, __pyx_n_s_h5py, __pyx_n_s_h5, __pyx_n_s_i, __pyx_n_s_r, __pyx_n_s_s, __pyx_n_s_j); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_save, 228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":244 + /* "pyFAI/ext/watershed.pyx":246 * * @classmethod * def load(cls, fname): # <<<<<<<<<<<<<< * """ * Load data from a HDF5 file */ - __pyx_tuple__36 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_fname, __pyx_n_s_h5py, __pyx_n_s_h5, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_r, __pyx_n_s_j); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__36); - __Pyx_GIVEREF(__pyx_tuple__36); - __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_load, 244, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__34 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_fname, __pyx_n_s_h5py, __pyx_n_s_h5, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_r, __pyx_n_s_j); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_load, 246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":269 + /* "pyFAI/ext/watershed.pyx":271 * return self * * def init(self): # <<<<<<<<<<<<<< * self.init_labels() * self.init_borders() */ - __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__38); - __Pyx_GIVEREF(__pyx_tuple__38); - __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_init_2, 269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init_2, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":282 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":285 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_labels(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res */ - __pyx_tuple__40 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_idx, __pyx_n_s_res, __pyx_n_s_labels, __pyx_n_s_regions, __pyx_n_s_bilinear); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__40); - __Pyx_GIVEREF(__pyx_tuple__40); - __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_init_labels, 282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__38 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_idx, __pyx_n_s_res, __pyx_n_s_labels, __pyx_n_s_regions, __pyx_n_s_bilinear); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); + __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init_labels, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":299 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":303 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_borders(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res */ - __pyx_tuple__42 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_idx, __pyx_n_s_res, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_neighb); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__42); - __Pyx_GIVEREF(__pyx_tuple__42); - __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_init_borders, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__40 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_idx, __pyx_n_s_res, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_neighb); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__40); + __Pyx_GIVEREF(__pyx_tuple__40); + __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init_borders, 303, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":331 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":336 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_regions(self): # <<<<<<<<<<<<<< * cdef: * int i, j, idx, res */ - __pyx_tuple__44 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_idx, __pyx_n_s_res, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_neighb, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_width, __pyx_n_s_height); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__44); - __Pyx_GIVEREF(__pyx_tuple__44); - __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_init_regions, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__42 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_idx, __pyx_n_s_res, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_neighb, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_width, __pyx_n_s_height); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__42); + __Pyx_GIVEREF(__pyx_tuple__42); + __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init_regions, 336, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":371 + /* "pyFAI/ext/watershed.pyx":376 * @cython.boundscheck(False) * @cython.wraparound(False) * def init_pass(self): # <<<<<<<<<<<<<< * cdef: * int i, j, k, imax, imin */ - __pyx_tuple__46 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_imax, __pyx_n_s_imin, __pyx_n_s_flat, __pyx_n_s_neighb, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_val, __pyx_n_s_maxi, __pyx_n_s_mini, __pyx_n_s_width); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__46); - __Pyx_GIVEREF(__pyx_tuple__46); - __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_init_pass, 371, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__44 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_imax, __pyx_n_s_imin, __pyx_n_s_flat, __pyx_n_s_neighb, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_val, __pyx_n_s_maxi, __pyx_n_s_mini, __pyx_n_s_width); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__44); + __Pyx_GIVEREF(__pyx_tuple__44); + __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_init_pass, 376, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":384 + /* "pyFAI/ext/watershed.pyx":389 * regions.pop(region.index) * * def merge_singleton(self): # <<<<<<<<<<<<<< * "merge single pixel region" * cdef: */ - __pyx_tuple__48 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_idx, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_key, __pyx_n_s_key1, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_neighb, __pyx_n_s_ref, __pyx_n_s_data, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_to_merge, __pyx_n_s_width, __pyx_n_s_cnt, __pyx_n_s_flat); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__48); - __Pyx_GIVEREF(__pyx_tuple__48); - __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_merge_singleton, 384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__46 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_idx, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_key, __pyx_n_s_key1, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_neighb, __pyx_n_s_ref, __pyx_n_s_data, __pyx_n_s_labels, __pyx_n_s_borders, __pyx_n_s_to_merge, __pyx_n_s_width, __pyx_n_s_cnt, __pyx_n_s_flat); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__46); + __Pyx_GIVEREF(__pyx_tuple__46); + __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_merge_singleton, 389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":449 + /* "pyFAI/ext/watershed.pyx":454 * logger.info("Did %s merge_singleton" % cnt) * * def merge_twins(self): # <<<<<<<<<<<<<< * """ * Twins are two peak region which are best linked together: */ - __pyx_tuple__50 = PyTuple_Pack(23, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_imax, __pyx_n_s_imin, __pyx_n_s_key1, __pyx_n_s_key2, __pyx_n_s_key, __pyx_n_s_flat, __pyx_n_s_neighb, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_val, __pyx_n_s_maxi, __pyx_n_s_mini, __pyx_n_s_found, __pyx_n_s_width, __pyx_n_s_cnt, __pyx_n_s_idx1, __pyx_n_s_idx2); if (unlikely(!__pyx_tuple__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__50); - __Pyx_GIVEREF(__pyx_tuple__50); - __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 23, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_merge_twins, 449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__48 = PyTuple_Pack(23, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_imax, __pyx_n_s_imin, __pyx_n_s_key1, __pyx_n_s_key2, __pyx_n_s_key, __pyx_n_s_flat, __pyx_n_s_neighb, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_val, __pyx_n_s_maxi, __pyx_n_s_mini, __pyx_n_s_found, __pyx_n_s_width, __pyx_n_s_cnt, __pyx_n_s_idx1, __pyx_n_s_idx2); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__48); + __Pyx_GIVEREF(__pyx_tuple__48); + __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 23, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_merge_twins, 454, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":481 + /* "pyFAI/ext/watershed.pyx":486 * logger.info("Did %s merge_twins" % cnt) * * def merge_intense(self, thres=1.0): # <<<<<<<<<<<<<< * """ * Merge groups then (pass-mini)/(maxi-mini) >=thres */ - __pyx_tuple__52 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_thres, __pyx_n_s_key1, __pyx_n_s_key2, __pyx_n_s_idx1, __pyx_n_s_idx2, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_ratio, __pyx_n_s_flat, __pyx_n_s_cnt, __pyx_n_s_key); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__50 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_thres, __pyx_n_s_key1, __pyx_n_s_key2, __pyx_n_s_idx1, __pyx_n_s_idx2, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region, __pyx_n_s_regions, __pyx_n_s_ratio, __pyx_n_s_flat, __pyx_n_s_cnt, __pyx_n_s_key); if (unlikely(!__pyx_tuple__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__50); + __Pyx_GIVEREF(__pyx_tuple__50); + __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(2, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_merge_intense, 486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__52 = PyTuple_Pack(1, ((PyObject*)__pyx_float_1_0)); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_tuple__52); __Pyx_GIVEREF(__pyx_tuple__52); - __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(2, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_merge_intense, 481, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_tuple__54 = PyTuple_Pack(1, ((PyObject*)__pyx_float_1_0)); if (unlikely(!__pyx_tuple__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__54); - __Pyx_GIVEREF(__pyx_tuple__54); - /* "pyFAI/ext/watershed.pyx":514 + /* "pyFAI/ext/watershed.pyx":519 * logger.info("Did %s merge_intense" % cnt) * * def peaks_from_area(self, mask, Imin=None, keep=None, bint refine=True, float dmin=0.0, **kwarg): # <<<<<<<<<<<<<< * """ - * @param mask: mask of data points valid + * :param mask: mask of data points valid */ - __pyx_tuple__55 = PyTuple_Pack(29, __pyx_n_s_self, __pyx_n_s_mask, __pyx_n_s_Imin, __pyx_n_s_keep, __pyx_n_s_refine, __pyx_n_s_dmin, __pyx_n_s_kwarg, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_l, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_width, __pyx_n_s_mask_flat, __pyx_n_s_input_points, __pyx_n_s_labels, __pyx_n_s_regions, __pyx_n_s_region, __pyx_n_s_output_points, __pyx_n_s_intensities, __pyx_n_s_argsort, __pyx_n_s_tmp_lst, __pyx_n_s_rej_lst, __pyx_n_s_keep_regions, __pyx_n_s_data, __pyx_n_s_d2, __pyx_n_s_dmin2, __pyx_n_s_pt, __pyx_n_s_pt2); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__55); - __Pyx_GIVEREF(__pyx_tuple__55); - __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(6, 0, 29, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_kieffer_workspace_pyFAI_py, __pyx_n_s_peaks_from_area, 514, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_tuple__53 = PyTuple_Pack(29, __pyx_n_s_self, __pyx_n_s_mask, __pyx_n_s_Imin, __pyx_n_s_keep, __pyx_n_s_refine, __pyx_n_s_dmin, __pyx_n_s_kwarg, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_l, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_width, __pyx_n_s_mask_flat, __pyx_n_s_input_points, __pyx_n_s_labels, __pyx_n_s_regions, __pyx_n_s_region, __pyx_n_s_output_points, __pyx_n_s_intensities, __pyx_n_s_argsort, __pyx_n_s_tmp_lst, __pyx_n_s_rej_lst, __pyx_n_s_keep_regions, __pyx_n_s_data, __pyx_n_s_d2, __pyx_n_s_dmin2, __pyx_n_s_pt, __pyx_n_s_pt2); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__53); + __Pyx_GIVEREF(__pyx_tuple__53); + __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(6, 0, 29, 0, CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_users_kieffer_workspace_400_pyF, __pyx_n_s_peaks_from_area, 519, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "View.MemoryView":278 + /* "View.MemoryView":276 * return self.name * * cdef generic = Enum("") # <<<<<<<<<<<<<< * cdef strided = Enum("") # default * cdef indirect = Enum("") */ - __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__57); - __Pyx_GIVEREF(__pyx_tuple__57); + __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__55); + __Pyx_GIVEREF(__pyx_tuple__55); - /* "View.MemoryView":279 + /* "View.MemoryView":277 * * cdef generic = Enum("") * cdef strided = Enum("") # default # <<<<<<<<<<<<<< * cdef indirect = Enum("") * */ - __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__58); - __Pyx_GIVEREF(__pyx_tuple__58); + __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__56)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__56); + __Pyx_GIVEREF(__pyx_tuple__56); - /* "View.MemoryView":280 + /* "View.MemoryView":278 * cdef generic = Enum("") * cdef strided = Enum("") # default * cdef indirect = Enum("") # <<<<<<<<<<<<<< * * */ - __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__59)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__59); - __Pyx_GIVEREF(__pyx_tuple__59); + __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__57); + __Pyx_GIVEREF(__pyx_tuple__57); - /* "View.MemoryView":283 + /* "View.MemoryView":281 * * * cdef contiguous = Enum("") # <<<<<<<<<<<<<< * cdef indirect_contiguous = Enum("") * */ - __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__60); - __Pyx_GIVEREF(__pyx_tuple__60); + __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__58); + __Pyx_GIVEREF(__pyx_tuple__58); - /* "View.MemoryView":284 + /* "View.MemoryView":282 * * cdef contiguous = Enum("") * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< * * */ - __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __Pyx_GOTREF(__pyx_tuple__61); - __Pyx_GIVEREF(__pyx_tuple__61); + __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__59)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_tuple__59); + __Pyx_GIVEREF(__pyx_tuple__59); __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -30138,8 +28541,6 @@ PyEval_InitThreads(); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type; - __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type; if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -30180,24 +28581,18 @@ PyMODINIT_FUNC PyInit_watershed(void) } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_watershed(void)", 0); - if (__Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS @@ -30220,12 +28615,12 @@ PyMODINIT_FUNC PyInit_watershed(void) #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif if (__pyx_module_is_main_pyFAI__ext__watershed) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; } #if PY_MAJOR_VERSION >= 3 { @@ -30236,9 +28631,9 @@ PyMODINIT_FUNC PyInit_watershed(void) } #endif /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Global init code ---*/ generic = Py_None; Py_INCREF(Py_None); strided = Py_None; Py_INCREF(Py_None); @@ -30260,10 +28655,10 @@ PyMODINIT_FUNC PyInit_watershed(void) __pyx_type_5pyFAI_3ext_9watershed_Region.tp_print = 0; if (PyObject_SetAttrString(__pyx_m, "Region", (PyObject *)&__pyx_type_5pyFAI_3ext_9watershed_Region) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_5pyFAI_3ext_9watershed_Region = &__pyx_type_5pyFAI_3ext_9watershed_Region; - if (PyType_Ready(&__pyx_type___pyx_array) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type___pyx_array) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_type___pyx_array.tp_print = 0; __pyx_array_type = &__pyx_type___pyx_array; - if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_type___pyx_MemviewEnum.tp_print = 0; __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum; __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview; @@ -30274,18 +28669,18 @@ PyMODINIT_FUNC PyInit_watershed(void) __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed; __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object; __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object; - if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_type___pyx_memoryview.tp_print = 0; - if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_memoryview_type = &__pyx_type___pyx_memoryview; __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice; __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview; __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; __pyx_type___pyx_memoryviewslice.tp_base = __pyx_memoryview_type; - if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_type___pyx_memoryviewslice.tp_print = 0; - if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; /*--- Type import code ---*/ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", @@ -30296,23 +28691,20 @@ PyMODINIT_FUNC PyInit_watershed(void) #endif 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - #endif /* "pyFAI/ext/watershed.pyx":31 * """Inverse watershed for connecting region of high intensity * """ * __author__ = "Jerome Kieffer" # <<<<<<<<<<<<<< * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Jerome_Kieffer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -30320,7 +28712,7 @@ PyMODINIT_FUNC PyInit_watershed(void) * """ * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" # <<<<<<<<<<<<<< - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" * __status__ = "stable" */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_contact, __pyx_kp_s_Jerome_kieffer_esrf_fr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -30328,15 +28720,15 @@ PyMODINIT_FUNC PyInit_watershed(void) /* "pyFAI/ext/watershed.pyx":33 * __author__ = "Jerome Kieffer" * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/10/2016" # <<<<<<<<<<<<<< + * __date__ = "01/12/2016" # <<<<<<<<<<<<<< * __status__ = "stable" * __license__ = "MIT" */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_27_10_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_date, __pyx_kp_s_01_12_2016) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/watershed.pyx":34 * __contact__ = "Jerome.kieffer@esrf.fr" - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" * __status__ = "stable" # <<<<<<<<<<<<<< * __license__ = "MIT" * @@ -30344,7 +28736,7 @@ PyMODINIT_FUNC PyInit_watershed(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_status, __pyx_n_s_stable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} /* "pyFAI/ext/watershed.pyx":35 - * __date__ = "27/10/2016" + * __date__ = "01/12/2016" * __status__ = "stable" * __license__ = "MIT" # <<<<<<<<<<<<<< * @@ -30400,7 +28792,7 @@ PyMODINIT_FUNC PyInit_watershed(void) __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -30416,8 +28808,8 @@ PyMODINIT_FUNC PyInit_watershed(void) __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_timeit); - __Pyx_GIVEREF(__pyx_n_s_timeit); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_timeit); + __Pyx_GIVEREF(__pyx_n_s_timeit); __pyx_t_2 = __Pyx_Import(__pyx_n_s_decorators, __pyx_t_1, 2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -30451,250 +28843,244 @@ PyMODINIT_FUNC PyInit_watershed(void) * import_umath() # <<<<<<<<<<<<<< */ import_umath(); - - /* "pyFAI/ext/numpy_common.pxi":9 - * void import_umath() - * - * if FALSE: # <<<<<<<<<<<<<< - * import_array() - * import_umath() - */ + goto __pyx_L2; } + __pyx_L2:; - /* "pyFAI/ext/watershed.pyx":179 + /* "pyFAI/ext/watershed.pyx":181 * * * class InverseWatershed(object): # <<<<<<<<<<<<<< * """ * Idea: */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_builtin_object); - __Pyx_GIVEREF(__pyx_builtin_object); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object); - __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GIVEREF(__pyx_builtin_object); + __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_InverseWatershed, __pyx_n_s_InverseWatershed, (PyObject *) NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_kp_s_Idea_label_all_peaks_define_reg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_InverseWatershed, __pyx_n_s_InverseWatershed, (PyObject *) NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_kp_s_Idea_label_all_peaks_define_reg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - /* "pyFAI/ext/watershed.pyx":198 + /* "pyFAI/ext/watershed.pyx":200 * # readonly float thres, _actual_thres * # readonly Bilinear bilinear * NAME = "Inverse watershed" # <<<<<<<<<<<<<< * VERSION = "1.0" * */ - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NAME, __pyx_kp_s_Inverse_watershed) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_NAME, __pyx_kp_s_Inverse_watershed) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":199 + /* "pyFAI/ext/watershed.pyx":201 * # readonly Bilinear bilinear * NAME = "Inverse watershed" * VERSION = "1.0" # <<<<<<<<<<<<<< * * def __init__(self, data not None, thres=1.0): */ - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_VERSION, __pyx_kp_s_1_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_VERSION, __pyx_kp_s_1_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - /* "pyFAI/ext/watershed.pyx":201 + /* "pyFAI/ext/watershed.pyx":203 * VERSION = "1.0" * * def __init__(self, data not None, thres=1.0): # <<<<<<<<<<<<<< * """ - * @param data: 2d image as numpy array + * :param data: 2d image as numpy array */ - __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__, 0, __pyx_n_s_InverseWatershed___init, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_1__init__, 0, __pyx_n_s_InverseWatershed___init, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_tuple__31); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_tuple__29); + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/watershed.pyx":217 + /* "pyFAI/ext/watershed.pyx":219 * self._actual_thres = 2 * * def __dealloc__(self): # <<<<<<<<<<<<<< * """destructor""" * self.data = None */ - __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_3__dealloc__, 0, __pyx_n_s_InverseWatershed___dealloc, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_3__dealloc__, 0, __pyx_n_s_InverseWatershed___dealloc, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_dealloc, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_dealloc, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/watershed.pyx":226 + /* "pyFAI/ext/watershed.pyx":228 * self.dict = None * * def save(self, fname): # <<<<<<<<<<<<<< * """ * Save all regions into a HDF5 file */ - __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_5save, 0, __pyx_n_s_InverseWatershed_save, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_5save, 0, __pyx_n_s_InverseWatershed_save, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_save, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_save, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/watershed.pyx":244 + /* "pyFAI/ext/watershed.pyx":246 * * @classmethod * def load(cls, fname): # <<<<<<<<<<<<<< * """ * Load data from a HDF5 file */ - __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_7load, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_InverseWatershed_load, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_7load, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_n_s_InverseWatershed_load, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - /* "pyFAI/ext/watershed.pyx":243 + /* "pyFAI/ext/watershed.pyx":245 * s[j] = i.__getattribute__(j) * * @classmethod # <<<<<<<<<<<<<< * def load(cls, fname): * """ */ - __pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_load, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_load, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":269 + /* "pyFAI/ext/watershed.pyx":271 * return self * * def init(self): # <<<<<<<<<<<<<< * self.init_labels() * self.init_borders() */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_9init, 0, __pyx_n_s_InverseWatershed_init, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_9init, 0, __pyx_n_s_InverseWatershed_init, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_2, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_2, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":282 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":285 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_labels(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels, 0, __pyx_n_s_InverseWatershed_init_labels, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_11init_labels, 0, __pyx_n_s_InverseWatershed_init_labels, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_labels, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_labels, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":299 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":303 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_borders(self): # <<<<<<<<<<<<<< * cdef: * int i, j, width = self.width, height = self.height, idx, res */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders, 0, __pyx_n_s_InverseWatershed_init_borders, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_13init_borders, 0, __pyx_n_s_InverseWatershed_init_borders, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_borders, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_borders, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":331 - * @cython.boundscheck(False) + /* "pyFAI/ext/watershed.pyx":336 * @cython.wraparound(False) + * @cython.initializedcheck(False) * def init_regions(self): # <<<<<<<<<<<<<< * cdef: * int i, j, idx, res */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions, 0, __pyx_n_s_InverseWatershed_init_regions, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_15init_regions, 0, __pyx_n_s_InverseWatershed_init_regions, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_regions, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_regions, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":371 + /* "pyFAI/ext/watershed.pyx":376 * @cython.boundscheck(False) * @cython.wraparound(False) * def init_pass(self): # <<<<<<<<<<<<<< * cdef: * int i, j, k, imax, imin */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass, 0, __pyx_n_s_InverseWatershed_init_pass, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_17init_pass, 0, __pyx_n_s_InverseWatershed_init_pass, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_pass, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init_pass, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":384 + /* "pyFAI/ext/watershed.pyx":389 * regions.pop(region.index) * * def merge_singleton(self): # <<<<<<<<<<<<<< * "merge single pixel region" * cdef: */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_19merge_singleton, 0, __pyx_n_s_InverseWatershed_merge_singleton, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_19merge_singleton, 0, __pyx_n_s_InverseWatershed_merge_singleton, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_merge_singleton, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_merge_singleton, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":449 + /* "pyFAI/ext/watershed.pyx":454 * logger.info("Did %s merge_singleton" % cnt) * * def merge_twins(self): # <<<<<<<<<<<<<< * """ * Twins are two peak region which are best linked together: */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_21merge_twins, 0, __pyx_n_s_InverseWatershed_merge_twins, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_21merge_twins, 0, __pyx_n_s_InverseWatershed_merge_twins, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_merge_twins, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_merge_twins, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":481 + /* "pyFAI/ext/watershed.pyx":486 * logger.info("Did %s merge_twins" % cnt) * * def merge_intense(self, thres=1.0): # <<<<<<<<<<<<<< * """ * Merge groups then (pass-mini)/(maxi-mini) >=thres */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_intense, 0, __pyx_n_s_InverseWatershed_merge_intense, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_23merge_intense, 0, __pyx_n_s_InverseWatershed_merge_intense, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__54); - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_merge_intense, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__52); + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_merge_intense, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "pyFAI/ext/watershed.pyx":514 + /* "pyFAI/ext/watershed.pyx":519 * logger.info("Did %s merge_intense" % cnt) * * def peaks_from_area(self, mask, Imin=None, keep=None, bint refine=True, float dmin=0.0, **kwarg): # <<<<<<<<<<<<<< * """ - * @param mask: mask of data points valid + * :param mask: mask of data points valid */ - __pyx_t_6 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PyFloat_FromDouble(((double)0.0)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = PyFloat_FromDouble(((double)0.0)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(((PyObject *)Py_None)); - __Pyx_GIVEREF(((PyObject *)Py_None)); PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)Py_None)); - __Pyx_INCREF(((PyObject *)Py_None)); __Pyx_GIVEREF(((PyObject *)Py_None)); + __Pyx_INCREF(((PyObject *)Py_None)); PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)Py_None)); - __Pyx_GIVEREF(__pyx_t_6); + __Pyx_GIVEREF(((PyObject *)Py_None)); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from_area, 0, __pyx_n_s_InverseWatershed_peaks_from_area, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5pyFAI_3ext_9watershed_16InverseWatershed_25peaks_from_area, 0, __pyx_n_s_InverseWatershed_peaks_from_area, NULL, __pyx_kp_s_pyFAI_ext_watershed, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_peaks_from_area, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_peaks_from_area, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "pyFAI/ext/watershed.pyx":179 + /* "pyFAI/ext/watershed.pyx":181 * * * class InverseWatershed(object): # <<<<<<<<<<<<<< * """ * Idea: */ - __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_InverseWatershed, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_InverseWatershed, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_InverseWatershed, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InverseWatershed, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -30710,116 +29096,116 @@ PyMODINIT_FUNC PyInit_watershed(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":205 + /* "View.MemoryView":203 * info.obj = self * * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * def __dealloc__(array self): */ - __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), __pyx_k_getbuffer_obj_view_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), __pyx_k_getbuffer_obj_view_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_array_type); - /* "View.MemoryView":278 + /* "View.MemoryView":276 * return self.name * * cdef generic = Enum("") # <<<<<<<<<<<<<< * cdef strided = Enum("") # default * cdef indirect = Enum("") */ - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_MemviewEnum_type)), __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(generic); __Pyx_DECREF_SET(generic, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":279 + /* "View.MemoryView":277 * * cdef generic = Enum("") * cdef strided = Enum("") # default # <<<<<<<<<<<<<< * cdef indirect = Enum("") * */ - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_MemviewEnum_type)), __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(strided); __Pyx_DECREF_SET(strided, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":280 + /* "View.MemoryView":278 * cdef generic = Enum("") * cdef strided = Enum("") # default * cdef indirect = Enum("") # <<<<<<<<<<<<<< * * */ - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_MemviewEnum_type)), __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(indirect); __Pyx_DECREF_SET(indirect, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":283 + /* "View.MemoryView":281 * * * cdef contiguous = Enum("") # <<<<<<<<<<<<<< * cdef indirect_contiguous = Enum("") * */ - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_MemviewEnum_type)), __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(contiguous); __Pyx_DECREF_SET(contiguous, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":284 + /* "View.MemoryView":282 * * cdef contiguous = Enum("") * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< * * */ - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject *)__pyx_MemviewEnum_type)), __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(indirect_contiguous); __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":498 + /* "View.MemoryView":496 * info.obj = self * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * */ - __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), __pyx_k_getbuffer_obj_view_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), __pyx_k_getbuffer_obj_view_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_memoryview_type); - /* "View.MemoryView":954 + /* "View.MemoryView":953 * return self.from_object * * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< * * */ - __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), __pyx_k_getbuffer_obj_view_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), __pyx_k_getbuffer_obj_view_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_memoryviewslice_type); - /* "View.MemoryView":1364 + /* "View.MemoryView":1361 * * @cname('__pyx_memoryview__slice_assign_scalar') * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< @@ -30854,7 +29240,7 @@ PyMODINIT_FUNC PyInit_watershed(void) #endif } -/* --- Runtime support code --- */ +/* Runtime support code */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; @@ -30996,120 +29382,32 @@ static int __Pyx_ParseOptionalKeywords( #endif bad: return -1; -} - -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" -#endif - -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { - if (op1 == op2) { - Py_RETURN_TRUE; - } - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long a = PyInt_AS_LONG(op1); - if (a == b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 - if (likely(PyLong_CheckExact(op1))) { - const long b = intval; - long a; - const digit* digits = ((PyLongObject*)op1)->ob_digit; - const Py_ssize_t size = Py_SIZE(op1); - if (likely(__Pyx_sst_abs(size) <= 1)) { - a = likely(size) ? digits[0] : 0; - if (size == -1) a = -a; - } else { - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 - default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); - #else - default: Py_RETURN_FALSE; - #endif - } - } - if (a == b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } +} + +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; - double a = PyFloat_AS_DOUBLE(op1); - if ((double)a == (double)b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } + if (exact) { + more_or_less = "exactly"; } - return PyObject_RichCompare(op1, op2, Py_EQ); + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); } -#endif static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; @@ -31119,8 +29417,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { + int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { @@ -31134,8 +29431,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_ #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { + int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { @@ -31148,9 +29444,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize return PySequence_GetItem(o, i); #endif } -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); @@ -31255,12 +29550,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; + PyObject* args = PyTuple_Pack(1, arg); + return (likely(args)) ? __Pyx_PyObject_Call(func, args, NULL) : NULL; } #endif @@ -31901,6 +30192,7 @@ __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, static CYTHON_INLINE void __pyx_fatalerror(const char *fmt, ...) { va_list vargs; char msg[200]; + va_start(vargs, fmt); #ifdef HAVE_STDARG_PROTOTYPES va_start(vargs, fmt); #else @@ -32012,14 +30304,9 @@ static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyOb static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { + int full_traceback) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#endif __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); @@ -32040,10 +30327,6 @@ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif } static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { @@ -32128,79 +30411,6 @@ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { return 0; } -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_level = PyInt_FromLong(1); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - #endif - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_VERSION_HEX < 0x03030000 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_VERSION_HEX < 0x03030000 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) { #if CYTHON_COMPILING_IN_CPYTHON PyThreadState *tstate = PyThreadState_GET(); @@ -32305,53 +30515,47 @@ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { return 0; } -static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { + PyObject *method, *result = NULL; + method = __Pyx_PyObject_GetAttrStr(obj, method_name); + if (unlikely(!method)) goto bad; #if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(PyObject_TypeCheck(method, &PyMethodDescr_Type))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_O | METH_NOARGS); + if (likely(PyMethod_Check(method))) { + PyObject *self = PyMethod_GET_SELF(method); + if (likely(self)) { + PyObject *args; + PyObject *function = PyMethod_GET_FUNCTION(method); + args = PyTuple_New(2); + if (unlikely(!args)) goto bad; + Py_INCREF(self); + PyTuple_SET_ITEM(args, 0, self); + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 1, arg); + Py_INCREF(function); + Py_DECREF(method); method = NULL; + result = __Pyx_PyObject_Call(function, args, NULL); + Py_DECREF(args); + Py_DECREF(function); + return result; + } } #endif - return 0; -} - -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { - PyObject *args, *result = NULL; - if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); -#else - args = PyTuple_Pack(1, self); - if (unlikely(!args)) goto bad; -#endif - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - Py_DECREF(args); + result = __Pyx_PyObject_CallOneArg(method, arg); bad: + Py_XDECREF(method); return result; } static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) { if (PY_MAJOR_VERSION >= 3) - return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d); + return __Pyx_PyObject_CallMethod1((PyObject*)&PyDict_Type, __pyx_n_s_values, d); else return PyDict_Values(d); } static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) { if (PY_MAJOR_VERSION >= 3) - return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_keys, d); + return __Pyx_PyObject_CallMethod1((PyObject*)&PyDict_Type, __pyx_n_s_keys, d); else return PyDict_Keys(d); } @@ -32439,8 +30643,8 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyOb Py_DECREF(j); return r; } -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, - CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { +static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, + int is_list, int wraparound, int boundscheck) { #if CYTHON_COMPILING_IN_CPYTHON if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); @@ -32554,13 +30758,10 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject if (value && PyExceptionInstance_Check(value)) { instance_class = (PyObject*) Py_TYPE(value); if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { + if (PyObject_IsSubclass(instance_class, type)) { type = instance_class; + } else { + instance_class = NULL; } } } @@ -32620,7 +30821,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject if (tb) { #if CYTHON_COMPILING_IN_PYPY PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + PyErr_Fetch(tmp_type, tmp_value, tmp_tb); Py_INCREF(tb); PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); @@ -32789,13 +30990,7 @@ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { Py_ssize_t length; if (unlikely((start < 0) | (stop < 0))) { - size_t slen = strlen(cstring); - if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { - PyErr_SetString(PyExc_OverflowError, - "c-string too long to convert to Python"); - return NULL; - } - length = (Py_ssize_t) slen; + length = strlen(cstring); if (start < 0) { start += length; if (start < 0) @@ -32834,103 +31029,6 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, *tb = tmp_tb; } -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long x; - long a = PyInt_AS_LONG(op1); - x = (long)((unsigned long)a + b); - if (likely((x^a) >= 0 || (x^b) >= 0)) - return PyInt_FromLong(x); - return PyLong_Type.tp_as_number->nb_add(op1, op2); - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3 - if (likely(PyLong_CheckExact(op1))) { - const long b = intval; - long a, x; - const PY_LONG_LONG llb = intval; - PY_LONG_LONG lla, llx; - const digit* digits = ((PyLongObject*)op1)->ob_digit; - const Py_ssize_t size = Py_SIZE(op1); - if (likely(__Pyx_sst_abs(size) <= 1)) { - a = likely(size) ? digits[0] : 0; - if (size == -1) a = -a; - } else { - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - } - default: return PyLong_Type.tp_as_number->nb_add(op1, op2); - } - } - x = a + b; - return PyLong_FromLong(x); - long_long: - llx = lla + llb; - return PyLong_FromLongLong(llx); - } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; - double a = PyFloat_AS_DOUBLE(op1); - double result; - PyFPE_START_PROTECT("add", return NULL) - result = ((double)a) + (double)b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); - } - return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); -} -#endif - static CYTHON_INLINE long __Pyx_div_long(long a, long b) { long q = a / b; long r = a - q*b; @@ -33197,25 +31295,15 @@ __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) } static int __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; PyObject *res = op->defaults_getter((PyObject *) op); if (unlikely(!res)) return -1; - #if CYTHON_COMPILING_IN_CPYTHON op->defaults_tuple = PyTuple_GET_ITEM(res, 0); Py_INCREF(op->defaults_tuple); op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif Py_DECREF(res); - return result; + return 0; } static int __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { @@ -33325,6 +31413,9 @@ static PyGetSetDef __pyx_CyFunction_getsets[] = { {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, {0, 0, 0, 0, 0} }; +#ifndef PY_WRITE_RESTRICTED +#define PY_WRITE_RESTRICTED WRITE_RESTRICTED +#endif static PyMemberDef __pyx_CyFunction_members[] = { {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0}, {0, 0, 0, 0, 0} @@ -33463,39 +31554,34 @@ __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) #if CYTHON_COMPILING_IN_PYPY static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - PyObject *self = f->m_self; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) { case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) + if (likely(kw == NULL) || PyDict_Size(kw) == 0) return (*meth)(self, arg); break; case METH_VARARGS | METH_KEYWORDS: return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + if (likely(kw == NULL) || PyDict_Size(kw) == 0) { size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) + if (size == 0) return (*meth)(self, NULL); PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + "%.200s() takes no arguments (%zd given)", f->m_ml->ml_name, size); return NULL; } break; case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + if (likely(kw == NULL) || PyDict_Size(kw) == 0) { size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0 = PySequence_ITEM(arg, 0); - if (unlikely(!arg0)) return NULL; - result = (*meth)(self, arg0); - Py_DECREF(arg0); - return result; - } + if (size == 1) + return (*meth)(self, PyTuple_GET_ITEM(arg, 0)); PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + "%.200s() takes exactly one argument (%zd given)", f->m_ml->ml_name, size); return NULL; } @@ -33575,7 +31661,7 @@ static PyTypeObject __pyx_CyFunctionType_type = { 0, #endif }; -static int __pyx_CyFunction_init(void) { +static int __Pyx_CyFunction_init(void) { #if !CYTHON_COMPILING_IN_PYPY __pyx_CyFunctionType_type.tp_call = PyCFunction_Call; #endif @@ -33682,7 +31768,7 @@ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int co return count; } while (start < end) { - mid = start + (end - start) / 2; + mid = (start + end) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { @@ -33835,6 +31921,32 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, Py_XDECREF(py_frame); } +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + const int neg_one = (int) -1, const_zero = 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); + } else if (sizeof(int) <= sizeof(unsigned long long)) { + return PyLong_FromUnsignedLongLong((unsigned long long) value); + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(long long)) { + return PyLong_FromLongLong((long long) value); + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); + } +} + #if PY_MAJOR_VERSION < 3 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); @@ -33851,36 +31963,109 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { PyBuffer_Release(view); return; } - if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) { __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view); return; } - Py_DECREF(obj); - view->obj = NULL; + if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) { __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view); return; } + Py_DECREF(obj); + view->obj = NULL; +} +#endif + + + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; + } + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.')) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(1); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + #endif + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif + } + } +bad: + #if PY_VERSION_HEX < 0x03030000 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; } -#endif - - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value) \ + { \ + func_type value = func_value; \ + if (sizeof(target_type) < sizeof(func_type)) { \ + if (unlikely(value != (func_type) (target_type) value)) { \ + func_type zero = 0; \ + if (is_unsigned && unlikely(value < zero)) \ + goto raise_neg_overflow; \ + else \ + goto raise_overflow; \ + } \ + } \ + return (target_type) value; \ } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #endif +#endif + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { - const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; + const size_t neg_one = (size_t) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { @@ -33897,125 +32082,36 @@ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (size_t) 0; - case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0]) - case 2: - if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) { - return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) { - return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) { - return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif -#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (size_t) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif if (sizeof(size_t) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(size_t) <= sizeof(unsigned long long)) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long long, PyLong_AsUnsignedLongLong(x)) } } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (size_t) 0; - case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, -(sdigit) digits[0]) - case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0]) - case -2: - if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { - return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { - return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { - return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { - return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { - return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { - return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +(((PyLongObject*)x)->ob_digit[0])); + case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif if (sizeof(size_t) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) - } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) + __PYX_VERIFY_RETURN_INT(size_t, long, PyLong_AsLong(x)) + } else if (sizeof(size_t) <= sizeof(long long)) { + __PYX_VERIFY_RETURN_INT(size_t, long long, PyLong_AsLongLong(x)) } } { @@ -34064,7 +32160,7 @@ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { } static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; + const int neg_one = (int) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { @@ -34081,125 +32177,36 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif -#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + __PYX_VERIFY_RETURN_INT(int, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(int) <= sizeof(unsigned long long)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long long, PyLong_AsUnsignedLongLong(x)) } } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) digits[0]) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +(((PyLongObject*)x)->ob_digit[0])); + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) + __PYX_VERIFY_RETURN_INT(int, long, PyLong_AsLong(x)) + } else if (sizeof(int) <= sizeof(long long)) { + __PYX_VERIFY_RETURN_INT(int, long long, PyLong_AsLongLong(x)) } } { @@ -34468,17 +32475,17 @@ static int __Pyx_ValidateAndInit_memviewslice( return retval; } -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj) { +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; int retcode; if (obj == Py_None) { result.memview = (struct __pyx_memoryview_obj *) Py_None; return result; } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, - PyBUF_RECORDS, 1, + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 1, &__Pyx_TypeInfo_float, stack, &result, obj); if (unlikely(retcode == -1)) @@ -34491,21 +32498,21 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_flo } static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; + const long neg_one = (long) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + } else if (sizeof(long) <= sizeof(unsigned long long)) { + return PyLong_FromUnsignedLongLong((unsigned long long) value); } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); + } else if (sizeof(long) <= sizeof(long long)) { + return PyLong_FromLongLong((long long) value); } } { @@ -34516,32 +32523,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { } } -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - static PyObject *__pyx_memview_get_float(const char *itemp) { return (PyObject *) PyFloat_FromDouble(*(float *) itemp); } @@ -34695,21 +32676,21 @@ static int __Pyx_PrintOne(PyObject* stream, PyObject *o) { #endif static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int32(npy_int32 value) { - const npy_int32 neg_one = (npy_int32) -1, const_zero = (npy_int32) 0; + const npy_int32 neg_one = (npy_int32) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(npy_int32) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(npy_int32) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(npy_int32) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + } else if (sizeof(npy_int32) <= sizeof(unsigned long long)) { + return PyLong_FromUnsignedLongLong((unsigned long long) value); } } else { if (sizeof(npy_int32) <= sizeof(long)) { return PyInt_FromLong((long) value); - } else if (sizeof(npy_int32) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); + } else if (sizeof(npy_int32) <= sizeof(long long)) { + return PyLong_FromLongLong((long long) value); } } { @@ -34721,21 +32702,21 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int32(npy_int32 value) { } static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint8(npy_uint8 value) { - const npy_uint8 neg_one = (npy_uint8) -1, const_zero = (npy_uint8) 0; + const npy_uint8 neg_one = (npy_uint8) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(npy_uint8) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(npy_uint8) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(npy_uint8) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + } else if (sizeof(npy_uint8) <= sizeof(unsigned long long)) { + return PyLong_FromUnsignedLongLong((unsigned long long) value); } } else { if (sizeof(npy_uint8) <= sizeof(long)) { return PyInt_FromLong((long) value); - } else if (sizeof(npy_uint8) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); + } else if (sizeof(npy_uint8) <= sizeof(long long)) { + return PyLong_FromLongLong((long long) value); } } { @@ -34747,7 +32728,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint8(npy_uint8 value) { } static CYTHON_INLINE npy_uint8 __Pyx_PyInt_As_npy_uint8(PyObject *x) { - const npy_uint8 neg_one = (npy_uint8) -1, const_zero = (npy_uint8) 0; + const npy_uint8 neg_one = (npy_uint8) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { @@ -34764,125 +32745,36 @@ static CYTHON_INLINE npy_uint8 __Pyx_PyInt_As_npy_uint8(PyObject *x) { #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (npy_uint8) 0; - case 1: __PYX_VERIFY_RETURN_INT(npy_uint8, digit, digits[0]) - case 2: - if (8 * sizeof(npy_uint8) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) >= 2 * PyLong_SHIFT) { - return (npy_uint8) (((((npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(npy_uint8) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) >= 3 * PyLong_SHIFT) { - return (npy_uint8) (((((((npy_uint8)digits[2]) << PyLong_SHIFT) | (npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(npy_uint8) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) >= 4 * PyLong_SHIFT) { - return (npy_uint8) (((((((((npy_uint8)digits[3]) << PyLong_SHIFT) | (npy_uint8)digits[2]) << PyLong_SHIFT) | (npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0])); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(npy_uint8, digit, ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif -#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (npy_uint8) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif if (sizeof(npy_uint8) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(npy_uint8, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(npy_uint8) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(npy_uint8, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(npy_uint8) <= sizeof(unsigned long long)) { + __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long long, PyLong_AsUnsignedLongLong(x)) } } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (npy_uint8) 0; - case -1: __PYX_VERIFY_RETURN_INT(npy_uint8, sdigit, -(sdigit) digits[0]) - case 1: __PYX_VERIFY_RETURN_INT(npy_uint8, digit, +digits[0]) - case -2: - if (8 * sizeof(npy_uint8) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) - 1 > 2 * PyLong_SHIFT) { - return (npy_uint8) (((npy_uint8)-1)*(((((npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(npy_uint8) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) - 1 > 2 * PyLong_SHIFT) { - return (npy_uint8) ((((((npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(npy_uint8) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) - 1 > 3 * PyLong_SHIFT) { - return (npy_uint8) (((npy_uint8)-1)*(((((((npy_uint8)digits[2]) << PyLong_SHIFT) | (npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(npy_uint8) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) - 1 > 3 * PyLong_SHIFT) { - return (npy_uint8) ((((((((npy_uint8)digits[2]) << PyLong_SHIFT) | (npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(npy_uint8) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) - 1 > 4 * PyLong_SHIFT) { - return (npy_uint8) (((npy_uint8)-1)*(((((((((npy_uint8)digits[3]) << PyLong_SHIFT) | (npy_uint8)digits[2]) << PyLong_SHIFT) | (npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(npy_uint8) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(npy_uint8, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(npy_uint8) - 1 > 4 * PyLong_SHIFT) { - return (npy_uint8) ((((((((((npy_uint8)digits[3]) << PyLong_SHIFT) | (npy_uint8)digits[2]) << PyLong_SHIFT) | (npy_uint8)digits[1]) << PyLong_SHIFT) | (npy_uint8)digits[0]))); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(npy_uint8, digit, +(((PyLongObject*)x)->ob_digit[0])); + case -1: __PYX_VERIFY_RETURN_INT(npy_uint8, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif if (sizeof(npy_uint8) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(npy_uint8, long, PyLong_AsLong(x)) - } else if (sizeof(npy_uint8) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(npy_uint8, PY_LONG_LONG, PyLong_AsLongLong(x)) + __PYX_VERIFY_RETURN_INT(npy_uint8, long, PyLong_AsLong(x)) + } else if (sizeof(npy_uint8) <= sizeof(long long)) { + __PYX_VERIFY_RETURN_INT(npy_uint8, long long, PyLong_AsLongLong(x)) } } { @@ -35232,32 +33124,6 @@ static PyObject* __Pyx_Method_ClassMethod(PyObject *method) { #endif #endif -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { - const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(enum NPY_TYPES) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); - } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); - } - } else { - if (sizeof(enum NPY_TYPES) <= sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES), - little, !is_unsigned); - } -} - static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice *mvs, char order, int ndim) @@ -35394,7 +33260,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig) } static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) { - const char neg_one = (char) -1, const_zero = (char) 0; + const char neg_one = (char) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { @@ -35411,125 +33277,36 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) { #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (char) 0; - case 1: __PYX_VERIFY_RETURN_INT(char, digit, digits[0]) - case 2: - if (8 * sizeof(char) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) >= 2 * PyLong_SHIFT) { - return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(char) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) >= 3 * PyLong_SHIFT) { - return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(char) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) >= 4 * PyLong_SHIFT) { - return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(char, digit, ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif -#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (char) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif if (sizeof(char) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + __PYX_VERIFY_RETURN_INT(char, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(char) <= sizeof(unsigned long long)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long long, PyLong_AsUnsignedLongLong(x)) } } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (char) 0; - case -1: __PYX_VERIFY_RETURN_INT(char, sdigit, -(sdigit) digits[0]) - case 1: __PYX_VERIFY_RETURN_INT(char, digit, +digits[0]) - case -2: - if (8 * sizeof(char) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { - return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(char) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { - return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { - return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(char) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { - return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) { - return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(char) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) { - return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(char, digit, +(((PyLongObject*)x)->ob_digit[0])); + case -1: __PYX_VERIFY_RETURN_INT(char, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif if (sizeof(char) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) - } else if (sizeof(char) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) + __PYX_VERIFY_RETURN_INT(char, long, PyLong_AsLong(x)) + } else if (sizeof(char) <= sizeof(long long)) { + __PYX_VERIFY_RETURN_INT(char, long long, PyLong_AsLongLong(x)) } } { @@ -35578,7 +33355,7 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) { } static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; + const long neg_one = (long) -1, const_zero = 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { @@ -35595,125 +33372,36 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif -#if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + __PYX_VERIFY_RETURN_INT(long, unsigned long, PyLong_AsUnsignedLong(x)) + } else if (sizeof(long) <= sizeof(unsigned long long)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long long, PyLong_AsUnsignedLongLong(x)) } } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) digits[0]) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; + case 0: return 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +(((PyLongObject*)x)->ob_digit[0])); + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) ((PyLongObject*)x)->ob_digit[0]); } + #endif #endif if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) + __PYX_VERIFY_RETURN_INT(long, long, PyLong_AsLong(x)) + } else if (sizeof(long) <= sizeof(long long)) { + __PYX_VERIFY_RETURN_INT(long, long long, PyLong_AsLongLong(x)) } } { @@ -35827,6 +33515,50 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_n return result; } +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(PyObject *obj) { + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, + &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(PyObject *obj) { + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT | PyBUF_WRITABLE), 2, + &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; @@ -35849,6 +33581,28 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_f return result; } +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj) { + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, + PyBUF_RECORDS, 1, + &__Pyx_TypeInfo_float, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(PyObject *obj) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; @@ -36049,7 +33803,7 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && @@ -36090,7 +33844,7 @@ static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_ #endif } else #endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) +#if !CYTHON_COMPILING_IN_PYPY if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); @@ -36120,7 +33874,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { #else if (PyLong_Check(x)) #endif - return __Pyx_NewRef(x); + return Py_INCREF(x), x; m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { @@ -36160,55 +33914,18 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } + if (likely(PyInt_CheckExact(b))) + return PyInt_AS_LONG(b); #endif if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } + #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 + #if CYTHON_USE_PYLONG_INTERNALS + switch (Py_SIZE(b)) { + case -1: return -(sdigit)((PyLongObject*)b)->ob_digit[0]; + case 0: return 0; + case 1: return ((PyLongObject*)b)->ob_digit[0]; + } + #endif #endif return PyLong_AsSsize_t(b); } diff --git a/pyFAI/ext/watershed.pyx b/pyFAI/ext/watershed.pyx index fa6e204e1..0399fac08 100644 --- a/pyFAI/ext/watershed.pyx +++ b/pyFAI/ext/watershed.pyx @@ -30,7 +30,7 @@ """ __author__ = "Jerome Kieffer" __contact__ = "Jerome.kieffer@esrf.fr" -__date__ = "27/10/2016" +__date__ = "01/12/2016" __status__ = "stable" __license__ = "MIT" @@ -80,11 +80,12 @@ cdef class Region: @cython.cdivision(True) @cython.boundscheck(False) @cython.wraparound(False) - def init_values(self, float[:] flat): + @cython.initializedcheck(False) + def init_values(self, float[::1] flat): """ Initialize the values : maxi, mini and pass both height and so on - @param flat: flat view on the data (intensity) - @return: True if there is a problem and the region should be removed + :param flat: flat view on the data (intensity) + :return: True if there is a problem and the region should be removed """ cdef: int i, k, imax, imin @@ -143,6 +144,7 @@ cdef class Region: @cython.cdivision(True) @cython.boundscheck(False) @cython.wraparound(False) + @cython.initializedcheck(False) def merge(self, Region other): """ merge 2 regions @@ -200,7 +202,7 @@ class InverseWatershed(object): def __init__(self, data not None, thres=1.0): """ - @param data: 2d image as numpy array + :param data: 2d image as numpy array """ assert data.ndim == 2, "data.ndim == 2" @@ -279,6 +281,7 @@ class InverseWatershed(object): @cython.cdivision(True) @cython.boundscheck(False) @cython.wraparound(False) + @cython.initializedcheck(False) def init_labels(self): cdef: int i, j, width = self.width, height = self.height, idx, res @@ -296,6 +299,7 @@ class InverseWatershed(object): @cython.cdivision(True) @cython.boundscheck(False) @cython.wraparound(False) + @cython.initializedcheck(False) def init_borders(self): cdef: int i, j, width = self.width, height = self.height, idx, res @@ -328,11 +332,12 @@ class InverseWatershed(object): @cython.cdivision(True) @cython.boundscheck(False) @cython.wraparound(False) + @cython.initializedcheck(False) def init_regions(self): cdef: int i, j, idx, res - numpy.int32_t[:, :] labels = self.labels - numpy.uint8_t[:, :] borders = self.borders + numpy.int32_t[:, ::1] labels = self.labels + numpy.uint8_t[:, ::1] borders = self.borders numpy.uint8_t neighb = 0 Region region dict regions = self.regions @@ -371,7 +376,7 @@ class InverseWatershed(object): def init_pass(self): cdef: int i, j, k, imax, imin - float[:] flat = self.data.ravel() + float[::1] flat = self.data.ravel() numpy.uint8_t neighb = 0 Region region dict regions = self.regions @@ -390,8 +395,8 @@ class InverseWatershed(object): numpy.uint8_t neighb = 0 float ref = 0.0 float[:, :] data = self.data - numpy.int32_t[:, :] labels = self.labels - numpy.uint8_t[:, :] borders = self.borders + numpy.int32_t[:, ::1] labels = self.labels + numpy.uint8_t[:, ::1] borders = self.borders int to_merge = -1 int width = self.width int cnt = 0 @@ -513,11 +518,11 @@ class InverseWatershed(object): def peaks_from_area(self, mask, Imin=None, keep=None, bint refine=True, float dmin=0.0, **kwarg): """ - @param mask: mask of data points valid - @param Imin: Minimum intensity for a peak - @param keep: Number of points to keep - @param refine: refine sub-pixel position - @param dmin: minimum distance from + :param mask: mask of data points valid + :param Imin: Minimum intensity for a peak + :param keep: Number of points to keep + :param refine: refine sub-pixel position + :param dmin: minimum distance from """ cdef: int i, j, l, x, y, width = self.width @@ -570,4 +575,5 @@ class InverseWatershed(object): if len(output_points) >= keep: return output_points output_points = (output_points + rej_lst)[:keep] - return output_points \ No newline at end of file + return output_points + \ No newline at end of file diff --git a/setup.py b/setup.py index c2d40867a..18a245b23 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ __contact__ = "Jerome.Kieffer@ESRF.eu" __license__ = "MIT" __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France" -__date__ = "10/11/2016" +__date__ = "01/12/2016" __status__ = "stable" install_warning = True @@ -201,6 +201,7 @@ def Extension(name, source=None, can_use_openmp=False, extra_sources=None, **kwa if USE_CYTHON: cext = cythonize([ext], + compiler_directives={'embedsignature': True}, force=(os.environ.get("FORCE_CYTHON") is "True"), compile_time_env={"HAVE_OPENMP": USE_OPENMP}) if cext: From 8eb221230dffae87644e45f02b4b2f2701350807 Mon Sep 17 00:00:00 2001 From: Jerome Kieffer Date: Thu, 1 Dec 2016 16:16:06 +0100 Subject: [PATCH 03/14] update the nb of citation --- doc/source/publications.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/source/publications.rst b/doc/source/publications.rst index 5467362ef..31e57c9ab 100644 --- a/doc/source/publications.rst +++ b/doc/source/publications.rst @@ -1,5 +1,5 @@ :Author: Jérôme Kieffer -:Date: 31/05/2015 +:Date: 01/12/2016 :Keywords: List of publications @@ -23,6 +23,7 @@ List of publication about pyFAI **Journal of Applied Crystallography** (2015) 48 (2), 510-519 The later publication provides a nice overview of the features introduced in version -0.11 and further developed in v0.12 and should be the one cited in publication using pyFAI. -There are already 55 publication referring to pyFAI, some of them in the most prestigious -scientific journals (Nature, PNAS, ...). \ No newline at end of file +0.11 and further developed in v0.12 and v0.13 and should be the one cited in +publications using pyFAI (or one of the graphical application on top of it). +There are already 72 publication referring to pyFAI, some of them in the most +prestigious scientific journals (Nature, PNAS, ...). \ No newline at end of file From 508880f1ded4358699cc524a5eed9fc729dcdf0a Mon Sep 17 00:00:00 2001 From: Valentin Valls Date: Thu, 1 Dec 2016 10:03:17 +0100 Subject: [PATCH 04/14] Use silx-kit in github URLs --- README.rst | 2 +- build-deb7.sh | 2 +- build-deb8.sh | 2 +- doc/build/_sources/operations/linux.txt | 6 +++--- doc/build/_sources/operations/macosx.txt | 2 +- doc/build/_sources/operations/windows.txt | 2 +- doc/build/_sources/project.txt | 2 +- doc/build/operations/linux.html | 6 +++--- doc/build/operations/macosx.html | 2 +- doc/build/operations/windows.html | 2 +- doc/build/project.html | 2 +- doc/source/operations/linux.rst | 6 +++--- doc/source/operations/macosx.rst | 2 +- doc/source/operations/windows.rst | 2 +- doc/source/project.rst | 6 +++--- pyFAI/__init__.py | 2 +- pyFAI/azimuthalIntegrator.py | 2 +- pyFAI/calibrant.py | 2 +- pyFAI/calibration.py | 2 +- pyFAI/decorators.py | 2 +- pyFAI/diffmap.py | 2 +- pyFAI/diffmap_widget.py | 2 +- pyFAI/distortion.py | 2 +- pyFAI/ext/_bispev.pyx | 2 +- pyFAI/ext/_blob.pyx | 2 +- pyFAI/ext/_convolution.pyx | 2 +- pyFAI/ext/_distortion.pyx | 2 +- pyFAI/ext/_geometry.pyx | 2 +- pyFAI/ext/_tree.pyx | 2 +- pyFAI/ext/bilinear.pxi | 2 +- pyFAI/ext/bilinear.pyx | 2 +- pyFAI/ext/crc32.pxd | 2 +- pyFAI/ext/fastcrc.pyx | 2 +- pyFAI/ext/histogram.pyx | 2 +- pyFAI/ext/histogram_nomp.pxi | 2 +- pyFAI/ext/histogram_omp.pxi | 2 +- pyFAI/ext/morphology.pyx | 2 +- pyFAI/ext/reconstruct.pyx | 2 +- pyFAI/ext/regrid_common.pxi | 2 +- pyFAI/ext/relabel.pyx | 2 +- pyFAI/ext/sparse_common.pxi | 2 +- pyFAI/ext/sparse_utils.pyx | 2 +- pyFAI/ext/splitBBoxCSR.pyx | 2 +- pyFAI/ext/splitBBoxLUT.c | 4 ++-- pyFAI/ext/splitBBoxLUT.pyx | 6 +++--- pyFAI/ext/splitPixel.pyx | 2 +- pyFAI/ext/splitPixelFull.pyx | 2 +- pyFAI/ext/splitPixelFullCSR.pyx | 2 +- pyFAI/ext/splitPixelFullLUT.pyx | 2 +- pyFAI/ext/splitPixelFullLUT_double.pyx | 2 +- pyFAI/geometryRefinement.py | 2 +- pyFAI/grid.py | 2 +- pyFAI/io.py | 2 +- pyFAI/multi_geometry.py | 2 +- pyFAI/ocl_azim_csr.py | 2 +- pyFAI/ocl_azim_csr_dis.py | 2 +- pyFAI/ocl_azim_lut.py | 2 +- pyFAI/ocl_sort.py | 2 +- pyFAI/peak_picker.py | 2 +- pyFAI/resources/openCL/for_eclipse.h | 2 +- pyFAI/resources/openCL/separate.cl | 2 +- pyFAI/test/__init__.py | 2 +- pyFAI/test/test_all.py | 2 +- pyFAI/test/test_average.py | 2 +- pyFAI/test/test_azimuthal_integrator.py | 2 +- pyFAI/test/test_bayes.py | 2 +- pyFAI/test/test_bilinear.py | 2 +- pyFAI/test/test_bispev.py | 2 +- pyFAI/test/test_blob_detection.py | 2 +- pyFAI/test/test_bug_regression.py | 2 +- pyFAI/test/test_calibrant.py | 2 +- pyFAI/test/test_convolution.py | 2 +- pyFAI/test/test_csr.py | 2 +- pyFAI/test/test_detector.py | 2 +- pyFAI/test/test_distortion.py | 2 +- pyFAI/test/test_dummy.py | 2 +- pyFAI/test/test_export.py | 2 +- pyFAI/test/test_flat.py | 2 +- pyFAI/test/test_geometry_refinement.py | 2 +- pyFAI/test/test_histogram.py | 2 +- pyFAI/test/test_integrate.py | 2 +- pyFAI/test/test_integrate_widget.py | 2 +- pyFAI/test/test_io.py | 2 +- pyFAI/test/test_marchingsquares.py | 2 +- pyFAI/test/test_mask.py | 2 +- pyFAI/test/test_ocl_sort.py | 2 +- pyFAI/test/test_openCL.py | 2 +- pyFAI/test/test_peak_picking.py | 2 +- pyFAI/test/test_polarization.py | 2 +- pyFAI/test/test_saxs.py | 2 +- pyFAI/test/test_scripts.py | 2 +- pyFAI/test/test_sparse.py | 2 +- pyFAI/test/test_split_pixel.py | 2 +- pyFAI/test/test_utils.py | 2 +- pyFAI/test/test_utils_shell.py | 2 +- pyFAI/test/test_utils_stringutil.py | 2 +- pyFAI/test/test_watershed.py | 2 +- pyFAI/test/test_worker.py | 2 +- pyFAI/tree.py | 2 +- pyFAI/utils/__init__.py | 2 +- pyFAI/utils/bayes.py | 2 +- pyFAI/utils/shell.py | 2 +- pyFAI/utils/stringutil.py | 2 +- sandbox/D2AM-calibrate | 2 +- sandbox/_distortion.pyx | 2 +- sandbox/_distortionCSR.pyx | 2 +- sandbox/blob.py | 2 +- sandbox/bug-1280.py | 2 +- sandbox/bug_ocl_cpu.py | 2 +- sandbox/bug_ocl_gpu.py | 2 +- sandbox/check_calib.py | 2 +- sandbox/chi_square.py | 2 +- sandbox/chi_square_ds8.py | 2 +- sandbox/debug_ocl_sort.py | 2 +- sandbox/debug_split_pixel.py | 2 +- sandbox/demo_bitonic.py | 2 +- sandbox/demo_difmap | 2 +- sandbox/mactrace.py | 2 +- sandbox/memleak.py | 2 +- sandbox/profileDistortionCSR.py | 2 +- sandbox/profile_csr_2d.py | 2 +- sandbox/profile_csr_all_platforms.py | 2 +- sandbox/profile_csr_fullsplit.py | 2 +- sandbox/profile_hdf5.py | 2 +- sandbox/profile_ocl_lut.py | 2 +- sandbox/profile_ocl_separate.py | 2 +- sandbox/splitBBoxLUT_vector.pyx | 4 ++-- sandbox/splitPixelFullLUT_b.pyx | 2 +- sandbox/splitPixelFullLUT_float32_b.pyx | 2 +- sandbox/splitpixel_vs_splitpixelfull.py | 2 +- sandbox/utilstest.py | 2 +- sandbox/xpad_CdTe.py | 2 +- scripts/eiger-mask | 2 +- setup.py | 6 +++--- 134 files changed, 148 insertions(+), 148 deletions(-) diff --git a/README.rst b/README.rst index 797534a9e..b4c7ee02c 100644 --- a/README.rst +++ b/README.rst @@ -38,7 +38,7 @@ Under UNIX, you may have to run the command via *sudo* to gain root access an perform a system wide installation. The latest release of pyFAI can be downloaded from -`Github `_ . +`Github `_ . Presently the source code has been distributed as a zip package. Download it one and unpack it:: diff --git a/build-deb7.sh b/build-deb7.sh index a1d1eaf01..d1df71a39 100755 --- a/build-deb7.sh +++ b/build-deb7.sh @@ -1,7 +1,7 @@ #!/bin/sh # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/build-deb8.sh b/build-deb8.sh index 72c678480..3f5ab4fe5 100755 --- a/build-deb8.sh +++ b/build-deb8.sh @@ -1,7 +1,7 @@ #!/bin/sh # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/doc/build/_sources/operations/linux.txt b/doc/build/_sources/operations/linux.txt index 63111c642..848330de8 100644 --- a/doc/build/_sources/operations/linux.txt +++ b/doc/build/_sources/operations/linux.txt @@ -34,7 +34,7 @@ You will be prompted for your password to gain root access in order to be able t .. code:: sudo apt-get install python-stdeb cython python-fabio - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master ./build-deb7.sh @@ -78,7 +78,7 @@ One can also built from sources: python3-matplotlib-dbg python3-numpy python3-numpy-dbg python3-pyqt4 python3-pyqt4-dbg \ python3-scipy python3-scipy-dbg python3-sphinx python3-sphinxcontrib.programoutput \ python3-tk python3-tk-dbg - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master ./build-deb8.sh @@ -107,7 +107,7 @@ Or you can install pyFAI from the sources: .. code:: - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master python setup.py build test diff --git a/doc/build/_sources/operations/macosx.txt b/doc/build/_sources/operations/macosx.txt index 7f7ed748c..6a930fc69 100644 --- a/doc/build/_sources/operations/macosx.txt +++ b/doc/build/_sources/operations/macosx.txt @@ -36,7 +36,7 @@ Get the sources from Github: .. code:: - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master diff --git a/doc/build/_sources/operations/windows.txt b/doc/build/_sources/operations/windows.txt index bff2c0a74..65cf135ad 100644 --- a/doc/build/_sources/operations/windows.txt +++ b/doc/build/_sources/operations/windows.txt @@ -166,7 +166,7 @@ The latest stable release of pyFAI should also be PIP-installable (starting at v Install pyFAI from sources -------------------------- -The sources of pyFAI are available at https://github.com/pyFAI/pyFAI/releases +The sources of pyFAI are available at https://github.com/silx-kit/pyFAI/releases the development is performed on https://github.com/kif/pyFAI In addition to the Python interpreter, you will need *the* C compiler compatible diff --git a/doc/build/_sources/project.txt b/doc/build/_sources/project.txt index 46f8b6540..e8af52a1d 100644 --- a/doc/build/_sources/project.txt +++ b/doc/build/_sources/project.txt @@ -37,7 +37,7 @@ Repository: ----------- The project is hosted on GitHub: -https://github.com/pyFAI/pyFAI +https://github.com/silx-kit/pyFAI Which provides the `issue tracker `_ in addition to Git hosting. diff --git a/doc/build/operations/linux.html b/doc/build/operations/linux.html index 9c9719e42..0ddaa923a 100644 --- a/doc/build/operations/linux.html +++ b/doc/build/operations/linux.html @@ -76,7 +76,7 @@

Debian7 and Ubuntu 12.04

Or you can install pyFAI from the sources:

-
wget https://github.com/pyFAI/pyFAI/archive/master.zip
+
wget https://github.com/silx-kit/pyFAI/archive/master.zip
 unzip master.zip
 cd pyFAI-master
 python setup.py build test
diff --git a/doc/build/operations/macosx.html b/doc/build/operations/macosx.html
index f58524297..7a7f0eb70 100644
--- a/doc/build/operations/macosx.html
+++ b/doc/build/operations/macosx.html
@@ -78,7 +78,7 @@ 

Using PIP

Installation from sources

Get the sources from Github:

-
wget https://github.com/pyFAI/pyFAI/archive/master.zip
+
wget https://github.com/silx-kit/pyFAI/archive/master.zip
 unzip master.zip
 cd pyFAI-master
 
diff --git a/doc/build/operations/windows.html b/doc/build/operations/windows.html index 075a47e20..615fc4763 100644 --- a/doc/build/operations/windows.html +++ b/doc/build/operations/windows.html @@ -188,7 +188,7 @@

Install pyFAI via PIP

Install pyFAI from sources

-

The sources of pyFAI are available at https://github.com/pyFAI/pyFAI/releases +

The sources of pyFAI are available at https://github.com/silx-kit/pyFAI/releases the development is performed on https://github.com/kif/pyFAI

In addition to the Python interpreter, you will need the C compiler compatible with your Python interpreter, for example you can find the one for Python2.7 at: diff --git a/doc/build/project.html b/doc/build/project.html index 49c28e460..066656f0f 100644 --- a/doc/build/project.html +++ b/doc/build/project.html @@ -83,7 +83,7 @@

Programming language

Repository:

The project is hosted on GitHub: -https://github.com/pyFAI/pyFAI

+https://github.com/silx-kit/pyFAI

Which provides the issue tracker in addition to Git hosting. Collaboration is done via Pull-Requests in github’s web interface:

diff --git a/doc/source/operations/linux.rst b/doc/source/operations/linux.rst index 63111c642..848330de8 100644 --- a/doc/source/operations/linux.rst +++ b/doc/source/operations/linux.rst @@ -34,7 +34,7 @@ You will be prompted for your password to gain root access in order to be able t .. code:: sudo apt-get install python-stdeb cython python-fabio - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master ./build-deb7.sh @@ -78,7 +78,7 @@ One can also built from sources: python3-matplotlib-dbg python3-numpy python3-numpy-dbg python3-pyqt4 python3-pyqt4-dbg \ python3-scipy python3-scipy-dbg python3-sphinx python3-sphinxcontrib.programoutput \ python3-tk python3-tk-dbg - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master ./build-deb8.sh @@ -107,7 +107,7 @@ Or you can install pyFAI from the sources: .. code:: - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master python setup.py build test diff --git a/doc/source/operations/macosx.rst b/doc/source/operations/macosx.rst index 7f7ed748c..6a930fc69 100644 --- a/doc/source/operations/macosx.rst +++ b/doc/source/operations/macosx.rst @@ -36,7 +36,7 @@ Get the sources from Github: .. code:: - wget https://github.com/pyFAI/pyFAI/archive/master.zip + wget https://github.com/silx-kit/pyFAI/archive/master.zip unzip master.zip cd pyFAI-master diff --git a/doc/source/operations/windows.rst b/doc/source/operations/windows.rst index b2b0d39d7..6ad17e2d6 100644 --- a/doc/source/operations/windows.rst +++ b/doc/source/operations/windows.rst @@ -166,7 +166,7 @@ The latest stable release of pyFAI should also be PIP-installable (starting at v Install pyFAI from sources -------------------------- -The sources of pyFAI are available at https://github.com/pyFAI/pyFAI/releases +The sources of pyFAI are available at https://github.com/silx-kit/pyFAI/releases the development is performed on https://github.com/kif/pyFAI In addition to the Python interpreter, you will need *the* C compiler compatible diff --git a/doc/source/project.rst b/doc/source/project.rst index f2b8eb95b..a9a5d21c7 100644 --- a/doc/source/project.rst +++ b/doc/source/project.rst @@ -37,13 +37,13 @@ Repository: ----------- The project is hosted on GitHub: -https://github.com/pyFAI/pyFAI +https://github.com/silx-kit/pyFAI -Which provides the `issue tracker `_ in +Which provides the `issue tracker `_ in addition to Git hosting. Collaboration is done via Pull-Requests in github's web interface: -Everybody is welcome to `fork the project `_ +Everybody is welcome to `fork the project `_ and adapt it to his own needs: CEA-Saclay, Synchrotrons Soleil, Desy and APS have already done so. Collaboration is encouraged and new developments can be submitted and merged diff --git a/pyFAI/__init__.py b/pyFAI/__init__.py index 8059bf583..999e935fb 100644 --- a/pyFAI/__init__.py +++ b/pyFAI/__init__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/azimuthalIntegrator.py b/pyFAI/azimuthalIntegrator.py index ffe8adefc..5e91d381e 100644 --- a/pyFAI/azimuthalIntegrator.py +++ b/pyFAI/azimuthalIntegrator.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/calibrant.py b/pyFAI/calibrant.py index 7645e6c02..ff90cc636 100644 --- a/pyFAI/calibrant.py +++ b/pyFAI/calibrant.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/calibration.py b/pyFAI/calibration.py index 28ceb01ea..6718eea0a 100644 --- a/pyFAI/calibration.py +++ b/pyFAI/calibration.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/decorators.py b/pyFAI/decorators.py index 65539a5c6..b2f330398 100644 --- a/pyFAI/decorators.py +++ b/pyFAI/decorators.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/diffmap.py b/pyFAI/diffmap.py index cb14504f0..0c4645ec0 100644 --- a/pyFAI/diffmap.py +++ b/pyFAI/diffmap.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/diffmap_widget.py b/pyFAI/diffmap_widget.py index 8d67456a0..a53b6ebaf 100644 --- a/pyFAI/diffmap_widget.py +++ b/pyFAI/diffmap_widget.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/distortion.py b/pyFAI/distortion.py index 904f12319..9df93ced4 100644 --- a/pyFAI/distortion.py +++ b/pyFAI/distortion.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright 2013-2016 (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/_bispev.pyx b/pyFAI/ext/_bispev.pyx index 942f0c74c..9a3ac6ea1 100644 --- a/pyFAI/ext/_bispev.pyx +++ b/pyFAI/ext/_bispev.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/_blob.pyx b/pyFAI/ext/_blob.pyx index 5319bbf25..fa17539cb 100644 --- a/pyFAI/ext/_blob.pyx +++ b/pyFAI/ext/_blob.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/_convolution.pyx b/pyFAI/ext/_convolution.pyx index e4d71c707..877a33a00 100644 --- a/pyFAI/ext/_convolution.pyx +++ b/pyFAI/ext/_convolution.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/_distortion.pyx b/pyFAI/ext/_distortion.pyx index 48fd0b150..5de3cae9b 100644 --- a/pyFAI/ext/_distortion.pyx +++ b/pyFAI/ext/_distortion.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2013-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/_geometry.pyx b/pyFAI/ext/_geometry.pyx index 8c88445ed..e309bc4f7 100644 --- a/pyFAI/ext/_geometry.pyx +++ b/pyFAI/ext/_geometry.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/_tree.pyx b/pyFAI/ext/_tree.pyx index 038fdd57a..cc2d6808f 100644 --- a/pyFAI/ext/_tree.pyx +++ b/pyFAI/ext/_tree.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/bilinear.pxi b/pyFAI/ext/bilinear.pxi index f41222129..606ad3d08 100644 --- a/pyFAI/ext/bilinear.pxi +++ b/pyFAI/ext/bilinear.pxi @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/bilinear.pyx b/pyFAI/ext/bilinear.pyx index 38474e5e3..64a1fac7b 100644 --- a/pyFAI/ext/bilinear.pyx +++ b/pyFAI/ext/bilinear.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/crc32.pxd b/pyFAI/ext/crc32.pxd index 32f9b1fb8..18ce01e33 100644 --- a/pyFAI/ext/crc32.pxd +++ b/pyFAI/ext/crc32.pxd @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/pyFAI/ext/fastcrc.pyx b/pyFAI/ext/fastcrc.pyx index c398e29d3..de895d651 100644 --- a/pyFAI/ext/fastcrc.pyx +++ b/pyFAI/ext/fastcrc.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/pyFAI/ext/histogram.pyx b/pyFAI/ext/histogram.pyx index 8412d30ae..473910b79 100644 --- a/pyFAI/ext/histogram.pyx +++ b/pyFAI/ext/histogram.pyx @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France diff --git a/pyFAI/ext/histogram_nomp.pxi b/pyFAI/ext/histogram_nomp.pxi index b4984b2ef..9ec56ab60 100644 --- a/pyFAI/ext/histogram_nomp.pxi +++ b/pyFAI/ext/histogram_nomp.pxi @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France diff --git a/pyFAI/ext/histogram_omp.pxi b/pyFAI/ext/histogram_omp.pxi index 04c811d07..ea95070c9 100644 --- a/pyFAI/ext/histogram_omp.pxi +++ b/pyFAI/ext/histogram_omp.pxi @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France diff --git a/pyFAI/ext/morphology.pyx b/pyFAI/ext/morphology.pyx index f037e93b3..1d37f747e 100644 --- a/pyFAI/ext/morphology.pyx +++ b/pyFAI/ext/morphology.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/reconstruct.pyx b/pyFAI/ext/reconstruct.pyx index 6c930d7db..bb9a24060 100644 --- a/pyFAI/ext/reconstruct.pyx +++ b/pyFAI/ext/reconstruct.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2014-2016 European Synchrotron Radiation Facility, France # diff --git a/pyFAI/ext/regrid_common.pxi b/pyFAI/ext/regrid_common.pxi index 7f4e24951..cd4204300 100644 --- a/pyFAI/ext/regrid_common.pxi +++ b/pyFAI/ext/regrid_common.pxi @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/relabel.pyx b/pyFAI/ext/relabel.pyx index 3be9573f9..13bd8c4e3 100644 --- a/pyFAI/ext/relabel.pyx +++ b/pyFAI/ext/relabel.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2012-2016 European Synchrotron Radiation Facility, France # diff --git a/pyFAI/ext/sparse_common.pxi b/pyFAI/ext/sparse_common.pxi index 0e04f8ad1..b52ea96e2 100644 --- a/pyFAI/ext/sparse_common.pxi +++ b/pyFAI/ext/sparse_common.pxi @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/sparse_utils.pyx b/pyFAI/ext/sparse_utils.pyx index 045c65003..e13f51d64 100644 --- a/pyFAI/ext/sparse_utils.pyx +++ b/pyFAI/ext/sparse_utils.pyx @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015-2016 European Synchrotron Radiation Facility, France # diff --git a/pyFAI/ext/splitBBoxCSR.pyx b/pyFAI/ext/splitBBoxCSR.pyx index b3810e39a..5f2a498cc 100644 --- a/pyFAI/ext/splitBBoxCSR.pyx +++ b/pyFAI/ext/splitBBoxCSR.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2012-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/splitBBoxLUT.c b/pyFAI/ext/splitBBoxLUT.c index b73b8b6ec..24d8346bd 100644 --- a/pyFAI/ext/splitBBoxLUT.c +++ b/pyFAI/ext/splitBBoxLUT.c @@ -7493,7 +7493,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C __pyx_t_3 = 0; /* "pyFAI/ext/splitBBoxLUT.pyx":424 - * #Ugly hack against bug #89: https://github.com/pyFAI/pyFAI/issues/89 + * #Ugly hack against bug #89: https://github.com/silx-kit/pyFAI/issues/89 * int rc_before, rc_after * rc_before = sys.getrefcount(self._lut) # <<<<<<<<<<<<<< * cdef lut_point[:, :] lut = self._lut @@ -10121,7 +10121,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k __pyx_t_3 = 0; /* "pyFAI/ext/splitBBoxLUT.pyx":581 - * #Ugly hack against bug #89: https://github.com/pyFAI/pyFAI/issues/89 + * #Ugly hack against bug #89: https://github.com/silx-kit/pyFAI/issues/89 * cdef int rc_before, rc_after * rc_before = sys.getrefcount(self._lut) # <<<<<<<<<<<<<< * cdef lut_point[:,:] lut = self._lut diff --git a/pyFAI/ext/splitBBoxLUT.pyx b/pyFAI/ext/splitBBoxLUT.pyx index 743089927..e5993ab99 100644 --- a/pyFAI/ext/splitBBoxLUT.pyx +++ b/pyFAI/ext/splitBBoxLUT.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2012-2016 European Synchrotron Radiation Facility, Grenoble, France # @@ -419,7 +419,7 @@ class HistoBBox1d(object): numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(self.bins, dtype=numpy.float32) float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization - #Ugly hack against bug #89: https://github.com/pyFAI/pyFAI/issues/89 + #Ugly hack against bug #89: https://github.com/silx-kit/pyFAI/issues/89 int rc_before, rc_after rc_before = sys.getrefcount(self._lut) cdef lut_point[:, :] lut = self._lut @@ -576,7 +576,7 @@ class HistoBBox1d(object): float c_data, y_data, t_data float c_count, y_count, t_count - #Ugly hack against bug #89: https://github.com/pyFAI/pyFAI/issues/89 + #Ugly hack against bug #89: https://github.com/silx-kit/pyFAI/issues/89 cdef int rc_before, rc_after rc_before = sys.getrefcount(self._lut) cdef lut_point[:,:] lut = self._lut diff --git a/pyFAI/ext/splitPixel.pyx b/pyFAI/ext/splitPixel.pyx index 6e67f8fac..0c36f7481 100644 --- a/pyFAI/ext/splitPixel.pyx +++ b/pyFAI/ext/splitPixel.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2012-2016 European Synchrotron Radiation Facility, France # diff --git a/pyFAI/ext/splitPixelFull.pyx b/pyFAI/ext/splitPixelFull.pyx index e124588bd..bdec43ed1 100644 --- a/pyFAI/ext/splitPixelFull.pyx +++ b/pyFAI/ext/splitPixelFull.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2014-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/splitPixelFullCSR.pyx b/pyFAI/ext/splitPixelFullCSR.pyx index 481dae207..7de3ad186 100644 --- a/pyFAI/ext/splitPixelFullCSR.pyx +++ b/pyFAI/ext/splitPixelFullCSR.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2014-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/splitPixelFullLUT.pyx b/pyFAI/ext/splitPixelFullLUT.pyx index c89ff3269..a7b60e885 100644 --- a/pyFAI/ext/splitPixelFullLUT.pyx +++ b/pyFAI/ext/splitPixelFullLUT.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2014-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ext/splitPixelFullLUT_double.pyx b/pyFAI/ext/splitPixelFullLUT_double.pyx index 25e92be58..5d439f30f 100644 --- a/pyFAI/ext/splitPixelFullLUT_double.pyx +++ b/pyFAI/ext/splitPixelFullLUT_double.pyx @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2014-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/geometryRefinement.py b/pyFAI/geometryRefinement.py index 71c362214..a7f3bd702 100644 --- a/pyFAI/geometryRefinement.py +++ b/pyFAI/geometryRefinement.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/grid.py b/pyFAI/grid.py index d20d2fd57..d798f90ee 100644 --- a/pyFAI/grid.py +++ b/pyFAI/grid.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/io.py b/pyFAI/io.py index 0329ded33..69849c4ec 100644 --- a/pyFAI/io.py +++ b/pyFAI/io.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/multi_geometry.py b/pyFAI/multi_geometry.py index 9c1733f64..8659abaa6 100644 --- a/pyFAI/multi_geometry.py +++ b/pyFAI/multi_geometry.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015-2016 European Synchrotron Radiation Facility, Grenoble, France # Copyright (C) 2016 Synchrotron SOLEIL - L'Orme des Merisiers Saint-Aubin diff --git a/pyFAI/ocl_azim_csr.py b/pyFAI/ocl_azim_csr.py index 8a5e862d0..b2eda30c0 100644 --- a/pyFAI/ocl_azim_csr.py +++ b/pyFAI/ocl_azim_csr.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI +# https://github.com/silx-kit # # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France diff --git a/pyFAI/ocl_azim_csr_dis.py b/pyFAI/ocl_azim_csr_dis.py index 893f6f346..e8e200ff3 100644 --- a/pyFAI/ocl_azim_csr_dis.py +++ b/pyFAI/ocl_azim_csr_dis.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI +# https://github.com/silx-kit # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ocl_azim_lut.py b/pyFAI/ocl_azim_lut.py index 327418ea5..ffcbff157 100644 --- a/pyFAI/ocl_azim_lut.py +++ b/pyFAI/ocl_azim_lut.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI +# https://github.com/silx-kit # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/ocl_sort.py b/pyFAI/ocl_sort.py index d23280fdc..b9cb933e8 100644 --- a/pyFAI/ocl_sort.py +++ b/pyFAI/ocl_sort.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/peak_picker.py b/pyFAI/peak_picker.py index 19997fc3e..86311f2e8 100644 --- a/pyFAI/peak_picker.py +++ b/pyFAI/peak_picker.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/resources/openCL/for_eclipse.h b/pyFAI/resources/openCL/for_eclipse.h index ef85400ff..f8abdb8f7 100644 --- a/pyFAI/resources/openCL/for_eclipse.h +++ b/pyFAI/resources/openCL/for_eclipse.h @@ -1,6 +1,6 @@ /* * Project: Azimuthal integration - * https://github.com/pyFAI/pyFAI + * https://github.com/silx-kit/pyFAI * * Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France * diff --git a/pyFAI/resources/openCL/separate.cl b/pyFAI/resources/openCL/separate.cl index 10c892b6f..50e855ccf 100644 --- a/pyFAI/resources/openCL/separate.cl +++ b/pyFAI/resources/openCL/separate.cl @@ -1,6 +1,6 @@ /* * Project: Azimuthal integration - * https://github.com/pyFAI/pyFAI + * https://github.com/silx-kit/pyFAI * * Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France * diff --git a/pyFAI/test/__init__.py b/pyFAI/test/__init__.py index a965893eb..e58a4b405 100644 --- a/pyFAI/test/__init__.py +++ b/pyFAI/test/__init__.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_all.py b/pyFAI/test/test_all.py index b5a8ae681..14b080f0d 100644 --- a/pyFAI/test/test_all.py +++ b/pyFAI/test/test_all.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_average.py b/pyFAI/test/test_average.py index 0e7c5ebd3..2cd131712 100644 --- a/pyFAI/test/test_average.py +++ b/pyFAI/test/test_average.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_azimuthal_integrator.py b/pyFAI/test/test_azimuthal_integrator.py index 3829e9d08..ddd79676e 100644 --- a/pyFAI/test/test_azimuthal_integrator.py +++ b/pyFAI/test/test_azimuthal_integrator.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_bayes.py b/pyFAI/test/test_bayes.py index 5b469ec69..8b390d555 100644 --- a/pyFAI/test/test_bayes.py +++ b/pyFAI/test/test_bayes.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_bilinear.py b/pyFAI/test/test_bilinear.py index 17095247f..4aa2b3779 100644 --- a/pyFAI/test/test_bilinear.py +++ b/pyFAI/test/test_bilinear.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_bispev.py b/pyFAI/test/test_bispev.py index 95a7d615b..9d94abd7f 100644 --- a/pyFAI/test/test_bispev.py +++ b/pyFAI/test/test_bispev.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_blob_detection.py b/pyFAI/test/test_blob_detection.py index af3fe203f..b16ac2b5f 100644 --- a/pyFAI/test/test_blob_detection.py +++ b/pyFAI/test/test_blob_detection.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_bug_regression.py b/pyFAI/test/test_bug_regression.py index 9f0f6071e..b57182f10 100644 --- a/pyFAI/test/test_bug_regression.py +++ b/pyFAI/test/test_bug_regression.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_calibrant.py b/pyFAI/test/test_calibrant.py index 9f398fa81..792a01cea 100644 --- a/pyFAI/test/test_calibrant.py +++ b/pyFAI/test/test_calibrant.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_convolution.py b/pyFAI/test/test_convolution.py index 86ff337b6..c740ca09d 100644 --- a/pyFAI/test/test_convolution.py +++ b/pyFAI/test/test_convolution.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_csr.py b/pyFAI/test/test_csr.py index afbf0f0f4..abb57ae43 100644 --- a/pyFAI/test/test_csr.py +++ b/pyFAI/test/test_csr.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_detector.py b/pyFAI/test/test_detector.py index 9026ad48f..1f10d7b56 100644 --- a/pyFAI/test/test_detector.py +++ b/pyFAI/test/test_detector.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_distortion.py b/pyFAI/test/test_distortion.py index 2752d3f45..179ebf27d 100644 --- a/pyFAI/test/test_distortion.py +++ b/pyFAI/test/test_distortion.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2013-2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_dummy.py b/pyFAI/test/test_dummy.py index 9ebeee7ad..8dea85d2f 100644 --- a/pyFAI/test/test_dummy.py +++ b/pyFAI/test/test_dummy.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_export.py b/pyFAI/test/test_export.py index 5e8e69099..763269c82 100644 --- a/pyFAI/test/test_export.py +++ b/pyFAI/test/test_export.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_flat.py b/pyFAI/test/test_flat.py index 00c6ae9e4..dc2e79c3b 100644 --- a/pyFAI/test/test_flat.py +++ b/pyFAI/test/test_flat.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_geometry_refinement.py b/pyFAI/test/test_geometry_refinement.py index 32b9e2bfa..cf9e37ce8 100644 --- a/pyFAI/test/test_geometry_refinement.py +++ b/pyFAI/test/test_geometry_refinement.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_histogram.py b/pyFAI/test/test_histogram.py index a0974f89c..ade05a2c3 100644 --- a/pyFAI/test/test_histogram.py +++ b/pyFAI/test/test_histogram.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_integrate.py b/pyFAI/test/test_integrate.py index a7cc5b06e..23d4fb917 100644 --- a/pyFAI/test/test_integrate.py +++ b/pyFAI/test/test_integrate.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_integrate_widget.py b/pyFAI/test/test_integrate_widget.py index c602aea80..2e29e2da6 100644 --- a/pyFAI/test/test_integrate_widget.py +++ b/pyFAI/test/test_integrate_widget.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_io.py b/pyFAI/test/test_io.py index f9a935d68..8bf0fcd9f 100644 --- a/pyFAI/test/test_io.py +++ b/pyFAI/test/test_io.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_marchingsquares.py b/pyFAI/test/test_marchingsquares.py index 0f2f4a427..0209cfb86 100644 --- a/pyFAI/test/test_marchingsquares.py +++ b/pyFAI/test/test_marchingsquares.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_mask.py b/pyFAI/test/test_mask.py index 47f3c4a56..98c789ccd 100644 --- a/pyFAI/test/test_mask.py +++ b/pyFAI/test/test_mask.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_ocl_sort.py b/pyFAI/test/test_ocl_sort.py index a71eedadb..4a629119f 100644 --- a/pyFAI/test/test_ocl_sort.py +++ b/pyFAI/test/test_ocl_sort.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_openCL.py b/pyFAI/test/test_openCL.py index abac875e0..76c2ab1eb 100644 --- a/pyFAI/test/test_openCL.py +++ b/pyFAI/test/test_openCL.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_peak_picking.py b/pyFAI/test/test_peak_picking.py index 6d2732b4d..c0411b873 100644 --- a/pyFAI/test/test_peak_picking.py +++ b/pyFAI/test/test_peak_picking.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_polarization.py b/pyFAI/test/test_polarization.py index d63aeb750..3f05a6b38 100644 --- a/pyFAI/test/test_polarization.py +++ b/pyFAI/test/test_polarization.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_saxs.py b/pyFAI/test/test_saxs.py index 8672a05a8..3e09301a8 100644 --- a/pyFAI/test/test_saxs.py +++ b/pyFAI/test/test_saxs.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_scripts.py b/pyFAI/test/test_scripts.py index 52cc84296..2a1ae321d 100644 --- a/pyFAI/test/test_scripts.py +++ b/pyFAI/test/test_scripts.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_sparse.py b/pyFAI/test/test_sparse.py index b95274ad4..d9d118426 100644 --- a/pyFAI/test/test_sparse.py +++ b/pyFAI/test/test_sparse.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_split_pixel.py b/pyFAI/test/test_split_pixel.py index 8aa588926..2c5b97901 100644 --- a/pyFAI/test/test_split_pixel.py +++ b/pyFAI/test/test_split_pixel.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_utils.py b/pyFAI/test/test_utils.py index 28e63a16e..b4600b15d 100644 --- a/pyFAI/test/test_utils.py +++ b/pyFAI/test/test_utils.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_utils_shell.py b/pyFAI/test/test_utils_shell.py index 9e39e7a55..99047986e 100644 --- a/pyFAI/test/test_utils_shell.py +++ b/pyFAI/test/test_utils_shell.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_utils_stringutil.py b/pyFAI/test/test_utils_stringutil.py index 0c964fa4f..e5b0938cb 100644 --- a/pyFAI/test/test_utils_stringutil.py +++ b/pyFAI/test/test_utils_stringutil.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_watershed.py b/pyFAI/test/test_watershed.py index 3a93292b3..4881aaf55 100644 --- a/pyFAI/test/test_watershed.py +++ b/pyFAI/test/test_watershed.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/test/test_worker.py b/pyFAI/test/test_worker.py index bf138bbc4..6eaf560db 100644 --- a/pyFAI/test/test_worker.py +++ b/pyFAI/test/test_worker.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/tree.py b/pyFAI/tree.py index 7dc733ff8..f32a009b5 100644 --- a/pyFAI/tree.py +++ b/pyFAI/tree.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/utils/__init__.py b/pyFAI/utils/__init__.py index 8969a7e8e..8b60c6abb 100644 --- a/pyFAI/utils/__init__.py +++ b/pyFAI/utils/__init__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/utils/bayes.py b/pyFAI/utils/bayes.py index fb01062f0..c543062fb 100644 --- a/pyFAI/utils/bayes.py +++ b/pyFAI/utils/bayes.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2016 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/utils/shell.py b/pyFAI/utils/shell.py index 563fd0004..dc880edee 100644 --- a/pyFAI/utils/shell.py +++ b/pyFAI/utils/shell.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/pyFAI/utils/stringutil.py b/pyFAI/utils/stringutil.py index a3668ee63..70b1a1360 100644 --- a/pyFAI/utils/stringutil.py +++ b/pyFAI/utils/stringutil.py @@ -1,7 +1,7 @@ # coding: utf-8 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/D2AM-calibrate b/sandbox/D2AM-calibrate index 023705e2b..428ad731f 100755 --- a/sandbox/D2AM-calibrate +++ b/sandbox/D2AM-calibrate @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/_distortion.pyx b/sandbox/_distortion.pyx index 5cba6921d..c737e2cb9 100644 --- a/sandbox/_distortion.pyx +++ b/sandbox/_distortion.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/_distortionCSR.pyx b/sandbox/_distortionCSR.pyx index 262de57f9..cd4189369 100644 --- a/sandbox/_distortionCSR.pyx +++ b/sandbox/_distortionCSR.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/blob.py b/sandbox/blob.py index bce2ba70c..1f742f41e 100644 --- a/sandbox/blob.py +++ b/sandbox/blob.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/bug-1280.py b/sandbox/bug-1280.py index 1e6e48d22..188c7d0f2 100755 --- a/sandbox/bug-1280.py +++ b/sandbox/bug-1280.py @@ -3,7 +3,7 @@ # author: Jérôme Kieffer # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/sandbox/bug_ocl_cpu.py b/sandbox/bug_ocl_cpu.py index 8e4d1a5b1..e24013025 100755 --- a/sandbox/bug_ocl_cpu.py +++ b/sandbox/bug_ocl_cpu.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/bug_ocl_gpu.py b/sandbox/bug_ocl_gpu.py index 88577bdd6..9d03a527c 100644 --- a/sandbox/bug_ocl_gpu.py +++ b/sandbox/bug_ocl_gpu.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/check_calib.py b/sandbox/check_calib.py index b7f1a7d6c..32ec5fcee 100755 --- a/sandbox/check_calib.py +++ b/sandbox/check_calib.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/chi_square.py b/sandbox/chi_square.py index e1e1bc9c4..4f1d0d80c 100755 --- a/sandbox/chi_square.py +++ b/sandbox/chi_square.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/chi_square_ds8.py b/sandbox/chi_square_ds8.py index a4ce4b139..033a7901f 100755 --- a/sandbox/chi_square_ds8.py +++ b/sandbox/chi_square_ds8.py @@ -3,7 +3,7 @@ # author: Jérôme Kieffer # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/sandbox/debug_ocl_sort.py b/sandbox/debug_ocl_sort.py index 56a0f6f1a..fc1b4a78c 100644 --- a/sandbox/debug_ocl_sort.py +++ b/sandbox/debug_ocl_sort.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/debug_split_pixel.py b/sandbox/debug_split_pixel.py index 93ded712f..926262a8b 100644 --- a/sandbox/debug_split_pixel.py +++ b/sandbox/debug_split_pixel.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/demo_bitonic.py b/sandbox/demo_bitonic.py index 5f1c4a9ea..a0c961654 100644 --- a/sandbox/demo_bitonic.py +++ b/sandbox/demo_bitonic.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/demo_difmap b/sandbox/demo_difmap index 93767e745..e6f786bfd 100755 --- a/sandbox/demo_difmap +++ b/sandbox/demo_difmap @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/mactrace.py b/sandbox/mactrace.py index 6e3948395..709890dac 100644 --- a/sandbox/mactrace.py +++ b/sandbox/mactrace.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/memleak.py b/sandbox/memleak.py index c85729cb3..9bff75a1f 100644 --- a/sandbox/memleak.py +++ b/sandbox/memleak.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/profileDistortionCSR.py b/sandbox/profileDistortionCSR.py index 0d8784658..e5891a8f7 100644 --- a/sandbox/profileDistortionCSR.py +++ b/sandbox/profileDistortionCSR.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/profile_csr_2d.py b/sandbox/profile_csr_2d.py index 8cddcc014..6fe696821 100644 --- a/sandbox/profile_csr_2d.py +++ b/sandbox/profile_csr_2d.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/profile_csr_all_platforms.py b/sandbox/profile_csr_all_platforms.py index 03cd8c13e..e3365cd2f 100644 --- a/sandbox/profile_csr_all_platforms.py +++ b/sandbox/profile_csr_all_platforms.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/profile_csr_fullsplit.py b/sandbox/profile_csr_fullsplit.py index 8ec95a559..7d0eec80e 100644 --- a/sandbox/profile_csr_fullsplit.py +++ b/sandbox/profile_csr_fullsplit.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/profile_hdf5.py b/sandbox/profile_hdf5.py index b3a76d8b9..80ea77407 100755 --- a/sandbox/profile_hdf5.py +++ b/sandbox/profile_hdf5.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/profile_ocl_lut.py b/sandbox/profile_ocl_lut.py index eb896e010..596221ae8 100755 --- a/sandbox/profile_ocl_lut.py +++ b/sandbox/profile_ocl_lut.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/profile_ocl_separate.py b/sandbox/profile_ocl_separate.py index 84902bab2..834b0646d 100644 --- a/sandbox/profile_ocl_separate.py +++ b/sandbox/profile_ocl_separate.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/splitBBoxLUT_vector.pyx b/sandbox/splitBBoxLUT_vector.pyx index 3f78ce2f7..8866c9b28 100644 --- a/sandbox/splitBBoxLUT_vector.pyx +++ b/sandbox/splitBBoxLUT_vector.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # @@ -435,7 +435,7 @@ class HistoBBox1d(object): cdef numpy.ndarray[numpy.float32_t, ndim = 1] outMerge = numpy.zeros(self.bins, dtype=numpy.float32) cdef float[:] cdata, tdata, cflat, cdark, csolidAngle, cpolarization - #Ugly hack against bug #89: https://github.com/pyFAI/pyFAI/issues/89 + #Ugly hack against bug #89: https://github.com/silx-kit/pyFAI/issues/89 cdef int rc_before, rc_after rc_before = sys.getrefcount(self._lut) cdef vector[ vector[lut_point] ] lut = self._lut diff --git a/sandbox/splitPixelFullLUT_b.pyx b/sandbox/splitPixelFullLUT_b.pyx index f82efd81f..7b5b486cf 100644 --- a/sandbox/splitPixelFullLUT_b.pyx +++ b/sandbox/splitPixelFullLUT_b.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/splitPixelFullLUT_float32_b.pyx b/sandbox/splitPixelFullLUT_float32_b.pyx index 5c8749fdf..483262efe 100644 --- a/sandbox/splitPixelFullLUT_float32_b.pyx +++ b/sandbox/splitPixelFullLUT_float32_b.pyx @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal Integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/splitpixel_vs_splitpixelfull.py b/sandbox/splitpixel_vs_splitpixelfull.py index 5f5a06aeb..d1ebe0625 100644 --- a/sandbox/splitpixel_vs_splitpixelfull.py +++ b/sandbox/splitpixel_vs_splitpixelfull.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/sandbox/utilstest.py b/sandbox/utilstest.py index 42ddce773..4a2c6a46f 100644 --- a/sandbox/utilstest.py +++ b/sandbox/utilstest.py @@ -3,7 +3,7 @@ # author: Jérôme Kieffer # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/sandbox/xpad_CdTe.py b/sandbox/xpad_CdTe.py index f709fe57f..eaf3e0108 100755 --- a/sandbox/xpad_CdTe.py +++ b/sandbox/xpad_CdTe.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # coding: utf-8 # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) 2015 European Synchrotron Radiation Facility, Grenoble, France # diff --git a/scripts/eiger-mask b/scripts/eiger-mask index eb78e365c..cbea40fe8 100755 --- a/scripts/eiger-mask +++ b/scripts/eiger-mask @@ -3,7 +3,7 @@ # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 # # Project: Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # diff --git a/setup.py b/setup.py index c2d40867a..53712c3a2 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Project: Fast Azimuthal integration -# https://github.com/pyFAI/pyFAI +# https://github.com/silx-kit/pyFAI # # Copyright (C) European Synchrotron Radiation Facility, Grenoble, France # @@ -592,8 +592,8 @@ def get_readme(): and Frederic-Emmanuel Picca", author_email="jerome.kieffer@esrf.fr", description='Python implementation of fast azimuthal integration', - url="https://github.com/pyFAI/pyFAI", - download_url="https://github.com/pyFAI/pyFAI/releases", + url="https://github.com/silx-kit/pyFAI", + download_url="https://github.com/silx-kit/pyFAI/releases", # ext_package="pyFAI.ext", scripts=script_files, ext_modules=ext_modules, From 0de8e5250c9e637e4194f058d89e419e670c02eb Mon Sep 17 00:00:00 2001 From: Valentin Valls Date: Thu, 1 Dec 2016 16:51:54 +0100 Subject: [PATCH 05/14] Update changelog --- doc/source/changelog.rst | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst index b2c73d396..cd3dad95f 100644 --- a/doc/source/changelog.rst +++ b/doc/source/changelog.rst @@ -5,6 +5,41 @@ ChangeLog of Versions ===================== +0.13.0: 01/12/2016 +------------------ +* Global improvement of tests, packaging, code quality, documentation and project tools +* Scripts + - Add support for multiframe formats on pyFAI-average + - Add support for monitoring correction from header file (on pyFAI-average) + - Add progressbar in the shell (on pyFAI-average and pyFAI-integrate) + - Script drawMask_pymca is renamed into pyFAI-drawmask + - Rework of the drawmask GUI using silx + - pyFAI-drawmask do not have anymore hard dependency on PyMCA + - pyFAI-integrate can now be used without qt dependency (--no-gui) + - Fix the script to support both Python 2 and 3 (pyFAI-calib, pyFAI-benchmark) + - Fix selection of units on diff-map (the user selection was not propagated) +* For users + - More source code in MIT license + - Update name and specification for cameras + - Add cameras: Eiger500k, RaspberryPi5M, RaspberryPi8M + - Fix Xpad S540 flat detector geometry + - Fix definition of CeO2 calibrant + - Add mask and flat on multi-geometry + - Fix solid angle of the multi-geometry + - Fix geometry processing for custom output space + - Fix normalization factor and variance + - Add support for Qt5 + - Add support for Debian 9 packaging +* For developers + - Create common preprocessing for distortion correction + - Create common image preprocessing using Cython (NaN filter, flatfield, dark, polarisation) + - Refactoring of units module. It allows to register custom units. + - Worker can now use Writer + - Worker polarization argument is renamed into polarization_factor + - Remove the dependency from python-fftw3, use numpy instead + - Remove QtWebKit dependency + - Fix un-correction of images using sparse matrix from scipy + 0.12.0: 06/06/2016 ------------------ * Continuous integration on linux, windows using Python 2.7 and 3.4+ From 7c3f9c07923a091e20a4d331ebd2f4eb0f0babe5 Mon Sep 17 00:00:00 2001 From: Valentin Valls Date: Thu, 1 Dec 2016 16:52:07 +0100 Subject: [PATCH 06/14] Typo --- doc/source/project.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/source/project.rst b/doc/source/project.rst index a9a5d21c7..742d634db 100644 --- a/doc/source/project.rst +++ b/doc/source/project.rst @@ -33,8 +33,8 @@ The OpenCL code has been tested using: * Beignet OpenCL v1.2 on Linux (GPU device) * Pocl OpenCL v1.2 on Linux (CPU device) -Repository: ------------ +Repository +---------- The project is hosted on GitHub: https://github.com/silx-kit/pyFAI @@ -95,8 +95,8 @@ Run dependencies * pyopencl (optional) * PyQt4 or PySide (for the graphical user interface) -Build dependencies: -------------------- +Build dependencies +------------------ In addition to the run dependencies, pyFAI needs a C compiler. From 54ebca5968677c88819ca0e2060f1f17a1c33a39 Mon Sep 17 00:00:00 2001 From: Valentin Valls Date: Thu, 1 Dec 2016 17:14:40 +0100 Subject: [PATCH 07/14] Remove useless matplotlib import (it is now loaded internally by the gui module) --- scripts/pyFAI-calib | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/pyFAI-calib b/scripts/pyFAI-calib index 31632135e..b35601da6 100755 --- a/scripts/pyFAI-calib +++ b/scripts/pyFAI-calib @@ -34,7 +34,7 @@ __author__ = "Jerome Kieffer" __contact__ = "Jerome.Kieffer@ESRF.eu" __license__ = "GPLv3+" __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France" -__date__ = "29/07/2016" +__date__ = "01/12/2016" __satus__ = "development" import os @@ -42,8 +42,6 @@ import sys import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger("pyFAI.calib") -import matplotlib -matplotlib.use("Qt4Agg") import pyFAI from pyFAI.calibration import Calibration try: From 6c2f373f1bdfa74008c2fdbcfd13ce0ec2d4a694 Mon Sep 17 00:00:00 2001 From: Valentin Valls Date: Thu, 1 Dec 2016 17:17:22 +0100 Subject: [PATCH 08/14] Update man pages --- doc/MX-calibrate.1 | 2 +- doc/MX-calibrate.pdf | Bin 7446 -> 7451 bytes doc/check_calib.1 | 5 +++-- doc/check_calib.pdf | Bin 4187 -> 4229 bytes doc/detector2nexus.1 | 2 +- doc/detector2nexus.pdf | Bin 4271 -> 4273 bytes doc/diff_map.1 | 2 +- doc/diff_map.pdf | Bin 6044 -> 6045 bytes doc/diff_tomo.1 | 2 +- doc/diff_tomo.pdf | Bin 5779 -> 5784 bytes doc/eiger-mask.1 | 2 +- doc/eiger-mask.pdf | Bin 3372 -> 3375 bytes doc/pyFAI-average.1 | 2 +- doc/pyFAI-average.pdf | Bin 5073 -> 5072 bytes doc/pyFAI-benchmark.1 | 2 +- doc/pyFAI-benchmark.pdf | Bin 4058 -> 4058 bytes doc/pyFAI-calib.1 | 4 ++-- doc/pyFAI-calib.pdf | Bin 9041 -> 9048 bytes doc/pyFAI-drawmask.1 | 2 +- doc/pyFAI-drawmask.pdf | Bin 4083 -> 4086 bytes doc/pyFAI-integrate.1 | 2 +- doc/pyFAI-integrate.pdf | Bin 4552 -> 4553 bytes doc/pyFAI-recalib.1 | 6 +++--- doc/pyFAI-recalib.pdf | Bin 9367 -> 9372 bytes doc/pyFAI-saxs.1 | 2 +- doc/pyFAI-saxs.pdf | Bin 4791 -> 4792 bytes doc/pyFAI-waxs.1 | 4 +++- doc/pyFAI-waxs.pdf | Bin 5770 -> 5902 bytes 28 files changed, 21 insertions(+), 18 deletions(-) diff --git a/doc/MX-calibrate.1 b/doc/MX-calibrate.1 index ceff90e43..1b846d5b2 100644 --- a/doc/MX-calibrate.1 +++ b/doc/MX-calibrate.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH MX-CALIBRATE "1" "June 2016" "PyFAI" "User Commands" +.TH MX-CALIBRATE "1" "December 2016" "PyFAI" "User Commands" .SH NAME MX-calibrate \- Validate detector position for MX beamlines .SH DESCRIPTION diff --git a/doc/MX-calibrate.pdf b/doc/MX-calibrate.pdf index 497a182682c85aad1e6cd4e3ff65da38d8284443..09bd4e103842aa16a2b77a961f3c61916acea340 100644 GIT binary patch delta 4358 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 delta 4394 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 diff --git a/doc/check_calib.1 b/doc/check_calib.1 index faccde465..ec9391677 100644 --- a/doc/check_calib.1 +++ b/doc/check_calib.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH CHECK_CALIB "1" "June 2016" "PyFAI" "User Commands" +.TH CHECK_CALIB "1" "December 2016" "PyFAI" "User Commands" .SH NAME check_calib \- Is the poni correct? .SH DESCRIPTION @@ -9,7 +9,8 @@ Check_calib is a research tool aiming at validating both the geometric calibration and everything else like flat\-field correction, distortion correction, at a sub\-pixel level. Note that `check_calib` program is obsolete as the same functionality is available from within pyFAI\-calib, using the -`validate` command in the refinement process. +`validate` command in the refinement process. :returns: True if the parsing +succeed, else False .SS "positional arguments:" .TP FILE diff --git a/doc/check_calib.pdf b/doc/check_calib.pdf index 1ce539d66277d23856a86dbc67da5e77d9e34f7c..1cd770745061164cbc42ee83c23ba7655a4167e2 100644 GIT binary patch delta 2078 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 diff --git a/doc/detector2nexus.1 b/doc/detector2nexus.1 index 76141d13f..537d92e56 100644 --- a/doc/detector2nexus.1 +++ b/doc/detector2nexus.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH DETECTOR2NEXUS "1" "June 2016" "PyFAI" "User Commands" +.TH DETECTOR2NEXUS "1" "December 2016" "PyFAI" "User Commands" .SH NAME detector2nexus \- Create NeXus detector definition .SH DESCRIPTION diff --git a/doc/detector2nexus.pdf b/doc/detector2nexus.pdf index a103fc37299ce9caaa05eeeeaa7b42b67d9bf06d..2632c76f0cdcf3bda5ce200e547151641ef9f7cf 100644 GIT binary patch delta 2088 zcma)&c{tk#AHb{bxI3zKByK^%@0UAait22xikM>P8zI!WN*tXMwU#16QPIOybIpB~ z8I3z=8P)YrYA;RQw2IZ$zJ0fU_Rjk}>-Vqk^Z9YDb50bXx*L_{|F( z)9})hl)B!;7Wp5ve^;G6J$52e=mquEpgmtMQ*?Rt+4E<8%GSUs>pg4%6?GwMwos-( zzUjur8%`Il-b@E9VHaC}OM&f`eT6)Etyr6nxmIA`wB3F7_BQ3iTJpbr0=w#Y`O&y_ zo}=poUv)q5JS%FqkTsTM&^B9@JHkx;mlbjaVV9}l#ds9(?&Sv(7%UazSWQD9q#sB; zu1MOGm%k7%5tDNWi%w3i;LsD1f*Qv@Kdn`=)HnHK^FMoDosRKmCOFI#9>3ZRRw&fE z4|b!BHnJUrUe?S6q>n(3W=nh3$GmIl5IXBUUe0cCv4WjE%z~o>X=haOO+tSO&3W>E zefHO5m)do!YnxKURkxt(b-bZ)>J`=^PX;m6^i=-4pU*Q2($buSmxjr0v(Z6=PR`sJ zg#q;IVh*T7zC6<3wsIluC3?wckvg^M*=QdByjSVkc*+q`_=8NdoHG%@so#I=%u_dQl@QQAvn@KJJAIbl*!O+c%6T9b6 zTG9UL;UYp5grpegPL$fZd944AI=5cxtshvalVa7&`s!9?R=s59@M_%s8Bc|cI$CsS zS#DS(Ni;%BCOCE6<9!g(-l907Bt)BY*(Vz?hA2p`EkW3}B@^_!oO2eJ`0LW2|RfbmA4|#jdYU8Q#jjp<-3jXu*4J0k@oJrQ~pA5%9jAXW~w8}b9~W8)jX z)-jyKO=M%3>tx$v<{?#&Su9<@+_s3jgWEQeIieR}`Q}`&>~4;lbmgn*OEgE=sOIL) zj854_ftA7GJSGRSJ3Sg|;U;6ntL>0VU=>!~rGGr^^TGa*j;~dsmVNK&4EMW+?XPca z;rk?eIz!Wac*+loP-b_hu0fI?-Dx!m8N^dv71?v{ZDNMP&O7Hv8KO;BhHHdfSE5Ue z*_7rA_Y$WA_;0Ea%o4v@6_OqVtxlH9ZL~IT@xHm9qy3Vm zK1H1PqzcogyjO+FCGH{!3G4R*^0m6jDwwp;*tC$)#rSl1jR+zQwrurg1X7T!8gid%S!e!WGO=LVAT0u(Hp39Hx|GOlk`O zsQ_%;Z=2YR@CdTrol8_Vp-A8y^LU}GVhL@K+qZCJ*nOaP5e7eVT6nQC_Bcfj=i)p) zE@?JV-rDe5pVu?Zq9^X$%bFKe6T&r$iW!OM_!5W&5KAK<{pfUGBnZ+$B=9kiSUiS` z$6$#xD#j%6mvYF@!#(N8lf7H zKN0|q!{PqUK6V8UFf10#a+K3!p%0b_Xzbs06hJ({KqBTKBj68?Cjti;3PAnIwEwa@ z3dG|N3`SwlSx4o~yodlm!~j+}BGDR!1_>xUfCte;5X4zqp9BE{%G~T94KIkfIfTKa WhBKqX{pb)h0R=#Gbx)oC0`ebg;9WHU delta 2088 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 delta 3266 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 diff --git a/doc/eiger-mask.1 b/doc/eiger-mask.1 index 9101901c2..3defb7744 100644 --- a/doc/eiger-mask.1 +++ b/doc/eiger-mask.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH EIGER-MASK "1" "June 2016" "PyFAI" "User Commands" +.TH EIGER-MASK "1" "December 2016" "PyFAI" "User Commands" .SH NAME eiger-mask \- Extract mask from an Eiger detector file .SH DESCRIPTION diff --git a/doc/eiger-mask.pdf b/doc/eiger-mask.pdf index 8daa079a82e90bc3ee43774e83341eb08a6c8dcb..939d3bc81f7f7bb431ad26c1b98666b72d4876fc 100644 GIT binary patch delta 1197 zcmZ1@wO(pMP<`kbiBP6wpRzoks9P4Evb&0GWSdf*lY5d+PW~qQOKVT^dKTw{u_X~7 zir1gBoPVU2)y>kNcI)>wTkh#I-|*}{c&=*e4o#=((_TL&BpeQ@_t+M;xy|{3lYyLb zP}CjS%MH$-($;#2)b~s~m-Ow&)6Ng-()&CMH_2X4pHetKCOox%rkt6O-mN#KpKcaO zlvZ+hwxub~x_IGw-945`(cO2>zA2xs+rosB#!J$r74IbMMxoJ#X`HE%#_d_YtDn$m94y%`B z37uJd{B`P|2}iz{AJ$lQ`bfP(`pkDnL}$os{TO}qr&QPBk8AcVW?!>vbJqOpQAd~V zb2L@+un(5qt0(zQbmc1B64p+M0e3;QBSG#7vbb7>`rA_Gzn`>v?|KTh1MlSE={j)m)cGa7= zx@mi1c51rdiX>~Mlq2OEZ3gN%%e z^LSUjj(O8B&h0E!@o1Vgt?!sasBaT)iX&mx_zdcw@|j~YgaxJ?JoByWAn1} zsTwCry{AOPfBeN z+=){t$F540!p+{C2N?AYjSLJ8%?(Y!Zd5lgP}k(r_svgnNi0d#aIpePnxUweY{eaH zXJMoO3LOK5JOwT=!@$Vg%mQ7^z{1EFL(I&~c=Bm(^?DNw8A}s$bTLCiOH45XQw%W! zOA8F!4Gj!2#SD$1VoC_78ycBgVpwc!Vmf&;k4>zZnW>qxqk*A|o3oRpnX8+Lsf&e$ tk*lk#vx}p#g|Vxh4M7#LTy}O`#U+VFB^5=fXTSTmaC6sVx8i delta 1216 zcmZ24wMJ?}P`zkclNM+9{5N-6w)j0(DSdJ3V~NHz-d@JzLX*GA{?gi$ta>n@KwMVr z&z;r9=azTJF)A}f#Q(L`Ui*DD!?#0+Hf)d6P3pREf0K}%$|}Vx@{{IXU8^V%z>#L` z;njUXl8Zwn|JtoSarwtnch9k}t=o2TGjlwvy`^5NMB<@0t9R+tU(V8gu;%PdmF?5I z1yu!AW*T)*k?flB?Q@OCJDuNk@Ad@$44G!YJ_OBbj)r|eGEid)e7W4X=JnJk}oSzlFMB6?((=(dD?PJ%9^`Ct7uuke|$xMm*GUZFQ`&lM0Hm!SYcHbdTR{E!J<$+y!DgXCe)Dkgl z&hioY8^iZySIUj+WwG)O*AB>T-D=x&=I8&03mq#Cf1L7!VavAutr{tT;V&64OuvMv6?X@V zw01~{yVWRv{qfo@du8(D))^&UDk&WX%lg}G?cxvQ2G3j@_MAU)efi=W?iO#VG{TZx zwjb&I>Ka?ma3xc2M`~V5aY<2XVlEeum7kQwWu{=D0HRGz%{KQlDYB>-C7Kx~CZ#3n znk5;U>lzxS8R{AUfv$m(k)ee}nz@CES?c5~Y(>N=%wl&CG%(XOGz~E{wK6ocGBDLP zFq*uZT?>ooH}(eN44uW{PMktTc2%MjZua9mz^HFvW@rk8hF~|U8yKi-a_Rf#r?@1R zq-wZW85tOwp{ST_%N=ZIZm9qY9Rr0t1uihdz{uRp6kW`~!pHza%*@PS@;PqxdP58u zOA`}xF+)R3Ofdsf3^4;s3k=&04Gb~G42_{;N(iSL0^N>bv9XEKM$@Bo>ua6s4wd8Ce=ya;d7i I`nz!f01;TEssI20 diff --git a/doc/pyFAI-average.1 b/doc/pyFAI-average.1 index d6cb97bc3..1211eef48 100644 --- a/doc/pyFAI-average.1 +++ b/doc/pyFAI-average.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH PYFAI-AVERAGE "1" "September 2016" "PyFAI" "User Commands" +.TH PYFAI-AVERAGE "1" "December 2016" "PyFAI" "User Commands" .SH NAME pyFAI-average \- Image preprocessing tool .SH DESCRIPTION diff --git a/doc/pyFAI-average.pdf b/doc/pyFAI-average.pdf index 8174632de4a10ab1871d4a8c9659c63c385d5e72..25ef5317c6d98d6aa5d620ec18c69752b5e4241b 100644 GIT binary patch delta 694 zcmcbpenEZ10}h>o%N|$GN!PpS=J6 zF<$yTt8g+erwpUTW-U$)7L^psWJ?pHWDDKYw6qjmL&G#fT>~J{HA*tKOtCOdN-{Gv zm|VtNM4Un%J_kWVBV7Z-5JPh-LlY}gb8Q2|$+3J|SVU*=H4ta04Zph@G0s%ipRCWT zOq7|MKky%5)HgITFf=qbGy%I(-M~OylS|(>KgA`nBvr%33MgrYqGIxW!4O*`1yJx9 zDC8+{ff)uSCT6DSVn(Kh#u#G8rpA*Cgw*RXWz3AtF;rVvnqY{Tn_#LlGq=E0XMibY zVFVRZLO9*X(%cMPv$27R(PRr@n^vS~ z3>5MdxWEhp6B9EtbTK1SLlX=!V^fpK`9kXTm@;O@78t56EKM=Q%uO)WnVDN+sx!b8 zvoL~+DIuJ0WNB`WuG!eY#CWo~uuZImp{cW@fs>oFqmzY^fw_sfxrMQzlew9ji?flb lk%5by4M7#LTy}O`#U+VFB^5=fXTSTmZvftA+po diff --git a/doc/pyFAI-benchmark.1 b/doc/pyFAI-benchmark.1 index 55604c966..f6937b9c5 100644 --- a/doc/pyFAI-benchmark.1 +++ b/doc/pyFAI-benchmark.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH PYFAI-BENCHMARK "1" "June 2016" "PyFAI" "User Commands" +.TH PYFAI-BENCHMARK "1" "December 2016" "PyFAI" "User Commands" .SH NAME pyFAI-benchmark \- Evaluate performances of PyFAI .SH DESCRIPTION diff --git a/doc/pyFAI-benchmark.pdf b/doc/pyFAI-benchmark.pdf index dc3b276aba9f8ed6ca5c493cf7529a6f0d0ddbde..5b17f25c9e079b4490eb413d412a9e95068d37c9 100644 GIT binary patch delta 1632 zcma*hc{tPw90u@+9Fr^8gdCM~Oy)P3%aLIQISP&I8A8M4nkI5Yte_$E9FK)o2yD zfAu(xaS>O9R7Y(*?R#H%mHUvP;kVjJ>TSMo1*y?>kP*er7U7;q8;p&Tt=+FhAIZ=D zD%e56qvSxIOr zeHin!qUdDf2~PP!k^lFx67)mXx5n|!yK8d`CEyAo4I4@8{aj%AvX`Qvk{F)xX@fN5 zg|mS=^X%Y-?73of4mwm^L~Oo<(X`sP9>AAq_m+{5@RwgF{4CSbMASo-(<-1t>fg7R z5XmaWoyNwX}>xwZ4n#VUeA`2DvH6jX?C)~yI7MV=kvAA*{Q3uhU= zG5iRps49Um$I?jU%Of{`gJ&7MYF3>Uds>_IP-PJ@Qns!o2wFbv_o^qc1M0eZm61{2 z&WaCi67uZ&eFOn}rzsa(q$XFAmE)@@q^ks4a3TD@OL}mz(r{~Yzn}c%6y{+@`P&%< zMQ&Rck0gm(uB}jePzzSiI@aT!oGTnhWdN(<5-?IeYz?gSv`^o9d+I@;V zUfiqf*8L@l{hOXpqnLY9e|bgEzVr5$vwS`5JgjiNR9hu<_r%-#eY!?qLnQYI2)02|srO<)+=0NK;`g}x#ic9rfyIwX( z!m^l{PR?2E+rRh1h?Nv5AAj7A+^PJgVMh#d>3E&){vBjp1ele^m8Z+aGxSA)R8G7D zHPPzN(Q(P8Pd7!;O}RJChR&_YEv&$37{B$sJIM|oxs zTP#eW%*V_w{+B}dH%-R{jnsDF>`qya8M2rjtJx;s)0p=FQ zSF4vl4P;!70H>|z1$M=!UgX9akm8-zRrB3m9BEFW_a%bL*akX?T%G@A!ew2CY}=E!_l)9&Zmg*joReDCkkp{2TI6&CUP- delta 1632 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 S^QD?cfV%S^#Q0Yn=b znOSZQW>sWSNl8pgG)qgi&`nKCOVKqnOf%Fq00Q0QR0ESVb4zmrGlSI0GdPQgQ>e$~ zAZTc$YhV~+Xl`X_Vr6QnZD2ULo=Xdh=q|1X;tY-Bc2^_Dnd0j8L_8K#(-C8q7>Mwnt2CQvaYgwqWzEe+5uHZm|Zn;gY&6KiSWNMKlcR;93y|;VY;J7nXl7t(Zt7}mXG2g$ESH@fS8+*VQAtHnY8scZnXxgKs;aBM G8y5gR-=>@Z delta 1654 zcmew+|5<*5SN&}Zf!gokJimgZHtbX>O})R#mubmuZ?lh!A}oF{i0E0nHg9Um@}KR0 zy8dr8o}!_xxgo;Bfo0~LnZ?h}NY=9-ROR@^^WXgFo9(kXw!QT^Q1-1>?d^1fKet6b z{O006@+Il3!Rz-P9U?CK_*W-wOS@hle@=P++*sZ7`RAVfUt@QMss7~Qh~pJSQ_q#0 z*vk;sU-9Yn^3AvH-_6)F`*8f)%xB(Dv)64selOg0;*?Bok#41md5=!LW?mDUp}S*3 zodsv|c|F$fpu<_srCDnxzi#k~t=f2eYtvHkAdzoBbN2lbcYI_i`N4tz;?3pURr^)! zayZySIp1}2Obfc1{Pl8y&Zn0$_1A3g?4NTaG^T=Y`wPQ(-OFk-z2ys6b=Zn|{^so~ z=zG7S>?rdtiOQIag>4=Eo`!89cHfUr$adQ$h9#_@vQJONl<@;m7i{5J(?KifU9=C0tk;W)#E;C7J z6H|7xZ)llkSlUyuU2_|4vaMIhEjU*f5!CW&=E>-aJE^l}ReJYcNL!id({-hH)y6y8 zQ#?gloNe1vbli(OmAf6{5S4hy@GH{p*?{rSo3vR>#gcIOHQZqh38jhR#6$sg>> zS2$H~?W7vX&jvlRZ*LguRv-9%=RldCh11DNRgB-&G#9*GC3P!yQrNnG7q02EdL5bC zsrn`G#$%=*As>`PZUtJWB+a>h)^bgmWKe6zf>pkpoOaV^u)MFjbG=M!iORO7jp>&U z7){_Sp6OJdXH~K4n}gR(H;$x`9~Kw-uiiO)ak^4UYWl-3OdNqxdJ^Bh?mW2fo9zDN z(&X$er+3!r3G8n&yUY@Piu~wZ?_a~VOI_)8*@QIyZ89g7{XLF53w(E%3y?@M5kMg5)E*Q{FZ8UM^WHSzde@8(I9Ru^nJan!rQZ|3pG z=bn6BJ^2Z<2G8{j=cB3f&(D1K@x!Xg5-duL+b3JI7%>)2&STMXI<2t(&q=To~Mrx#=H{Mcr9F=I zTx&y){FPKq;h5AHvnH+n(R1~`C+E~pwq%uIG}|1;s>q^}Y+-7emS$k4YnGOhrfX=J zW~gfb1iHzFMuwJ2Ny#RONrsbWa~2V&(2&bP5NMW>VThr*6$qJV8yHP);?lw*x|geg zI71V;-HB6phFg^=g_}ir4lwE)m>C%wngb!ojp_yl>Y7~ozWFIGi6yBTE>=bchGr-# zCbRH`Xc{Ph0>?lhPk{@}FfcYTH$xXQG&MGy+{h=)XgGN)pSq|ahP;`n>Ew%i!nURu zGUjHOVrG_@HkcckO;+R=*2I*tv@l0E)yTlqcycViO{}@2tA(SPsey^3iLsfpnWL$* wo3W9FxtpV_rHhH1k%65JK^3uFc6MCFC5c5P6-B9OT*hX`23)GDuKsRZ0ENPlxc~qF diff --git a/doc/pyFAI-integrate.1 b/doc/pyFAI-integrate.1 index 225c0bc8d..c88722c0f 100644 --- a/doc/pyFAI-integrate.1 +++ b/doc/pyFAI-integrate.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH PYFAI-INTEGRATE "1" "June 2016" "PyFAI" "User Commands" +.TH PYFAI-INTEGRATE "1" "December 2016" "PyFAI" "User Commands" .SH NAME pyFAI-integrate \- Graphical interface for azimuthal integration .SH DESCRIPTION diff --git a/doc/pyFAI-integrate.pdf b/doc/pyFAI-integrate.pdf index 7076d1afc49d03f2ec5281b0301b5344b4870cab..85d04b96eab0d0439c3f6e1ff7079dc650b0425a 100644 GIT binary patch delta 2407 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 delta 6501 zcma);WmFVg*M{j1kr+U_4Ul1&p*y4o7#d{g?v4={KtW1s=oUdr8tIk>0qLP7q`MSB zKHpehJicpv&pChgy4JnVxz_%*vy@Ynvgu3%ESr)H>CE-N|R+S-(P$Nr+Vy)A0b8YKyJxw4%eTXhM`()8yp< z<@EFBN^QX;&KfxkamVJAxt4t1a?e#;+s9?o?!)}8)2D!e0#+#jPCq{|pD_mT6}*+a zYv%-ze3Wx8jU1&<{bVdJ9=TKzKM6+#mgqO@ES%s zu@Bv(kNC6F;IvBt&TOkY;L+j$k->E@U7l%N|EOW`SF6l^LnhQ~!M*2Xq;iu2Irpm# z2org&BYv2-gj*os~=HPb^@?VQr4}VPEz3pd+o)AV3u^EyvcbM)+^Tu_a9uW?3!%|Yj)xUxi<&1=< zhPfgmfGMM_YJyJB<$p+GLIk6v3)ME|po(gpl z54lTM83^SFB=9=Ri*=2cXwBF#=q@AIh)$urn*7HZci9cM| zx(2f7-%P#a#wlH~A|Ky;bRm1o5$3;|rCv5=gx{}SZ7(4#C5-1zTdqEfefpee{u$xT zia9BD=++l{RO|t0K0-V;&!uu*XG45Y&y3UXIMH&lbrK!0`}r5r$M(ap$IrtJjxpcT z&9n#fszh)_e%g3QIm2^oiXVI)U@F|GKi8eabkw}M-JDin zZss9)^Ed|YoVX5Y6hca`J2&a>z%w>mn%tJWCYSw&%d+EemHnL_cJoU)d`HctN`;yO z29lD>Z3RNU89GTb82asq%cnzaG?ySRbs}+>LYEagkrg9W2p87)z<2soxT}QOPdU*A zqmCp>K*jea(|@K55;(H7U2-9`!akXh8(@-S5(wqAZq#Tnmny*9;0z*@VN66(Kq3w zBL)l8{qIhY-AKo^EkoAka)Qo9K}*aY5;xqohI?m{R0vw5_Uh-^!5Gg1HMKBg0MDH5 znF}_i-8V=L{VDaPo7~MwoWYzpz4e?{vpOnP^%y8IH4{&9S@L`@zLfYcg7@RQKGQI@ z3spQ@_bdq??0P`FP|htmP_?cMe@BUfIosX8djv_ZTi14!XZ@uSHk&nrzyDa=p?~zQaWhTD& zRROjcW9;SY$sMU@&Q5llXY0Mwz286W7rDH_GqVpwbRbJ#;3*hDNN_GH@g*!5pkvbP z6+;)p$Zv-HbpEbFmF0mEmVv8Nz@Xi85cc|rl%w6pCLZE4te>+%L+0u<0h2j+51T5s zFNNuH7SzN13O^pkM4$AYe=3rE`GahPA1@o?ouvn56DCMgxUQLQ>okz?#lY%&UTJ7r z=M?i2-_j;p0HX&+=2XJ!Mls-zUcjHCYOHsRK*o(5>}?;BY;9pU3=oySMtIy~?h3iL z{2Gt3OX)^*X3-04&FprTZ&|HEadLP?F)+Nvz>cmFKS+-l2zkmydS%h#HJH+ee`$Ox{Y?I?F>l#~_Q^*3 z6XaZdwLD)WAK8k@CfSD|!&p-};8zMlZaJNi_(-pew9(%cQ#-ea++v=GrF zQsuzT*CB>W=6Ss#MuhSv-A>tyR|)MwRtCoDSxKrl9vCt8NxCjZ^okq6)%JRdPQAeJf@SJkdF6ZO$RLNiA^joO{y7I`7F~O<)z_J5cFL}>Tv_B> zMYk7Cq)%hRsUF-XD%!0VH!+^3ul&(!vfjWDE(Gho@qX(1@LX|;x%qtwfhMjzC=a)@ z^QNOOSPk^$oYH<8-^(9<``%>Q{CNdRcc~XgW{>Y%3%hi%G;{EV@q&2^V|Pu-$|~}5 zXFE^Kh#zq|{MvqHhJAcv_QW5cBr$_IAri-=hY^A)YhY%ks{>sCV;L>~*rVAdnG-&p z{=s-KWZJLUHq(tkKDSm|PqPt}k`4~?` zTgiHC^h595)W^!o%cHz}WgzA!mkU5+rt(~um#asWiun5ZBtr4mv*^6~d}{ex35J8K zyUj{xps$t!G`KX;?5(?IPi`-<{GEHF+p8Du@{VD96_K-S6~q+8M|K~DoRR)t7JJHt z>3v4t`?$DP@b$x2>%=y7olwFDBWlNLbHQcz-#HBEz21WwFr}z|lBI$%jX6@`R>{-j zq!Rhr``wafY~Lh1E{Uz*SopX@u#fqJ); z#~o&gcTo$la$}&dY#=f~>IV6D>ZnPYJOVv(z=toSjS7P9_C! z+8<)?D4&`*^H&O~8JEaTwbt8woDXa-GG$0`%Zm)zshpOPjImPf0VD+Tuzq*qs(cJ` zi6n|(A0nNaYim?%6L!aT~ijrNC4Kdu?d7}QxWqU4U0sS|EciPOB*!+Lg;$DWQYqOBcg?-@GqIcRh@ zZX?dAu=InDCTkn~Qj(HEHqwes$%vG^mY#7rffb9Oo3C%{tGY%m4V^Pf?_5K0ZJ&vT0qU!bDI2Nk-MsHJ)1v-Y_o8Kg4^p^=A*1iy!r95RT zyA*_BCb~LiT==Af);;MvL?6#ip=7rxJ@ElWTelKqxUZ%T*AUr&GSM&;qF$YYBL-|HJq1@~=1`r982NC*Xn)-* zlk2{5=jF|YXmijmXl`GwHeBu7nYD?IVPG0$^WMPLWKJuPa09F15w0zY9qp-{G=b72 zLh}fQ2q65CH%F8N7ErHli#epLfKT+u|0NX;%K_09WTAOv?wgj6WAc@}$0OF1z&kSP z3JGjzAtL<+SEtm1FN@+{_SDQEU@A^XkQ@M3a2;z2Y7^gPM27j^L@pywuGW_3(rjN% z2v=KQr$s}*1g1x3K7EF52)dH7BqG%9+FG~5KZ>2cyqgGzngV#^Hh zq^$A=SECW9_H5^JGXYNoE|*A%Wv?yjGtwkNaT9SXhHcP2h`TZ7qS`xk`OZM`3|=I+ ztP&qi<^gxZOz-rM&*UqnH=DaHVycT!biYdSq~{KLktXLNFu~fr{R1uf`_=wdB&CYW z>%I}cr;Mkcp;H(lz5%a)vVP*`ZT}eCuPZ{$il$D{>JR+Dn?pHR*>A&jH|V76UsPSYKQV^Y)Lu_e;q7B zMGWYdyDuIr12ha&$I0^VavRv$X(hjA1IDynwLUpyEnCTZijubpF}UzJ)}#+PhIgAK zciU#%Uuaa1$`ZGT)5Hs1NJ1m!(sYfFRNB_5N&v?!PGzez*KR;+tc8Q|jKJ2nNGCG2 znf=|$*}gEXG*Z%z=Z>%q-5Q<3@Q=`TwXkU39LJLLF~gfp4W8+)o#O9}7N76(l(JM5 zAiEw7#U(*CAe=x3xd&fNBvBo)acW*Gt0UYVU*{#svnaU_bZeHqU`Qlanhoa9cQ$9( zs;5RFh(Ov69|FsE-siqKpNljhdsS0;V15y$Q&?C{YjKl_NbtivZTc>j&H8s2v-l|L1sZ9xb2VcJGI-|<7soCTN^o<`GoUYQYx&`BX0$5y{M%<^dEpdFG@0B#9-54;`adw44I(`vn-Esf>{57I z%v@P%gI9dmWap(c$dd@ae^*|4KkL97oyMiA*!Q?TbP?h-By5T-^HrP4{K@HFJ!5;# zEG}u8dw8}l^-Kn7ygha*IgG%qe^+G=o|ClMx?WeuQh*;NraBzYU^R!?*Dcfp>w_jb zJyL4}wOpeZ&l7HS`WB!y7(qlbB5tR$Z7F2Eup_$S`b#!a0Nk3qKdj4u1-tf}cQMBc zu4HyP1JlH2>^Ni?x?cVCW2EfkU(>VZsYQpf+!sI5-)5tciz~+PyYsL6I#@D;J7?eg zp1AL#MowG47B;-Q4dnw({oXaBAeR27w*gXOFPyguV+Bp37|HcC0HmNm3&HEMb`xxD4ck91?b^3}}4 zgM(=Ys|th0Erq^8Wj0+JAl71j%&>cdS)96{!fr;`>RTQ%-otlYZC|#GOMl1&&K1|l zi$nR>wSY)U2D--WD(CR@#!}AN^sn-msjxj+lER=o+xZUHM5<(IM~40Sm#OZP@7-Rt z=-B5!QUsB&Qm)~M!kE4KJGIN}rc`GI0kC)4CziccB4LL%KrP1$=XK$JpQfZ=!x-BJ zBb?W({l;;X?HdVpbVrY&)5#EW_Aeg28&pc56;~u|pg5wjk3`jPwzQMQl*vnr1qV2h z74=T5M8K0AmZvN$Yi~8zH%68bjk5XpOgJV_Q`!J`P$~8I3igwtIRw9I(N9)B2mR8= zoU5VF?S=i@Q_f;M%zFpBSboZo2P3%`;L*O;WxudXf=`udQE+SH8{Vv+N^V|u?5ScE zXEjJ$*Vh%!ZTv|`7y3P!t+S(V3!tO%P%DP%dGx+pvLHnA0WOg&v6hNtQ?25CcK&Fb zpmF=Jp3nh>3B*BpNN^SpDcmu?f^DF?HV_Bf_gsZJ1kut~XrUVMxOv_f0LGQ7`0eIR zK$u`!k{?pUJWpozXo^(i(5>xkv2)g30eMYzR;uK_lP{8;nAeS)RPOU5)U1<=D0bp% zLy>)4g{_kPVuCiOKy>-Bif+_>oY70&U?PRqB% z88=E&A#IBTYofzEmrrOXT1NACISXtJO_NSbfDhY0F^uFl8X7J}Tggy*1KKN%_mO8U zRIV3qT&^?b#Gu+&lQ6Nu(sPLzUvu*AsTvB40^ek-DuW4xfyn2n@lBJJ>Hb=5L8zI9 z7k&m;%=>gTjweR88L#pmFkXl_xEJg%Qcko^b*`=`xJe!7zNT3Sa#cHo9X$yDP&W5= zuDbU<&m&yJvMUw3rl&(z*(|qnFDa0x_-Z7M0fw$>ip1o~PnJ+Z0u4F^+}WvkC9O<gyAKY9fq!v8ix@v@Wt2M37opI$=$*dhPoDj@U+ z0}21>1r`AT|L7G0gZ{--{%3p;A>n_+|HVZ3|6oG=;6FYV0)m84*c{@rAbuG+K_PxQ t5J*G_BFHbmuOK7>0YU_1z%pPt8AVx1@&7M@3gMt65G3N{RM1c)`Y(tfzvut} diff --git a/doc/pyFAI-saxs.1 b/doc/pyFAI-saxs.1 index fa9847d64..13a634414 100644 --- a/doc/pyFAI-saxs.1 +++ b/doc/pyFAI-saxs.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. -.TH PYFAI-SAXS "1" "June 2016" "PyFAI" "User Commands" +.TH PYFAI-SAXS "1" "December 2016" "PyFAI" "User Commands" .SH NAME pyFAI-saxs \- Integration in q-range .SH DESCRIPTION diff --git a/doc/pyFAI-saxs.pdf b/doc/pyFAI-saxs.pdf index e0272eed92b9488f0a9f240a0d3e7be02cf7667d..271e161a8e741b34a1bf86d41beaf7865f2fdf5d 100644 GIT binary patch delta 2635 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 Ph(V(XKq%DQnhN|ceOz&U delta 2643 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 X-rf%% Date: Thu, 1 Dec 2016 18:14:53 +0100 Subject: [PATCH 09/14] Found issue in run_test with profiling enabled --- pyFAI/ext/_bispev.c | 12 +- pyFAI/ext/_distortion.c | 154 +++++++++--------- pyFAI/ext/_geometry.c | 36 ++--- pyFAI/ext/bilinear.c | 226 +++++++++++++-------------- pyFAI/ext/histogram.c | 14 +- pyFAI/ext/reconstruct.c | 2 +- pyFAI/ext/splitBBoxCSR.c | 76 ++++----- pyFAI/ext/splitBBoxLUT.c | 94 +++++------ pyFAI/ext/splitPixelFullCSR.c | 60 +++---- pyFAI/ext/splitPixelFullLUT.c | 34 ++-- pyFAI/ext/splitPixelFullLUT_double.c | 18 +-- run_tests.py | 29 ++-- 12 files changed, 373 insertions(+), 382 deletions(-) diff --git a/pyFAI/ext/_bispev.c b/pyFAI/ext/_bispev.c index 1a8058ede..b5e4e81e6 100644 --- a/pyFAI/ext/_bispev.c +++ b/pyFAI/ext/_bispev.c @@ -3505,24 +3505,24 @@ static PyObject *__pyx_f_5pyFAI_3ext_7_bispev_cy_bispev(__Pyx_memviewslice __pyx if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_26, __pyx_t_28, __pyx_t_27, __pyx_t_17, __pyx_t_20, __pyx_t_16, __pyx_t_21, __pyx_t_24, __pyx_t_25, __pyx_t_19) + #pragma omp parallel private(__pyx_t_17, __pyx_t_25, __pyx_t_16, __pyx_t_21, __pyx_t_24, __pyx_t_19, __pyx_t_22, __pyx_t_23, __pyx_t_28, __pyx_t_18, __pyx_t_26, __pyx_t_20, __pyx_t_27) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_i1) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_err) lastprivate(__pyx_v_i) lastprivate(__pyx_v_tmp) lastprivate(__pyx_v_sp) lastprivate(__pyx_v_l2) lastprivate(__pyx_v_j1) lastprivate(__pyx_v_a) + #pragma omp for lastprivate(__pyx_v_err) lastprivate(__pyx_v_i1) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_a) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sp) lastprivate(__pyx_v_j1) lastprivate(__pyx_v_l2) lastprivate(__pyx_v_tmp) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ { __pyx_v_j = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_i1 = ((int)0xbad0bad0); __pyx_v_err = ((float)__PYX_NAN()); + __pyx_v_i1 = ((int)0xbad0bad0); + __pyx_v_a = ((float)__PYX_NAN()); __pyx_v_i = ((int)0xbad0bad0); - __pyx_v_tmp = ((float)__PYX_NAN()); __pyx_v_sp = ((float)__PYX_NAN()); - __pyx_v_l2 = ((int)0xbad0bad0); __pyx_v_j1 = ((int)0xbad0bad0); - __pyx_v_a = ((float)__PYX_NAN()); + __pyx_v_l2 = ((int)0xbad0bad0); + __pyx_v_tmp = ((float)__PYX_NAN()); /* "pyFAI/ext/_bispev.pyx":250 * diff --git a/pyFAI/ext/_distortion.c b/pyFAI/ext/_distortion.c index 6235e6491..b94888d8c 100644 --- a/pyFAI/ext/_distortion.c +++ b/pyFAI/ext/_distortion.c @@ -18048,11 +18048,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED float __pyx_parallel_temp0 = __PYX_NAN(); float __pyx_parallel_temp1 = __PYX_NAN(); float __pyx_parallel_temp2 = __PYX_NAN(); - float __pyx_parallel_temp3 = __PYX_NAN(); + int __pyx_parallel_temp3 = 0xbad0bad0; float __pyx_parallel_temp4 = __PYX_NAN(); - int __pyx_parallel_temp5 = 0xbad0bad0; - float __pyx_parallel_temp6 = __PYX_NAN(); - int __pyx_parallel_temp7 = 0xbad0bad0; + float __pyx_parallel_temp5 = __PYX_NAN(); + int __pyx_parallel_temp6 = 0xbad0bad0; + float __pyx_parallel_temp7 = __PYX_NAN(); int __pyx_parallel_temp8 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; @@ -18068,7 +18068,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED if (__pyx_t_19 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_22, __pyx_t_23, __pyx_t_1, __pyx_t_2, __pyx_t_20, __pyx_t_21, __pyx_t_24, __pyx_t_25, __pyx_t_3, __pyx_t_26) firstprivate(__pyx_t_10, __pyx_t_14, __pyx_t_17, __pyx_t_5, __pyx_t_13) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_25, __pyx_t_2, __pyx_t_21, __pyx_t_24, __pyx_t_22, __pyx_t_23, __pyx_t_1, __pyx_t_3, __pyx_t_26, __pyx_t_20) firstprivate(__pyx_t_13, __pyx_t_17, __pyx_t_10, __pyx_t_14, __pyx_t_5) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -18078,21 +18078,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_sum) lastprivate(__pyx_v_value) lastprivate(__pyx_v_error) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_t) lastprivate(__pyx_v_j) lastprivate(__pyx_v_y) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_idx) schedule(static) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_t) lastprivate(__pyx_v_y) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_error) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_value) lastprivate(__pyx_v_j) schedule(static) #endif /* _OPENMP */ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_19; __pyx_t_8++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_8; /* Initialize private variables to invalid values */ - __pyx_v_sum = ((float)__PYX_NAN()); - __pyx_v_value = ((float)__PYX_NAN()); - __pyx_v_error = ((float)__PYX_NAN()); __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_t = ((float)__PYX_NAN()); - __pyx_v_j = ((int)0xbad0bad0); __pyx_v_y = ((float)__PYX_NAN()); + __pyx_v_sum = ((float)__PYX_NAN()); + __pyx_v_error = ((float)__PYX_NAN()); __pyx_v_idx = ((int)0xbad0bad0); + __pyx_v_value = ((float)__PYX_NAN()); + __pyx_v_j = ((int)0xbad0bad0); /* "pyFAI/ext/_distortion.pyx":907 * assert size == shape_in0 * shape_in1, "size == shape_in0 * shape_in1" @@ -18419,15 +18419,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED #pragma omp critical(__pyx_parallel_lastprivates22) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_sum; - __pyx_parallel_temp1 = __pyx_v_value; - __pyx_parallel_temp2 = __pyx_v_error; - __pyx_parallel_temp3 = __pyx_v_coef; - __pyx_parallel_temp4 = __pyx_v_t; - __pyx_parallel_temp5 = __pyx_v_j; - __pyx_parallel_temp6 = __pyx_v_y; - __pyx_parallel_temp7 = __pyx_v_i; - __pyx_parallel_temp8 = __pyx_v_idx; + __pyx_parallel_temp0 = __pyx_v_coef; + __pyx_parallel_temp1 = __pyx_v_t; + __pyx_parallel_temp2 = __pyx_v_y; + __pyx_parallel_temp3 = __pyx_v_i; + __pyx_parallel_temp4 = __pyx_v_sum; + __pyx_parallel_temp5 = __pyx_v_error; + __pyx_parallel_temp6 = __pyx_v_idx; + __pyx_parallel_temp7 = __pyx_v_value; + __pyx_parallel_temp8 = __pyx_v_j; } __pyx_L40:; #ifdef _OPENMP @@ -18444,16 +18444,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED #endif #endif /* _OPENMP */ /* Clean up any temporaries */ + __Pyx_XDECREF(__pyx_t_13); + __pyx_t_13 = NULL; + __Pyx_XDECREF(__pyx_t_17); + __pyx_t_17 = NULL; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = NULL; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = NULL; - __Pyx_XDECREF(__pyx_t_17); - __pyx_t_17 = NULL; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = NULL; - __Pyx_XDECREF(__pyx_t_13); - __pyx_t_13 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -18467,15 +18467,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_14correct_LUT(CYTHON_UNUSED __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_sum = __pyx_parallel_temp0; - __pyx_v_value = __pyx_parallel_temp1; - __pyx_v_error = __pyx_parallel_temp2; - __pyx_v_coef = __pyx_parallel_temp3; - __pyx_v_t = __pyx_parallel_temp4; - __pyx_v_j = __pyx_parallel_temp5; - __pyx_v_y = __pyx_parallel_temp6; - __pyx_v_i = __pyx_parallel_temp7; - __pyx_v_idx = __pyx_parallel_temp8; + __pyx_v_coef = __pyx_parallel_temp0; + __pyx_v_t = __pyx_parallel_temp1; + __pyx_v_y = __pyx_parallel_temp2; + __pyx_v_i = __pyx_parallel_temp3; + __pyx_v_sum = __pyx_parallel_temp4; + __pyx_v_error = __pyx_parallel_temp5; + __pyx_v_idx = __pyx_parallel_temp6; + __pyx_v_value = __pyx_parallel_temp7; + __pyx_v_j = __pyx_parallel_temp8; switch (__pyx_parallel_why) { case 3: goto __pyx_L17_return; case 4: @@ -19624,9 +19624,9 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (1 == 0) abort(); { float __pyx_parallel_temp0 = __PYX_NAN(); - int __pyx_parallel_temp1 = 0xbad0bad0; + float __pyx_parallel_temp1 = __PYX_NAN(); float __pyx_parallel_temp2 = __PYX_NAN(); - float __pyx_parallel_temp3 = __PYX_NAN(); + int __pyx_parallel_temp3 = 0xbad0bad0; float __pyx_parallel_temp4 = __PYX_NAN(); float __pyx_parallel_temp5 = __PYX_NAN(); int __pyx_parallel_temp6 = 0xbad0bad0; @@ -19646,7 +19646,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED if (__pyx_t_21 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_26, __pyx_t_1, __pyx_t_28, __pyx_t_27, __pyx_t_22, __pyx_t_24, __pyx_t_25, __pyx_t_3) firstprivate(__pyx_t_17, __pyx_t_16, __pyx_t_7, __pyx_t_5, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_25, __pyx_t_24, __pyx_t_3, __pyx_t_23, __pyx_t_26, __pyx_t_22, __pyx_t_1, __pyx_t_27, __pyx_t_28) firstprivate(__pyx_t_16, __pyx_t_5, __pyx_t_17, __pyx_t_20, __pyx_t_7) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19656,21 +19656,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_value) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_t) lastprivate(__pyx_v_error) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_y) lastprivate(__pyx_v_j) schedule(static) + #pragma omp for lastprivate(__pyx_v_t) lastprivate(__pyx_v_error) lastprivate(__pyx_v_sum) lastprivate(__pyx_v_j) lastprivate(__pyx_v_value) lastprivate(__pyx_v_y) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) schedule(static) #endif /* _OPENMP */ for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_21; __pyx_t_12++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_12; /* Initialize private variables to invalid values */ - __pyx_v_value = ((float)__PYX_NAN()); - __pyx_v_idx = ((int)0xbad0bad0); __pyx_v_t = ((float)__PYX_NAN()); __pyx_v_error = ((float)__PYX_NAN()); __pyx_v_sum = ((float)__PYX_NAN()); - __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_y = ((float)__PYX_NAN()); __pyx_v_j = ((int)0xbad0bad0); + __pyx_v_value = ((float)__PYX_NAN()); + __pyx_v_y = ((float)__PYX_NAN()); + __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_idx = ((int)0xbad0bad0); /* "pyFAI/ext/_distortion.pyx":989 * @@ -19995,15 +19995,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED #pragma omp critical(__pyx_parallel_lastprivates23) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_value; - __pyx_parallel_temp1 = __pyx_v_idx; - __pyx_parallel_temp2 = __pyx_v_t; - __pyx_parallel_temp3 = __pyx_v_error; - __pyx_parallel_temp4 = __pyx_v_sum; - __pyx_parallel_temp5 = __pyx_v_coef; + __pyx_parallel_temp0 = __pyx_v_t; + __pyx_parallel_temp1 = __pyx_v_error; + __pyx_parallel_temp2 = __pyx_v_sum; + __pyx_parallel_temp3 = __pyx_v_j; + __pyx_parallel_temp4 = __pyx_v_value; + __pyx_parallel_temp5 = __pyx_v_y; __pyx_parallel_temp6 = __pyx_v_i; - __pyx_parallel_temp7 = __pyx_v_y; - __pyx_parallel_temp8 = __pyx_v_j; + __pyx_parallel_temp7 = __pyx_v_coef; + __pyx_parallel_temp8 = __pyx_v_idx; } __pyx_L42:; #ifdef _OPENMP @@ -20020,16 +20020,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED #endif #endif /* _OPENMP */ /* Clean up any temporaries */ - __Pyx_XDECREF(__pyx_t_17); - __pyx_t_17 = NULL; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = NULL; - __Pyx_XDECREF(__pyx_t_7); - __pyx_t_7 = NULL; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = NULL; + __Pyx_XDECREF(__pyx_t_17); + __pyx_t_17 = NULL; __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = NULL; + __Pyx_XDECREF(__pyx_t_7); + __pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -20043,15 +20043,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_16correct_CSR(CYTHON_UNUSED __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_value = __pyx_parallel_temp0; - __pyx_v_idx = __pyx_parallel_temp1; - __pyx_v_t = __pyx_parallel_temp2; - __pyx_v_error = __pyx_parallel_temp3; - __pyx_v_sum = __pyx_parallel_temp4; - __pyx_v_coef = __pyx_parallel_temp5; + __pyx_v_t = __pyx_parallel_temp0; + __pyx_v_error = __pyx_parallel_temp1; + __pyx_v_sum = __pyx_parallel_temp2; + __pyx_v_j = __pyx_parallel_temp3; + __pyx_v_value = __pyx_parallel_temp4; + __pyx_v_y = __pyx_parallel_temp5; __pyx_v_i = __pyx_parallel_temp6; - __pyx_v_y = __pyx_parallel_temp7; - __pyx_v_j = __pyx_parallel_temp8; + __pyx_v_coef = __pyx_parallel_temp7; + __pyx_v_idx = __pyx_parallel_temp8; switch (__pyx_parallel_why) { case 3: goto __pyx_L19_return; case 4: @@ -25715,8 +25715,8 @@ __pyx_t_29.strides[1] = __pyx_v_buffer.strides[1]; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_26, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_26, 1); /* "pyFAI/ext/_distortion.pyx":1209 * self.calc_LUT_size() @@ -26403,8 +26403,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_t_12 = __pyx_v_lshape0; if (1 == 0) abort(); { - float __pyx_parallel_temp0 = __PYX_NAN(); - int __pyx_parallel_temp1 = 0xbad0bad0; + int __pyx_parallel_temp0 = 0xbad0bad0; + float __pyx_parallel_temp1 = __PYX_NAN(); int __pyx_parallel_temp2 = 0xbad0bad0; int __pyx_parallel_temp3 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; @@ -26421,7 +26421,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO if (__pyx_t_14 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_22, __pyx_t_18, __pyx_t_3, __pyx_t_23, __pyx_t_17, __pyx_t_20, __pyx_t_16, __pyx_t_21, __pyx_t_15, __pyx_t_19) firstprivate(__pyx_t_8, __pyx_t_5, __pyx_t_10, __pyx_t_7, __pyx_t_9) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_17, __pyx_t_16, __pyx_t_21, __pyx_t_19, __pyx_t_22, __pyx_t_15, __pyx_t_23, __pyx_t_18, __pyx_t_3, __pyx_t_20) firstprivate(__pyx_t_5, __pyx_t_7, __pyx_t_9, __pyx_t_10, __pyx_t_8) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -26431,7 +26431,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) schedule(static) #endif /* _OPENMP */ for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_14; __pyx_t_13++){ if (__pyx_parallel_why < 2) @@ -26646,10 +26646,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO #pragma omp critical(__pyx_parallel_lastprivates24) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_coef; - __pyx_parallel_temp1 = __pyx_v_idx; - __pyx_parallel_temp2 = __pyx_v_j; - __pyx_parallel_temp3 = __pyx_v_i; + __pyx_parallel_temp0 = __pyx_v_i; + __pyx_parallel_temp1 = __pyx_v_coef; + __pyx_parallel_temp2 = __pyx_v_idx; + __pyx_parallel_temp3 = __pyx_v_j; } __pyx_L24:; #ifdef _OPENMP @@ -26666,16 +26666,16 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO #endif #endif /* _OPENMP */ /* Clean up any temporaries */ - __Pyx_XDECREF(__pyx_t_8); - __pyx_t_8 = NULL; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = NULL; - __Pyx_XDECREF(__pyx_t_10); - __pyx_t_10 = NULL; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = NULL; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = NULL; + __Pyx_XDECREF(__pyx_t_10); + __pyx_t_10 = NULL; + __Pyx_XDECREF(__pyx_t_8); + __pyx_t_8 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -26689,10 +26689,10 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11_distortion_10Distortion_10correct(CYTHO __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_coef = __pyx_parallel_temp0; - __pyx_v_idx = __pyx_parallel_temp1; - __pyx_v_j = __pyx_parallel_temp2; - __pyx_v_i = __pyx_parallel_temp3; + __pyx_v_i = __pyx_parallel_temp0; + __pyx_v_coef = __pyx_parallel_temp1; + __pyx_v_idx = __pyx_parallel_temp2; + __pyx_v_j = __pyx_parallel_temp3; switch (__pyx_parallel_why) { case 3: goto __pyx_L7_return; case 4: diff --git a/pyFAI/ext/_geometry.c b/pyFAI/ext/_geometry.c index 8811c652b..06fc517a0 100644 --- a/pyFAI/ext/_geometry.c +++ b/pyFAI/ext/_geometry.c @@ -2813,18 +2813,18 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_16, __pyx_t_18, __pyx_t_20, __pyx_t_17, __pyx_t_19) + #pragma omp parallel private(__pyx_t_17, __pyx_t_19, __pyx_t_16, __pyx_t_20, __pyx_t_18) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_p2) schedule(static) + #pragma omp for lastprivate(__pyx_v_p2) lastprivate(__pyx_v_p1) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ { __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_p1 = ((double)__PYX_NAN()); __pyx_v_p2 = ((double)__PYX_NAN()); + __pyx_v_p1 = ((double)__PYX_NAN()); /* "pyFAI/ext/_geometry.pyx":211 * if pos3 is None: @@ -3018,19 +3018,19 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_calc_pos_zyx(CYTHON_UNUSED PyOb if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_27, __pyx_t_22, __pyx_t_23, __pyx_t_25, __pyx_t_24, __pyx_t_26) + #pragma omp parallel private(__pyx_t_24, __pyx_t_26, __pyx_t_27, __pyx_t_22, __pyx_t_23, __pyx_t_25) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_p3) lastprivate(__pyx_v_p2) lastprivate(__pyx_v_p1) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for lastprivate(__pyx_v_p2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_p3) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_2; __pyx_t_14++){ { __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_p3 = ((double)__PYX_NAN()); __pyx_v_p2 = ((double)__PYX_NAN()); __pyx_v_p1 = ((double)__PYX_NAN()); + __pyx_v_p3 = ((double)__PYX_NAN()); /* "pyFAI/ext/_geometry.pyx":220 * c3 = numpy.ascontiguousarray(pos3.ravel(), dtype=numpy.float64) @@ -4120,7 +4120,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) + #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4284,7 +4284,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_2calc_tth(CYTHON_UNUSED PyObjec if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) + #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4979,7 +4979,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) + #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -5143,7 +5143,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_4calc_chi(CYTHON_UNUSED PyObjec if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) + #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -5846,7 +5846,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) + #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -6010,7 +6010,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_6calc_q(CYTHON_UNUSED PyObject if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) + #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -6705,7 +6705,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) + #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -6869,7 +6869,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_8calc_r(CYTHON_UNUSED PyObject if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) + #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7477,7 +7477,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj if (__pyx_t_13 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_16, __pyx_t_15, __pyx_t_14) + #pragma omp parallel private(__pyx_t_14, __pyx_t_16, __pyx_t_15) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7641,7 +7641,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_10calc_cosa(CYTHON_UNUSED PyObj if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_18, __pyx_t_20, __pyx_t_21, __pyx_t_19) + #pragma omp parallel private(__pyx_t_20, __pyx_t_19, __pyx_t_21, __pyx_t_18) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -8555,7 +8555,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P if (__pyx_t_14 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_27, __pyx_t_28, __pyx_t_20, __pyx_t_26, __pyx_t_21, __pyx_t_24, __pyx_t_23, __pyx_t_25, __pyx_t_15, __pyx_t_17, __pyx_t_19, __pyx_t_16, __pyx_t_18, __pyx_t_22) + #pragma omp parallel private(__pyx_t_19, __pyx_t_15, __pyx_t_17, __pyx_t_16, __pyx_t_18, __pyx_t_28, __pyx_t_20, __pyx_t_27, __pyx_t_22, __pyx_t_23, __pyx_t_25, __pyx_t_24, __pyx_t_26, __pyx_t_21) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -8829,7 +8829,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9_geometry_12calc_rad_azim(CYTHON_UNUSED P if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_30, __pyx_t_46, __pyx_t_39, __pyx_t_37, __pyx_t_38, __pyx_t_35, __pyx_t_36, __pyx_t_42, __pyx_t_34, __pyx_t_44, __pyx_t_32, __pyx_t_41, __pyx_t_40, __pyx_t_33, __pyx_t_45, __pyx_t_31, __pyx_t_43) + #pragma omp parallel private(__pyx_t_41, __pyx_t_45, __pyx_t_43, __pyx_t_42, __pyx_t_40, __pyx_t_33, __pyx_t_31, __pyx_t_46, __pyx_t_37, __pyx_t_30, __pyx_t_35, __pyx_t_44, __pyx_t_34, __pyx_t_39, __pyx_t_32, __pyx_t_38, __pyx_t_36) #endif /* _OPENMP */ { #ifdef _OPENMP diff --git a/pyFAI/ext/bilinear.c b/pyFAI/ext/bilinear.c index 5c1eb359f..65c233ab7 100644 --- a/pyFAI/ext/bilinear.c +++ b/pyFAI/ext/bilinear.c @@ -3309,12 +3309,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON __pyx_t_3 = __pyx_v_size; if (1 == 0) abort(); { - int __pyx_parallel_temp0 = 0xbad0bad0; - float __pyx_parallel_temp1 = __PYX_NAN(); - int __pyx_parallel_temp2 = 0xbad0bad0; + float __pyx_parallel_temp0 = __PYX_NAN(); + int __pyx_parallel_temp1 = 0xbad0bad0; + float __pyx_parallel_temp2 = __PYX_NAN(); float __pyx_parallel_temp3 = __PYX_NAN(); float __pyx_parallel_temp4 = __PYX_NAN(); - float __pyx_parallel_temp5 = __PYX_NAN(); + int __pyx_parallel_temp5 = 0xbad0bad0; float __pyx_parallel_temp6 = __PYX_NAN(); float __pyx_parallel_temp7 = __PYX_NAN(); float __pyx_parallel_temp8 = __PYX_NAN(); @@ -3342,7 +3342,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_30, __pyx_t_9, __pyx_t_32, __pyx_t_16, __pyx_t_72, __pyx_t_24, __pyx_t_53, __pyx_t_61, __pyx_t_42, __pyx_t_34, __pyx_t_59, __pyx_t_47, __pyx_t_37, __pyx_t_70, __pyx_t_26, __pyx_t_56, __pyx_t_48, __pyx_t_64, __pyx_t_67, __pyx_t_36, __pyx_t_52, __pyx_t_69, __pyx_t_65, __pyx_t_60, __pyx_t_28, __pyx_t_55, __pyx_t_66, __pyx_t_44, __pyx_t_29, __pyx_t_27, __pyx_t_68, __pyx_t_25, __pyx_t_51, __pyx_t_49, __pyx_t_39, __pyx_t_33, __pyx_t_40, __pyx_t_19, __pyx_t_22, __pyx_t_62, __pyx_t_18, __pyx_t_74, __pyx_t_54, __pyx_t_20, __pyx_t_31, __pyx_t_45, __pyx_t_17, __pyx_t_58, __pyx_t_21, __pyx_t_38, __pyx_t_35, __pyx_t_41, __pyx_t_23, __pyx_t_73, __pyx_t_50, __pyx_t_46, __pyx_t_63, __pyx_t_71, __pyx_t_57, __pyx_t_43) firstprivate(__pyx_t_5, __pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_1) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_30, __pyx_t_9, __pyx_t_32, __pyx_t_16, __pyx_t_72, __pyx_t_24, __pyx_t_66, __pyx_t_53, __pyx_t_61, __pyx_t_42, __pyx_t_34, __pyx_t_73, __pyx_t_59, __pyx_t_74, __pyx_t_47, __pyx_t_37, __pyx_t_70, __pyx_t_26, __pyx_t_56, __pyx_t_48, __pyx_t_64, __pyx_t_67, __pyx_t_36, __pyx_t_52, __pyx_t_69, __pyx_t_65, __pyx_t_60, __pyx_t_28, __pyx_t_55, __pyx_t_44, __pyx_t_29, __pyx_t_27, __pyx_t_25, __pyx_t_51, __pyx_t_49, __pyx_t_39, __pyx_t_33, __pyx_t_40, __pyx_t_19, __pyx_t_22, __pyx_t_62, __pyx_t_18, __pyx_t_54, __pyx_t_20, __pyx_t_31, __pyx_t_45, __pyx_t_17, __pyx_t_68, __pyx_t_58, __pyx_t_21, __pyx_t_38, __pyx_t_35, __pyx_t_41, __pyx_t_23, __pyx_t_50, __pyx_t_46, __pyx_t_63, __pyx_t_71, __pyx_t_57, __pyx_t_43) firstprivate(__pyx_t_5, __pyx_t_2, __pyx_t_1, __pyx_t_4, __pyx_t_6) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -3352,31 +3352,31 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_p2) lastprivate(__pyx_v_D2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_A1) lastprivate(__pyx_v_A0) lastprivate(__pyx_v_delta2) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_f1) lastprivate(__pyx_v_C2) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_C0) lastprivate(__pyx_v_B0) lastprivate(__pyx_v_C1) schedule(static) + #pragma omp for lastprivate(__pyx_v_A1) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_B0) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_C0) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_C2) lastprivate(__pyx_v_C1) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_delta2) lastprivate(__pyx_v_A0) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_p2) lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_D2) lastprivate(__pyx_v_f1) schedule(static) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_p2 = ((int)0xbad0bad0); - __pyx_v_D2 = ((float)__PYX_NAN()); - __pyx_v_p1 = ((int)0xbad0bad0); __pyx_v_A1 = ((float)__PYX_NAN()); - __pyx_v_A0 = ((float)__PYX_NAN()); - __pyx_v_delta2 = ((float)__PYX_NAN()); - __pyx_v_f2 = ((float)__PYX_NAN()); - __pyx_v_delta1 = ((float)__PYX_NAN()); - __pyx_v_D1 = ((float)__PYX_NAN()); - __pyx_v_B2 = ((float)__PYX_NAN()); + __pyx_v_p1 = ((int)0xbad0bad0); + __pyx_v_B0 = ((float)__PYX_NAN()); __pyx_v_B1 = ((float)__PYX_NAN()); - __pyx_v_f1 = ((float)__PYX_NAN()); + __pyx_v_C0 = ((float)__PYX_NAN()); __pyx_v_C2 = ((float)__PYX_NAN()); + __pyx_v_C1 = ((float)__PYX_NAN()); __pyx_v_D0 = ((float)__PYX_NAN()); + __pyx_v_delta2 = ((float)__PYX_NAN()); + __pyx_v_A0 = ((float)__PYX_NAN()); + __pyx_v_D1 = ((float)__PYX_NAN()); + __pyx_v_B2 = ((float)__PYX_NAN()); + __pyx_v_p2 = ((int)0xbad0bad0); + __pyx_v_delta1 = ((float)__PYX_NAN()); + __pyx_v_f2 = ((float)__PYX_NAN()); __pyx_v_A2 = ((float)__PYX_NAN()); - __pyx_v_C0 = ((float)__PYX_NAN()); - __pyx_v_B0 = ((float)__PYX_NAN()); - __pyx_v_C1 = ((float)__PYX_NAN()); + __pyx_v_D2 = ((float)__PYX_NAN()); + __pyx_v_f1 = ((float)__PYX_NAN()); /* "pyFAI/ext/bilinear.pyx":76 * @@ -4026,28 +4026,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON goto __pyx_L38; __pyx_L38:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates0) + #pragma omp critical(__pyx_parallel_lastprivates20) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_p2; - __pyx_parallel_temp1 = __pyx_v_D2; - __pyx_parallel_temp2 = __pyx_v_p1; - __pyx_parallel_temp3 = __pyx_v_A1; - __pyx_parallel_temp4 = __pyx_v_A0; - __pyx_parallel_temp5 = __pyx_v_delta2; - __pyx_parallel_temp6 = __pyx_v_f2; - __pyx_parallel_temp7 = __pyx_v_delta1; - __pyx_parallel_temp8 = __pyx_v_D1; - __pyx_parallel_temp9 = __pyx_v_B2; - __pyx_parallel_temp10 = __pyx_v_B1; - __pyx_parallel_temp11 = __pyx_v_f1; - __pyx_parallel_temp12 = __pyx_v_C2; - __pyx_parallel_temp13 = __pyx_v_i; - __pyx_parallel_temp14 = __pyx_v_D0; - __pyx_parallel_temp15 = __pyx_v_A2; - __pyx_parallel_temp16 = __pyx_v_C0; - __pyx_parallel_temp17 = __pyx_v_B0; - __pyx_parallel_temp18 = __pyx_v_C1; + __pyx_parallel_temp0 = __pyx_v_A1; + __pyx_parallel_temp1 = __pyx_v_p1; + __pyx_parallel_temp2 = __pyx_v_B0; + __pyx_parallel_temp3 = __pyx_v_B1; + __pyx_parallel_temp4 = __pyx_v_C0; + __pyx_parallel_temp5 = __pyx_v_i; + __pyx_parallel_temp6 = __pyx_v_C2; + __pyx_parallel_temp7 = __pyx_v_C1; + __pyx_parallel_temp8 = __pyx_v_D0; + __pyx_parallel_temp9 = __pyx_v_delta2; + __pyx_parallel_temp10 = __pyx_v_A0; + __pyx_parallel_temp11 = __pyx_v_D1; + __pyx_parallel_temp12 = __pyx_v_B2; + __pyx_parallel_temp13 = __pyx_v_p2; + __pyx_parallel_temp14 = __pyx_v_delta1; + __pyx_parallel_temp15 = __pyx_v_f2; + __pyx_parallel_temp16 = __pyx_v_A2; + __pyx_parallel_temp17 = __pyx_v_D2; + __pyx_parallel_temp18 = __pyx_v_f1; } __pyx_L39:; #ifdef _OPENMP @@ -4068,12 +4068,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON __pyx_t_5 = NULL; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = NULL; + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = NULL; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = NULL; - __Pyx_XDECREF(__pyx_t_1); - __pyx_t_1 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -4087,25 +4087,25 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_4calc_cartesian_positions(CYTHON __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_p2 = __pyx_parallel_temp0; - __pyx_v_D2 = __pyx_parallel_temp1; - __pyx_v_p1 = __pyx_parallel_temp2; - __pyx_v_A1 = __pyx_parallel_temp3; - __pyx_v_A0 = __pyx_parallel_temp4; - __pyx_v_delta2 = __pyx_parallel_temp5; - __pyx_v_f2 = __pyx_parallel_temp6; - __pyx_v_delta1 = __pyx_parallel_temp7; - __pyx_v_D1 = __pyx_parallel_temp8; - __pyx_v_B2 = __pyx_parallel_temp9; - __pyx_v_B1 = __pyx_parallel_temp10; - __pyx_v_f1 = __pyx_parallel_temp11; - __pyx_v_C2 = __pyx_parallel_temp12; - __pyx_v_i = __pyx_parallel_temp13; - __pyx_v_D0 = __pyx_parallel_temp14; - __pyx_v_A2 = __pyx_parallel_temp15; - __pyx_v_C0 = __pyx_parallel_temp16; - __pyx_v_B0 = __pyx_parallel_temp17; - __pyx_v_C1 = __pyx_parallel_temp18; + __pyx_v_A1 = __pyx_parallel_temp0; + __pyx_v_p1 = __pyx_parallel_temp1; + __pyx_v_B0 = __pyx_parallel_temp2; + __pyx_v_B1 = __pyx_parallel_temp3; + __pyx_v_C0 = __pyx_parallel_temp4; + __pyx_v_i = __pyx_parallel_temp5; + __pyx_v_C2 = __pyx_parallel_temp6; + __pyx_v_C1 = __pyx_parallel_temp7; + __pyx_v_D0 = __pyx_parallel_temp8; + __pyx_v_delta2 = __pyx_parallel_temp9; + __pyx_v_A0 = __pyx_parallel_temp10; + __pyx_v_D1 = __pyx_parallel_temp11; + __pyx_v_B2 = __pyx_parallel_temp12; + __pyx_v_p2 = __pyx_parallel_temp13; + __pyx_v_delta1 = __pyx_parallel_temp14; + __pyx_v_f2 = __pyx_parallel_temp15; + __pyx_v_A2 = __pyx_parallel_temp16; + __pyx_v_D2 = __pyx_parallel_temp17; + __pyx_v_f1 = __pyx_parallel_temp18; switch (__pyx_parallel_why) { case 3: goto __pyx_L4_return; case 4: @@ -4754,24 +4754,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON __pyx_t_3 = __pyx_v_size; if (1 == 0) abort(); { - int __pyx_parallel_temp0 = 0xbad0bad0; + float __pyx_parallel_temp0 = __PYX_NAN(); float __pyx_parallel_temp1 = __PYX_NAN(); float __pyx_parallel_temp2 = __PYX_NAN(); float __pyx_parallel_temp3 = __PYX_NAN(); float __pyx_parallel_temp4 = __PYX_NAN(); - float __pyx_parallel_temp5 = __PYX_NAN(); - float __pyx_parallel_temp6 = __PYX_NAN(); - int __pyx_parallel_temp7 = 0xbad0bad0; + int __pyx_parallel_temp5 = 0xbad0bad0; + int __pyx_parallel_temp6 = 0xbad0bad0; + float __pyx_parallel_temp7 = __PYX_NAN(); float __pyx_parallel_temp8 = __PYX_NAN(); float __pyx_parallel_temp9 = __PYX_NAN(); - int __pyx_parallel_temp10 = 0xbad0bad0; + float __pyx_parallel_temp10 = __PYX_NAN(); float __pyx_parallel_temp11 = __PYX_NAN(); float __pyx_parallel_temp12 = __PYX_NAN(); float __pyx_parallel_temp13 = __PYX_NAN(); float __pyx_parallel_temp14 = __PYX_NAN(); float __pyx_parallel_temp15 = __PYX_NAN(); float __pyx_parallel_temp16 = __PYX_NAN(); - float __pyx_parallel_temp17 = __PYX_NAN(); + int __pyx_parallel_temp17 = 0xbad0bad0; float __pyx_parallel_temp18 = __PYX_NAN(); const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; @@ -4787,7 +4787,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON if (__pyx_t_15 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_30, __pyx_t_9, __pyx_t_32, __pyx_t_16, __pyx_t_72, __pyx_t_24, __pyx_t_53, __pyx_t_61, __pyx_t_42, __pyx_t_34, __pyx_t_59, __pyx_t_47, __pyx_t_37, __pyx_t_70, __pyx_t_26, __pyx_t_56, __pyx_t_48, __pyx_t_64, __pyx_t_67, __pyx_t_36, __pyx_t_52, __pyx_t_69, __pyx_t_65, __pyx_t_60, __pyx_t_28, __pyx_t_55, __pyx_t_66, __pyx_t_44, __pyx_t_29, __pyx_t_27, __pyx_t_68, __pyx_t_25, __pyx_t_51, __pyx_t_49, __pyx_t_39, __pyx_t_33, __pyx_t_40, __pyx_t_19, __pyx_t_22, __pyx_t_62, __pyx_t_18, __pyx_t_74, __pyx_t_54, __pyx_t_20, __pyx_t_31, __pyx_t_45, __pyx_t_17, __pyx_t_58, __pyx_t_21, __pyx_t_38, __pyx_t_35, __pyx_t_41, __pyx_t_23, __pyx_t_73, __pyx_t_50, __pyx_t_46, __pyx_t_63, __pyx_t_71, __pyx_t_57, __pyx_t_43) firstprivate(__pyx_t_5, __pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_1) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_30, __pyx_t_9, __pyx_t_32, __pyx_t_16, __pyx_t_72, __pyx_t_24, __pyx_t_66, __pyx_t_53, __pyx_t_61, __pyx_t_42, __pyx_t_34, __pyx_t_73, __pyx_t_59, __pyx_t_74, __pyx_t_47, __pyx_t_37, __pyx_t_70, __pyx_t_26, __pyx_t_56, __pyx_t_48, __pyx_t_64, __pyx_t_67, __pyx_t_36, __pyx_t_52, __pyx_t_69, __pyx_t_65, __pyx_t_60, __pyx_t_28, __pyx_t_55, __pyx_t_44, __pyx_t_29, __pyx_t_27, __pyx_t_25, __pyx_t_51, __pyx_t_49, __pyx_t_39, __pyx_t_33, __pyx_t_40, __pyx_t_19, __pyx_t_22, __pyx_t_62, __pyx_t_18, __pyx_t_54, __pyx_t_20, __pyx_t_31, __pyx_t_45, __pyx_t_17, __pyx_t_68, __pyx_t_58, __pyx_t_21, __pyx_t_38, __pyx_t_35, __pyx_t_41, __pyx_t_23, __pyx_t_50, __pyx_t_46, __pyx_t_63, __pyx_t_71, __pyx_t_57, __pyx_t_43) firstprivate(__pyx_t_5, __pyx_t_2, __pyx_t_1, __pyx_t_4, __pyx_t_6) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4797,29 +4797,29 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_p2) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_delta2) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_f1) lastprivate(__pyx_v_D2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_C0) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_A1) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_C2) lastprivate(__pyx_v_A0) lastprivate(__pyx_v_B0) lastprivate(__pyx_v_C1) schedule(static) + #pragma omp for lastprivate(__pyx_v_f1) lastprivate(__pyx_v_delta1) lastprivate(__pyx_v_f2) lastprivate(__pyx_v_B1) lastprivate(__pyx_v_A2) lastprivate(__pyx_v_p2) lastprivate(__pyx_v_p1) lastprivate(__pyx_v_A1) lastprivate(__pyx_v_delta2) lastprivate(__pyx_v_C0) lastprivate(__pyx_v_D0) lastprivate(__pyx_v_D2) lastprivate(__pyx_v_D1) lastprivate(__pyx_v_A0) lastprivate(__pyx_v_B2) lastprivate(__pyx_v_C2) lastprivate(__pyx_v_B0) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_C1) schedule(static) #endif /* _OPENMP */ for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_15; __pyx_t_14++){ if (__pyx_parallel_why < 2) { __pyx_v_i = 0 + 1 * __pyx_t_14; /* Initialize private variables to invalid values */ - __pyx_v_p2 = ((int)0xbad0bad0); + __pyx_v_f1 = ((float)__PYX_NAN()); + __pyx_v_delta1 = ((float)__PYX_NAN()); + __pyx_v_f2 = ((float)__PYX_NAN()); __pyx_v_B1 = ((float)__PYX_NAN()); - __pyx_v_delta2 = ((float)__PYX_NAN()); __pyx_v_A2 = ((float)__PYX_NAN()); - __pyx_v_B2 = ((float)__PYX_NAN()); - __pyx_v_f1 = ((float)__PYX_NAN()); - __pyx_v_D2 = ((float)__PYX_NAN()); + __pyx_v_p2 = ((int)0xbad0bad0); __pyx_v_p1 = ((int)0xbad0bad0); - __pyx_v_f2 = ((float)__PYX_NAN()); - __pyx_v_C0 = ((float)__PYX_NAN()); __pyx_v_A1 = ((float)__PYX_NAN()); - __pyx_v_D1 = ((float)__PYX_NAN()); - __pyx_v_delta1 = ((float)__PYX_NAN()); + __pyx_v_delta2 = ((float)__PYX_NAN()); + __pyx_v_C0 = ((float)__PYX_NAN()); __pyx_v_D0 = ((float)__PYX_NAN()); - __pyx_v_C2 = ((float)__PYX_NAN()); + __pyx_v_D2 = ((float)__PYX_NAN()); + __pyx_v_D1 = ((float)__PYX_NAN()); __pyx_v_A0 = ((float)__PYX_NAN()); + __pyx_v_B2 = ((float)__PYX_NAN()); + __pyx_v_C2 = ((float)__PYX_NAN()); __pyx_v_B0 = ((float)__PYX_NAN()); __pyx_v_C1 = ((float)__PYX_NAN()); @@ -5471,27 +5471,27 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON goto __pyx_L38; __pyx_L38:; #ifdef _OPENMP - #pragma omp critical(__pyx_parallel_lastprivates1) + #pragma omp critical(__pyx_parallel_lastprivates21) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_p2; - __pyx_parallel_temp1 = __pyx_v_B1; - __pyx_parallel_temp2 = __pyx_v_delta2; - __pyx_parallel_temp3 = __pyx_v_A2; - __pyx_parallel_temp4 = __pyx_v_B2; - __pyx_parallel_temp5 = __pyx_v_f1; - __pyx_parallel_temp6 = __pyx_v_D2; - __pyx_parallel_temp7 = __pyx_v_p1; - __pyx_parallel_temp8 = __pyx_v_f2; + __pyx_parallel_temp0 = __pyx_v_f1; + __pyx_parallel_temp1 = __pyx_v_delta1; + __pyx_parallel_temp2 = __pyx_v_f2; + __pyx_parallel_temp3 = __pyx_v_B1; + __pyx_parallel_temp4 = __pyx_v_A2; + __pyx_parallel_temp5 = __pyx_v_p2; + __pyx_parallel_temp6 = __pyx_v_p1; + __pyx_parallel_temp7 = __pyx_v_A1; + __pyx_parallel_temp8 = __pyx_v_delta2; __pyx_parallel_temp9 = __pyx_v_C0; - __pyx_parallel_temp10 = __pyx_v_i; - __pyx_parallel_temp11 = __pyx_v_A1; + __pyx_parallel_temp10 = __pyx_v_D0; + __pyx_parallel_temp11 = __pyx_v_D2; __pyx_parallel_temp12 = __pyx_v_D1; - __pyx_parallel_temp13 = __pyx_v_delta1; - __pyx_parallel_temp14 = __pyx_v_D0; + __pyx_parallel_temp13 = __pyx_v_A0; + __pyx_parallel_temp14 = __pyx_v_B2; __pyx_parallel_temp15 = __pyx_v_C2; - __pyx_parallel_temp16 = __pyx_v_A0; - __pyx_parallel_temp17 = __pyx_v_B0; + __pyx_parallel_temp16 = __pyx_v_B0; + __pyx_parallel_temp17 = __pyx_v_i; __pyx_parallel_temp18 = __pyx_v_C1; } __pyx_L39:; @@ -5513,12 +5513,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON __pyx_t_5 = NULL; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = NULL; + __Pyx_XDECREF(__pyx_t_1); + __pyx_t_1 = NULL; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = NULL; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = NULL; - __Pyx_XDECREF(__pyx_t_1); - __pyx_t_1 = NULL; #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif @@ -5532,24 +5532,24 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_6calc_cartesian_positions(CYTHON __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_p2 = __pyx_parallel_temp0; - __pyx_v_B1 = __pyx_parallel_temp1; - __pyx_v_delta2 = __pyx_parallel_temp2; - __pyx_v_A2 = __pyx_parallel_temp3; - __pyx_v_B2 = __pyx_parallel_temp4; - __pyx_v_f1 = __pyx_parallel_temp5; - __pyx_v_D2 = __pyx_parallel_temp6; - __pyx_v_p1 = __pyx_parallel_temp7; - __pyx_v_f2 = __pyx_parallel_temp8; + __pyx_v_f1 = __pyx_parallel_temp0; + __pyx_v_delta1 = __pyx_parallel_temp1; + __pyx_v_f2 = __pyx_parallel_temp2; + __pyx_v_B1 = __pyx_parallel_temp3; + __pyx_v_A2 = __pyx_parallel_temp4; + __pyx_v_p2 = __pyx_parallel_temp5; + __pyx_v_p1 = __pyx_parallel_temp6; + __pyx_v_A1 = __pyx_parallel_temp7; + __pyx_v_delta2 = __pyx_parallel_temp8; __pyx_v_C0 = __pyx_parallel_temp9; - __pyx_v_i = __pyx_parallel_temp10; - __pyx_v_A1 = __pyx_parallel_temp11; + __pyx_v_D0 = __pyx_parallel_temp10; + __pyx_v_D2 = __pyx_parallel_temp11; __pyx_v_D1 = __pyx_parallel_temp12; - __pyx_v_delta1 = __pyx_parallel_temp13; - __pyx_v_D0 = __pyx_parallel_temp14; + __pyx_v_A0 = __pyx_parallel_temp13; + __pyx_v_B2 = __pyx_parallel_temp14; __pyx_v_C2 = __pyx_parallel_temp15; - __pyx_v_A0 = __pyx_parallel_temp16; - __pyx_v_B0 = __pyx_parallel_temp17; + __pyx_v_B0 = __pyx_parallel_temp16; + __pyx_v_i = __pyx_parallel_temp17; __pyx_v_C1 = __pyx_parallel_temp18; switch (__pyx_parallel_why) { case 3: goto __pyx_L4_return; @@ -6744,7 +6744,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_10convert_corner_2D_to_4D(CYTHON if (__pyx_t_9 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_32, __pyx_t_17, __pyx_t_47, __pyx_t_43, __pyx_t_56, __pyx_t_22, __pyx_t_31, __pyx_t_36, __pyx_t_42, __pyx_t_52, __pyx_t_48, __pyx_t_55, __pyx_t_16, __pyx_t_59, __pyx_t_24, __pyx_t_30, __pyx_t_39, __pyx_t_58, __pyx_t_13, __pyx_t_51, __pyx_t_44, __pyx_t_34, __pyx_t_40, __pyx_t_28, __pyx_t_45, __pyx_t_25, __pyx_t_35, __pyx_t_33, __pyx_t_14, __pyx_t_19, __pyx_t_57, __pyx_t_38, __pyx_t_18, __pyx_t_12, __pyx_t_26, __pyx_t_54, __pyx_t_20, __pyx_t_41, __pyx_t_29, __pyx_t_11, __pyx_t_21, __pyx_t_46, __pyx_t_49, __pyx_t_23, __pyx_t_10, __pyx_t_15, __pyx_t_50, __pyx_t_37, __pyx_t_27, __pyx_t_53) + #pragma omp parallel private(__pyx_t_32, __pyx_t_35, __pyx_t_17, __pyx_t_47, __pyx_t_43, __pyx_t_54, __pyx_t_22, __pyx_t_31, __pyx_t_36, __pyx_t_42, __pyx_t_52, __pyx_t_48, __pyx_t_55, __pyx_t_16, __pyx_t_24, __pyx_t_30, __pyx_t_39, __pyx_t_13, __pyx_t_51, __pyx_t_34, __pyx_t_40, __pyx_t_28, __pyx_t_45, __pyx_t_25, __pyx_t_33, __pyx_t_14, __pyx_t_19, __pyx_t_56, __pyx_t_59, __pyx_t_38, __pyx_t_18, __pyx_t_57, __pyx_t_12, __pyx_t_26, __pyx_t_20, __pyx_t_41, __pyx_t_29, __pyx_t_11, __pyx_t_21, __pyx_t_46, __pyx_t_49, __pyx_t_23, __pyx_t_10, __pyx_t_15, __pyx_t_50, __pyx_t_58, __pyx_t_44, __pyx_t_37, __pyx_t_27, __pyx_t_53) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7541,7 +7541,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_8bilinear_12convert_corner_2D_to_4D(CYTHON if (__pyx_t_9 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_32, __pyx_t_17, __pyx_t_47, __pyx_t_43, __pyx_t_56, __pyx_t_22, __pyx_t_31, __pyx_t_36, __pyx_t_42, __pyx_t_52, __pyx_t_48, __pyx_t_55, __pyx_t_16, __pyx_t_59, __pyx_t_24, __pyx_t_30, __pyx_t_39, __pyx_t_58, __pyx_t_13, __pyx_t_51, __pyx_t_44, __pyx_t_34, __pyx_t_40, __pyx_t_28, __pyx_t_45, __pyx_t_25, __pyx_t_35, __pyx_t_33, __pyx_t_14, __pyx_t_19, __pyx_t_57, __pyx_t_38, __pyx_t_18, __pyx_t_12, __pyx_t_26, __pyx_t_54, __pyx_t_20, __pyx_t_41, __pyx_t_29, __pyx_t_11, __pyx_t_21, __pyx_t_46, __pyx_t_49, __pyx_t_23, __pyx_t_10, __pyx_t_15, __pyx_t_50, __pyx_t_37, __pyx_t_27, __pyx_t_53) + #pragma omp parallel private(__pyx_t_32, __pyx_t_35, __pyx_t_17, __pyx_t_47, __pyx_t_43, __pyx_t_54, __pyx_t_22, __pyx_t_31, __pyx_t_36, __pyx_t_42, __pyx_t_52, __pyx_t_48, __pyx_t_55, __pyx_t_16, __pyx_t_24, __pyx_t_30, __pyx_t_39, __pyx_t_13, __pyx_t_51, __pyx_t_34, __pyx_t_40, __pyx_t_28, __pyx_t_45, __pyx_t_25, __pyx_t_33, __pyx_t_14, __pyx_t_19, __pyx_t_56, __pyx_t_59, __pyx_t_38, __pyx_t_18, __pyx_t_57, __pyx_t_12, __pyx_t_26, __pyx_t_20, __pyx_t_41, __pyx_t_29, __pyx_t_11, __pyx_t_21, __pyx_t_46, __pyx_t_49, __pyx_t_23, __pyx_t_10, __pyx_t_15, __pyx_t_50, __pyx_t_58, __pyx_t_44, __pyx_t_37, __pyx_t_27, __pyx_t_53) #endif /* _OPENMP */ { #ifdef _OPENMP diff --git a/pyFAI/ext/histogram.c b/pyFAI/ext/histogram.c index 07c3544a6..c030422c1 100644 --- a/pyFAI/ext/histogram.c +++ b/pyFAI/ext/histogram.c @@ -3005,21 +3005,21 @@ __pyx_t_19.strides[1] = __pyx_v_big_data.strides[1]; if (__pyx_t_21 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_22, __pyx_t_23, __pyx_t_26, __pyx_t_27, __pyx_t_15, __pyx_t_24, __pyx_t_25, __pyx_t_4) + #pragma omp parallel private(__pyx_t_4, __pyx_t_25, __pyx_t_15, __pyx_t_24, __pyx_t_22, __pyx_t_23, __pyx_t_26, __pyx_t_27) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_a) lastprivate(__pyx_v_thread) lastprivate(__pyx_v_fbin) lastprivate(__pyx_v_d) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_bin) + #pragma omp for lastprivate(__pyx_v_bin) lastprivate(__pyx_v_a) lastprivate(__pyx_v_d) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_fbin) lastprivate(__pyx_v_thread) #endif /* _OPENMP */ for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_21; __pyx_t_20++){ { __pyx_v_i = 0 + 1 * __pyx_t_20; /* Initialize private variables to invalid values */ + __pyx_v_bin = ((int)0xbad0bad0); __pyx_v_a = ((double)__PYX_NAN()); - __pyx_v_thread = ((int)0xbad0bad0); - __pyx_v_fbin = ((double)__PYX_NAN()); __pyx_v_d = ((double)__PYX_NAN()); - __pyx_v_bin = ((int)0xbad0bad0); + __pyx_v_fbin = ((double)__PYX_NAN()); + __pyx_v_thread = ((int)0xbad0bad0); /* "pyFAI/ext/histogram_omp.pxi":119 * with nogil: @@ -3153,7 +3153,7 @@ __pyx_t_19.strides[1] = __pyx_v_big_data.strides[1]; if (__pyx_t_5 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_35, __pyx_t_34, __pyx_t_31, __pyx_t_28, __pyx_t_30, __pyx_t_29, __pyx_t_36, __pyx_t_33, __pyx_t_32, __pyx_t_4) + #pragma omp parallel private(__pyx_t_4, __pyx_t_32, __pyx_t_36, __pyx_t_33, __pyx_t_35, __pyx_t_34, __pyx_t_28, __pyx_t_31, __pyx_t_30, __pyx_t_29) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -4768,7 +4768,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_9histogram_2histogram2d(CYTHON_UNUSED PyOb if (__pyx_t_31 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_38, __pyx_t_35, __pyx_t_42, __pyx_t_34, __pyx_t_43, __pyx_t_22, __pyx_t_37, __pyx_t_36, __pyx_t_33, __pyx_t_40, __pyx_t_32, __pyx_t_41, __pyx_t_39) + #pragma omp parallel private(__pyx_t_32, __pyx_t_36, __pyx_t_33, __pyx_t_40, __pyx_t_41, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_42, __pyx_t_22, __pyx_t_37) #endif /* _OPENMP */ { #ifdef _OPENMP diff --git a/pyFAI/ext/reconstruct.c b/pyFAI/ext/reconstruct.c index 387289e64..99aed4485 100644 --- a/pyFAI/ext/reconstruct.c +++ b/pyFAI/ext/reconstruct.c @@ -2913,7 +2913,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_11reconstruct_reconstruct(CYTHON_UNUSED Py #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_p1) firstprivate(__pyx_v_p0) lastprivate(__pyx_v_p0) schedule(guided) + #pragma omp for firstprivate(__pyx_v_p0) lastprivate(__pyx_v_p0) lastprivate(__pyx_v_p1) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_17; __pyx_t_16++){ { diff --git a/pyFAI/ext/splitBBoxCSR.c b/pyFAI/ext/splitBBoxCSR.c index 1d187cbbb..8dd836000 100644 --- a/pyFAI/ext/splitBBoxCSR.c +++ b/pyFAI/ext/splitBBoxCSR.c @@ -6079,8 +6079,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_6calc_lut(CYT __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); /* "pyFAI/ext/splitBBoxCSR.pyx":323 * try: @@ -7605,12 +7605,12 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_8calc_lut_nos __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; goto __pyx_L31_try_end; __pyx_L24_error:; + __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); /* "pyFAI/ext/splitBBoxCSR.pyx":449 * try: @@ -9242,8 +9242,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C __pyx_t_2 = __pyx_v_size; if (1 == 0) abort(); { - float __pyx_parallel_temp0 = __PYX_NAN(); - __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; + __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; + float __pyx_parallel_temp1 = __PYX_NAN(); const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -9258,7 +9258,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_21, __pyx_t_24, __pyx_t_19, __pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_19, __pyx_t_18, __pyx_t_24, __pyx_t_13, __pyx_t_20, __pyx_t_12, __pyx_t_22, __pyx_t_23, __pyx_t_21) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -9268,7 +9268,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_17; __pyx_t_16++){ if (__pyx_parallel_why < 2) @@ -9462,8 +9462,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C #pragma omp critical(__pyx_parallel_lastprivates12) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_data; - __pyx_parallel_temp1 = __pyx_v_i; + __pyx_parallel_temp0 = __pyx_v_i; + __pyx_parallel_temp1 = __pyx_v_data; } __pyx_L28:; #ifdef _OPENMP @@ -9493,8 +9493,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_data = __pyx_parallel_temp0; - __pyx_v_i = __pyx_parallel_temp1; + __pyx_v_i = __pyx_parallel_temp0; + __pyx_v_data = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L11_return; case 4: @@ -9570,8 +9570,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C __pyx_t_17 = __pyx_v_size; if (1 == 0) abort(); { - float __pyx_parallel_temp0 = __PYX_NAN(); - __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; + __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; + float __pyx_parallel_temp1 = __PYX_NAN(); const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -9586,7 +9586,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_25, __pyx_t_27, __pyx_t_30, __pyx_t_26, __pyx_t_28, __pyx_t_12, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_29, __pyx_t_30, __pyx_t_26, __pyx_t_12, __pyx_t_27, __pyx_t_25, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -9596,7 +9596,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_2; __pyx_t_16++){ if (__pyx_parallel_why < 2) @@ -9745,8 +9745,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C #pragma omp critical(__pyx_parallel_lastprivates13) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_data; - __pyx_parallel_temp1 = __pyx_v_i; + __pyx_parallel_temp0 = __pyx_v_i; + __pyx_parallel_temp1 = __pyx_v_data; } __pyx_L41:; #ifdef _OPENMP @@ -9776,8 +9776,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_data = __pyx_parallel_temp0; - __pyx_v_i = __pyx_parallel_temp1; + __pyx_v_i = __pyx_parallel_temp0; + __pyx_v_data = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L29_return; case 4: @@ -9973,11 +9973,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_33, __pyx_t_31, __pyx_t_32, __pyx_t_13) + #pragma omp parallel private(__pyx_t_31, __pyx_t_32, __pyx_t_33, __pyx_t_12, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_17; __pyx_t_16++){ { @@ -10171,22 +10171,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_38, __pyx_t_36, __pyx_t_40, __pyx_t_41, __pyx_t_39, __pyx_t_34, __pyx_t_35, __pyx_t_42, __pyx_t_13, __pyx_t_12, __pyx_t_37) + #pragma omp parallel private(__pyx_t_40, __pyx_t_41, __pyx_t_34, __pyx_t_13, __pyx_t_37, __pyx_t_12, __pyx_t_35, __pyx_t_39, __pyx_t_38, __pyx_t_36, __pyx_t_42) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(guided) + #pragma omp for lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_idx) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_data) lastprivate(__pyx_v_j) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_2; __pyx_t_16++){ { __pyx_v_i = 0 + 1 * __pyx_t_16; /* Initialize private variables to invalid values */ - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_data = ((float)__PYX_NAN()); __pyx_v_sum_count = ((double)__PYX_NAN()); - __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_sum_data = ((double)__PYX_NAN()); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); /* "pyFAI/ext/splitBBoxCSR.pyx":600 * @@ -15213,15 +15213,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_6calc_lut(CYT __Pyx_XDECREF(__pyx_t_33); __pyx_t_33 = 0; goto __pyx_L36_try_end; __pyx_L29_error:; + __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_16, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); /* "pyFAI/ext/splitBBoxCSR.pyx":944 * try: @@ -17469,11 +17469,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_8calc_lut_nos __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; goto __pyx_L28_try_end; __pyx_L21_error:; + __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_14, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); @@ -19281,7 +19281,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_19 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_22, __pyx_t_16, __pyx_t_26, __pyx_t_15, __pyx_t_21, __pyx_t_24, __pyx_t_25, __pyx_t_23, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_25, __pyx_t_15, __pyx_t_21, __pyx_t_24, __pyx_t_16, __pyx_t_22, __pyx_t_23, __pyx_t_26, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19609,7 +19609,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_31, __pyx_t_28, __pyx_t_27, __pyx_t_29, __pyx_t_15, __pyx_t_30, __pyx_t_32) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_32, __pyx_t_15, __pyx_t_27, __pyx_t_28, __pyx_t_31, __pyx_t_30, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19996,7 +19996,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_19 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_33, __pyx_t_16, __pyx_t_35, __pyx_t_15) + #pragma omp parallel private(__pyx_t_16, __pyx_t_34, __pyx_t_15, __pyx_t_35, __pyx_t_33) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -20194,22 +20194,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxCSR_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_38, __pyx_t_42, __pyx_t_16, __pyx_t_43, __pyx_t_36, __pyx_t_15, __pyx_t_44, __pyx_t_45, __pyx_t_40, __pyx_t_41, __pyx_t_39, __pyx_t_37) + #pragma omp parallel private(__pyx_t_45, __pyx_t_15, __pyx_t_16, __pyx_t_40, __pyx_t_41, __pyx_t_39, __pyx_t_43, __pyx_t_37, __pyx_t_38, __pyx_t_42, __pyx_t_36, __pyx_t_44) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_sum_data) schedule(guided) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_idx) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_3; __pyx_t_18++){ { __pyx_v_i = 0 + 1 * __pyx_t_18; /* Initialize private variables to invalid values */ - __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_idx = ((int)0xbad0bad0); - __pyx_v_j = ((int)0xbad0bad0); __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_sum_count = ((double)__PYX_NAN()); + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_j = ((int)0xbad0bad0); __pyx_v_sum_data = ((double)__PYX_NAN()); + __pyx_v_idx = ((int)0xbad0bad0); /* "pyFAI/ext/splitBBoxCSR.pyx":1308 * diff --git a/pyFAI/ext/splitBBoxLUT.c b/pyFAI/ext/splitBBoxLUT.c index 67ee58bd0..547572c83 100644 --- a/pyFAI/ext/splitBBoxLUT.c +++ b/pyFAI/ext/splitBBoxLUT.c @@ -5647,14 +5647,14 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_4calc_lut(CYT __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0; goto __pyx_L36_try_end; __pyx_L29_error:; + __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); /* "pyFAI/ext/splitBBoxLUT.pyx":279 @@ -8301,7 +8301,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C if (__pyx_t_18 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_20, __pyx_t_25, __pyx_t_13, __pyx_t_21, __pyx_t_24, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_25, __pyx_t_12, __pyx_t_21, __pyx_t_24, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -8629,7 +8629,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_28, __pyx_t_30, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_31, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_12, __pyx_t_30, __pyx_t_31) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -9016,7 +9016,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C if (__pyx_t_18 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_34, __pyx_t_32, __pyx_t_13, __pyx_t_33) + #pragma omp parallel private(__pyx_t_34, __pyx_t_13, __pyx_t_32, __pyx_t_12, __pyx_t_33) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -9214,22 +9214,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_10integrate(C if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_42, __pyx_t_37, __pyx_t_44, __pyx_t_41, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_35) + #pragma omp parallel private(__pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_42, __pyx_t_37, __pyx_t_44, __pyx_t_13, __pyx_t_41, __pyx_t_12, __pyx_t_36, __pyx_t_40, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) schedule(guided) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_2; __pyx_t_17++){ { __pyx_v_i = 0 + 1 * __pyx_t_17; /* Initialize private variables to invalid values */ + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_sum_data = ((double)__PYX_NAN()); __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_sum_data = ((double)__PYX_NAN()); __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_sum_count = ((double)__PYX_NAN()); /* "pyFAI/ext/splitBBoxLUT.pyx":505 * @@ -10901,8 +10901,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k __pyx_t_2 = __pyx_v_size; if (1 == 0) abort(); { - __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; - float __pyx_parallel_temp1 = __PYX_NAN(); + float __pyx_parallel_temp0 = __PYX_NAN(); + __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -10917,7 +10917,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_13, __pyx_t_21, __pyx_t_24, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_24, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -10927,7 +10927,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_17; __pyx_t_16++){ if (__pyx_parallel_why < 2) @@ -11121,8 +11121,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k #pragma omp critical(__pyx_parallel_lastprivates8) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_data; + __pyx_parallel_temp0 = __pyx_v_data; + __pyx_parallel_temp1 = __pyx_v_i; } __pyx_L28:; #ifdef _OPENMP @@ -11152,8 +11152,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_data = __pyx_parallel_temp1; + __pyx_v_data = __pyx_parallel_temp0; + __pyx_v_i = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L11_return; case 4: @@ -11229,8 +11229,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k __pyx_t_17 = __pyx_v_size; if (1 == 0) abort(); { - __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; - float __pyx_parallel_temp1 = __PYX_NAN(); + float __pyx_parallel_temp0 = __PYX_NAN(); + __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -11245,7 +11245,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_28, __pyx_t_30, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12, __pyx_t_30) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -11255,7 +11255,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_2; __pyx_t_16++){ if (__pyx_parallel_why < 2) @@ -11404,8 +11404,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k #pragma omp critical(__pyx_parallel_lastprivates9) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_i; - __pyx_parallel_temp1 = __pyx_v_data; + __pyx_parallel_temp0 = __pyx_v_data; + __pyx_parallel_temp1 = __pyx_v_i; } __pyx_L41:; #ifdef _OPENMP @@ -11435,8 +11435,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_i = __pyx_parallel_temp0; - __pyx_v_data = __pyx_parallel_temp1; + __pyx_v_data = __pyx_parallel_temp0; + __pyx_v_i = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L29_return; case 4: @@ -11632,11 +11632,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_13, __pyx_t_33) + #pragma omp parallel private(__pyx_t_31, __pyx_t_32, __pyx_t_33, __pyx_t_12, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) + #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_17; __pyx_t_16++){ { @@ -11830,28 +11830,28 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox1d_12integrate_k if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_42, __pyx_t_37, __pyx_t_40, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_41, __pyx_t_35) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_13, __pyx_t_37, __pyx_t_40, __pyx_t_42, __pyx_t_12, __pyx_t_36, __pyx_t_41, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_y_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_c_count) lastprivate(__pyx_v_t_data) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_y_count) lastprivate(__pyx_v_c_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_t_count) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) schedule(guided) + #pragma omp for lastprivate(__pyx_v_c_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_c_count) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_t_data) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_y_count) lastprivate(__pyx_v_data) lastprivate(__pyx_v_t_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_y_data) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_2; __pyx_t_16++){ { __pyx_v_i = 0 + 1 * __pyx_t_16; /* Initialize private variables to invalid values */ - __pyx_v_y_data = ((float)__PYX_NAN()); - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_c_count = ((float)__PYX_NAN()); - __pyx_v_t_data = ((float)__PYX_NAN()); - __pyx_v_sum_data = ((float)__PYX_NAN()); - __pyx_v_y_count = ((float)__PYX_NAN()); __pyx_v_c_data = ((float)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_t_count = ((float)__PYX_NAN()); + __pyx_v_sum_data = ((float)__PYX_NAN()); + __pyx_v_c_count = ((float)__PYX_NAN()); __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_t_data = ((float)__PYX_NAN()); __pyx_v_sum_count = ((float)__PYX_NAN()); + __pyx_v_y_count = ((float)__PYX_NAN()); + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_t_count = ((float)__PYX_NAN()); + __pyx_v_y_data = ((float)__PYX_NAN()); /* "pyFAI/ext/splitBBoxLUT.pyx":661 * @@ -15929,15 +15929,15 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_4calc_lut(CYT __Pyx_XDECREF(__pyx_t_31); __pyx_t_31 = 0; goto __pyx_L36_try_end; __pyx_L29_error:; + __PYX_XDEC_MEMVIEW(&__pyx_t_14, 1); + __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_XDEC_MEMVIEW(&__pyx_t_14, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); - __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); /* "pyFAI/ext/splitBBoxLUT.pyx":954 @@ -19339,7 +19339,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_13, __pyx_t_21, __pyx_t_24, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_24, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -19667,7 +19667,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_28, __pyx_t_30, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12, __pyx_t_30) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -20054,7 +20054,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C if (__pyx_t_17 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_13, __pyx_t_33) + #pragma omp parallel private(__pyx_t_31, __pyx_t_32, __pyx_t_33, __pyx_t_12, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -20252,11 +20252,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C if (__pyx_t_3 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_47, __pyx_t_42, __pyx_t_37, __pyx_t_50, __pyx_t_45, __pyx_t_48, __pyx_t_49, __pyx_t_44, __pyx_t_36, __pyx_t_51, __pyx_t_12, __pyx_t_40, __pyx_t_46, __pyx_t_41, __pyx_t_35, __pyx_t_13) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_43, __pyx_t_38, __pyx_t_50, __pyx_t_47, __pyx_t_42, __pyx_t_49, __pyx_t_37, __pyx_t_48, __pyx_t_45, __pyx_t_13, __pyx_t_12, __pyx_t_44, __pyx_t_36, __pyx_t_40, __pyx_t_51, __pyx_t_46, __pyx_t_41, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i0) lastprivate(__pyx_v_i0) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_i1) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_data) schedule(guided) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i0) lastprivate(__pyx_v_i0) lastprivate(__pyx_v_i1) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_3; __pyx_t_16++){ { @@ -20264,11 +20264,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_12splitBBoxLUT_11HistoBBox2d_10integrate(C /* Initialize private variables to invalid values */ __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_sum_data = ((double)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_data = ((float)__PYX_NAN()); __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_i1 = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_sum_data = ((double)__PYX_NAN()); /* "pyFAI/ext/splitBBoxLUT.pyx":1264 * diff --git a/pyFAI/ext/splitPixelFullCSR.c b/pyFAI/ext/splitPixelFullCSR.c index c859a9975..373a41489 100644 --- a/pyFAI/ext/splitPixelFullCSR.c +++ b/pyFAI/ext/splitPixelFullCSR.c @@ -7452,7 +7452,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_17, __pyx_t_13, __pyx_t_21, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_17, __pyx_t_21, __pyx_t_19, __pyx_t_22, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_18, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7780,7 +7780,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_28, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_24, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_25, __pyx_t_24, __pyx_t_28, __pyx_t_12, __pyx_t_26, __pyx_t_27, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -8167,7 +8167,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_30, __pyx_t_13) + #pragma omp parallel private(__pyx_t_12, __pyx_t_32, __pyx_t_31, __pyx_t_30, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -8365,21 +8365,21 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_1d_4int if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_33, __pyx_t_37, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_41, __pyx_t_35) + #pragma omp parallel private(__pyx_t_36, __pyx_t_13, __pyx_t_40, __pyx_t_33, __pyx_t_41, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_12, __pyx_t_37) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_sum_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) schedule(guided) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_2; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ + __pyx_v_coef = ((float)__PYX_NAN()); + __pyx_v_sum_count = ((float)__PYX_NAN()); __pyx_v_sum_data = ((float)__PYX_NAN()); __pyx_v_data = ((float)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_sum_count = ((float)__PYX_NAN()); - __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); /* "pyFAI/ext/splitPixelFullCSR.pyx":563 @@ -15386,8 +15386,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int __pyx_t_4 = __pyx_v_size; if (1 == 0) abort(); { - float __pyx_parallel_temp0 = __PYX_NAN(); - __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; + __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; + float __pyx_parallel_temp1 = __PYX_NAN(); const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -15402,7 +15402,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_20, __pyx_t_17, __pyx_t_13, __pyx_t_21, __pyx_t_12, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_17, __pyx_t_21, __pyx_t_19, __pyx_t_22, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_18, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -15412,7 +15412,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_16; __pyx_t_15++){ if (__pyx_parallel_why < 2) @@ -15606,8 +15606,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int #pragma omp critical(__pyx_parallel_lastprivates18) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_data; - __pyx_parallel_temp1 = __pyx_v_i; + __pyx_parallel_temp0 = __pyx_v_i; + __pyx_parallel_temp1 = __pyx_v_data; } __pyx_L28:; #ifdef _OPENMP @@ -15637,8 +15637,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_data = __pyx_parallel_temp0; - __pyx_v_i = __pyx_parallel_temp1; + __pyx_v_i = __pyx_parallel_temp0; + __pyx_v_data = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L11_return; case 4: @@ -15714,8 +15714,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int __pyx_t_16 = __pyx_v_size; if (1 == 0) abort(); { - float __pyx_parallel_temp0 = __PYX_NAN(); - __pyx_t_5numpy_int32_t __pyx_parallel_temp1 = 0xbad0bad0; + __pyx_t_5numpy_int32_t __pyx_parallel_temp0 = 0xbad0bad0; + float __pyx_parallel_temp1 = __PYX_NAN(); const char *__pyx_parallel_filename = NULL; int __pyx_parallel_lineno = 0, __pyx_parallel_clineno = 0; PyObject *__pyx_parallel_exc_type = NULL, *__pyx_parallel_exc_value = NULL, *__pyx_parallel_exc_tb = NULL; int __pyx_parallel_why; @@ -15730,7 +15730,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int if (__pyx_t_4 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_28, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_24, __pyx_t_12) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_25, __pyx_t_24, __pyx_t_28, __pyx_t_12, __pyx_t_26, __pyx_t_27, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -15740,7 +15740,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int Py_BEGIN_ALLOW_THREADS #endif /* _OPENMP */ #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_4; __pyx_t_15++){ if (__pyx_parallel_why < 2) @@ -15889,8 +15889,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int #pragma omp critical(__pyx_parallel_lastprivates19) #endif /* _OPENMP */ { - __pyx_parallel_temp0 = __pyx_v_data; - __pyx_parallel_temp1 = __pyx_v_i; + __pyx_parallel_temp0 = __pyx_v_i; + __pyx_parallel_temp1 = __pyx_v_data; } __pyx_L41:; #ifdef _OPENMP @@ -15920,8 +15920,8 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int __pyx_parallel_why = 4; } if (__pyx_parallel_why) { - __pyx_v_data = __pyx_parallel_temp0; - __pyx_v_i = __pyx_parallel_temp1; + __pyx_v_i = __pyx_parallel_temp0; + __pyx_v_data = __pyx_parallel_temp1; switch (__pyx_parallel_why) { case 3: goto __pyx_L29_return; case 4: @@ -16117,11 +16117,11 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_30, __pyx_t_13) + #pragma omp parallel private(__pyx_t_12, __pyx_t_32, __pyx_t_31, __pyx_t_30, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(static) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) schedule(static) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_16; __pyx_t_15++){ { @@ -16315,22 +16315,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullCSR_15FullSplitCSR_2d_4int if (__pyx_t_4 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_33, __pyx_t_37, __pyx_t_13, __pyx_t_36, __pyx_t_12, __pyx_t_40, __pyx_t_41, __pyx_t_35) + #pragma omp parallel private(__pyx_t_36, __pyx_t_13, __pyx_t_40, __pyx_t_33, __pyx_t_41, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_12, __pyx_t_37) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) schedule(guided) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_data) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_4; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ - __pyx_v_sum_data = ((float)__PYX_NAN()); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_data = ((float)__PYX_NAN()); __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_data = ((float)__PYX_NAN()); + __pyx_v_sum_data = ((float)__PYX_NAN()); __pyx_v_sum_count = ((float)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); /* "pyFAI/ext/splitPixelFullCSR.pyx":1201 * diff --git a/pyFAI/ext/splitPixelFullLUT.c b/pyFAI/ext/splitPixelFullLUT.c index f4abdb2a0..16be53e5d 100644 --- a/pyFAI/ext/splitPixelFullLUT.c +++ b/pyFAI/ext/splitPixelFullLUT.c @@ -6878,7 +6878,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_21, __pyx_t_19, __pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_17, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_13, __pyx_t_20, __pyx_t_17, __pyx_t_12, __pyx_t_21, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7206,7 +7206,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_24, __pyx_t_25, __pyx_t_27, __pyx_t_26, __pyx_t_28, __pyx_t_12, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12, __pyx_t_24) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7593,7 +7593,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_30, __pyx_t_12, __pyx_t_13, __pyx_t_32, __pyx_t_31) + #pragma omp parallel private(__pyx_t_12, __pyx_t_32, __pyx_t_30, __pyx_t_31, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7791,22 +7791,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT1dFullSplit_ if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_36, __pyx_t_40, __pyx_t_33, __pyx_t_41, __pyx_t_39, __pyx_t_38, __pyx_t_35, __pyx_t_34, __pyx_t_13, __pyx_t_12, __pyx_t_37) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_37, __pyx_t_38, __pyx_t_33, __pyx_t_13, __pyx_t_12, __pyx_t_36, __pyx_t_40, __pyx_t_41, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_j) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) schedule(guided) + #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_data) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_2; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ - __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_sum_data = ((float)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_coef = ((float)__PYX_NAN()); __pyx_v_sum_count = ((float)__PYX_NAN()); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_data = ((float)__PYX_NAN()); /* "pyFAI/ext/splitPixelFullLUT.pyx":586 * @@ -15250,7 +15250,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_21, __pyx_t_19, __pyx_t_22, __pyx_t_18, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_17, __pyx_t_20) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_23, __pyx_t_18, __pyx_t_13, __pyx_t_20, __pyx_t_17, __pyx_t_12, __pyx_t_21, __pyx_t_19, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -15578,7 +15578,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_4 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_24, __pyx_t_25, __pyx_t_27, __pyx_t_26, __pyx_t_28, __pyx_t_12, __pyx_t_29) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_28, __pyx_t_26, __pyx_t_27, __pyx_t_29, __pyx_t_25, __pyx_t_12, __pyx_t_24) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -15965,7 +15965,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_30, __pyx_t_12, __pyx_t_13, __pyx_t_32, __pyx_t_31) + #pragma omp parallel private(__pyx_t_12, __pyx_t_32, __pyx_t_30, __pyx_t_31, __pyx_t_13) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -16163,22 +16163,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_17splitPixelFullLUT_19HistoLUT2dFullSplit_ if (__pyx_t_4 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_36, __pyx_t_40, __pyx_t_33, __pyx_t_41, __pyx_t_39, __pyx_t_38, __pyx_t_35, __pyx_t_34, __pyx_t_13, __pyx_t_12, __pyx_t_37) + #pragma omp parallel private(__pyx_t_34, __pyx_t_39, __pyx_t_37, __pyx_t_38, __pyx_t_33, __pyx_t_13, __pyx_t_12, __pyx_t_36, __pyx_t_40, __pyx_t_41, __pyx_t_35) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_sum_count) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_j) schedule(guided) + #pragma omp for lastprivate(__pyx_v_coef) lastprivate(__pyx_v_j) lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_sum_data) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_idx) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_4; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ __pyx_v_coef = ((float)__PYX_NAN()); - __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_sum_data = ((float)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_sum_count = ((float)__PYX_NAN()); + __pyx_v_sum_data = ((float)__PYX_NAN()); __pyx_v_data = ((float)__PYX_NAN()); - __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); + __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); /* "pyFAI/ext/splitPixelFullLUT.pyx":1326 * diff --git a/pyFAI/ext/splitPixelFullLUT_double.c b/pyFAI/ext/splitPixelFullLUT_double.c index 00aa4908c..715a99dc0 100644 --- a/pyFAI/ext/splitPixelFullLUT_double.c +++ b/pyFAI/ext/splitPixelFullLUT_double.c @@ -6826,7 +6826,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_19, __pyx_t_17, __pyx_t_18, __pyx_t_23, __pyx_t_20, __pyx_t_13, __pyx_t_12, __pyx_t_21, __pyx_t_22) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_20, __pyx_t_22, __pyx_t_21, __pyx_t_23, __pyx_t_13, __pyx_t_12, __pyx_t_17, __pyx_t_19, __pyx_t_18) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7154,7 +7154,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_29, __pyx_t_24, __pyx_t_26, __pyx_t_27, __pyx_t_12, __pyx_t_25, __pyx_t_28) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) + #pragma omp parallel private(__pyx_t_27, __pyx_t_25, __pyx_t_28, __pyx_t_29, __pyx_t_12, __pyx_t_24, __pyx_t_26) private(__pyx_filename, __pyx_lineno, __pyx_clineno) shared(__pyx_parallel_why, __pyx_parallel_exc_type, __pyx_parallel_exc_value, __pyx_parallel_exc_tb) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7541,7 +7541,7 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_16 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_12, __pyx_t_31, __pyx_t_32, __pyx_t_30, __pyx_t_13) + #pragma omp parallel private(__pyx_t_30, __pyx_t_13, __pyx_t_12, __pyx_t_31, __pyx_t_32) #endif /* _OPENMP */ { #ifdef _OPENMP @@ -7739,22 +7739,22 @@ static PyObject *__pyx_pf_5pyFAI_3ext_24splitPixelFullLUT_double_19HistoLUT1dFul if (__pyx_t_2 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_40, __pyx_t_41, __pyx_t_33, __pyx_t_12, __pyx_t_37, __pyx_t_35, __pyx_t_34, __pyx_t_39, __pyx_t_38, __pyx_t_36, __pyx_t_13) + #pragma omp parallel private(__pyx_t_39, __pyx_t_37, __pyx_t_38, __pyx_t_35, __pyx_t_36, __pyx_t_33, __pyx_t_34, __pyx_t_40, __pyx_t_41, __pyx_t_13, __pyx_t_12) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_count) schedule(guided) + #pragma omp for lastprivate(__pyx_v_sum_count) lastprivate(__pyx_v_j) lastprivate(__pyx_v_idx) lastprivate(__pyx_v_sum_data) lastprivate(__pyx_v_data) lastprivate(__pyx_v_coef) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) schedule(guided) #endif /* _OPENMP */ for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_2; __pyx_t_15++){ { __pyx_v_i = 0 + 1 * __pyx_t_15; /* Initialize private variables to invalid values */ - __pyx_v_data = ((double)__PYX_NAN()); - __pyx_v_coef = ((double)__PYX_NAN()); - __pyx_v_sum_data = ((double)__PYX_NAN()); + __pyx_v_sum_count = ((double)__PYX_NAN()); __pyx_v_j = ((__pyx_t_5numpy_int32_t)0xbad0bad0); __pyx_v_idx = ((__pyx_t_5numpy_int32_t)0xbad0bad0); - __pyx_v_sum_count = ((double)__PYX_NAN()); + __pyx_v_sum_data = ((double)__PYX_NAN()); + __pyx_v_data = ((double)__PYX_NAN()); + __pyx_v_coef = ((double)__PYX_NAN()); /* "pyFAI/ext/splitPixelFullLUT_double.pyx":521 * diff --git a/run_tests.py b/run_tests.py index 7c923681c..5ba79a6c9 100755 --- a/run_tests.py +++ b/run_tests.py @@ -32,7 +32,7 @@ """ __authors__ = ["Jérôme Kieffer", "Thomas Vincent"] -__date__ = "27/10/2016" +__date__ = "01/12/2016" __license__ = "MIT" import distutils.util @@ -142,10 +142,10 @@ def get_project_name(root_dir): class ProfileTextTestResult(unittest.TextTestRunner.resultclass): def __init__(self, *arg, **kwarg): - unittest.TextTestRunner.resultclass.__init__(self, *arg, **kwarg) + super(ProfileTextTestResult, self).__init__(*arg, **kwarg) self.logger = logging.getLogger("memProf") self.logger.setLevel(min(logging.INFO, logging.root.level)) - self.logger.handlers.append(logging.FileHandler("profile.log")) + self.logger.handlers.append(logging.FileHandler("memprofile.log")) def startTest(self, test): if resource: @@ -153,10 +153,10 @@ def startTest(self, test): resource.getrusage(resource.RUSAGE_SELF).ru_maxrss self.logger.debug("Start %s", test.id()) self.__time_start = time.time() - unittest.TestResult.startTest(self, test) + super(ProfileTextTestResult, self).startTest(test) def stopTest(self, test): - unittest.TestResult.stopTest(self, test) + super(ProfileTextTestResult, self).stopTest(test) # see issue 311. For other platform, get size of ru_maxrss in "man getrusage" if sys.platform == "darwin": ratio = 1e-6 @@ -168,17 +168,7 @@ def stopTest(self, test): else: memusage = 0 self.logger.info("Time: %.3fs \t RAM: %.3f Mb\t%s", - time.time() - self.__time_start, memusage, test.id()) - - -if sys.hexversion < 34013184: # 2.7 - class ProfileTestRunner(unittest.TextTestRunner): - def _makeResult(self): - return TestResult() -else: - class ProfileTestRunner(unittest.TextTestRunner): - def _makeResult(self): - return TestResult(stream=sys.stderr, descriptions=True, verbosity=1) + time.time() - self.__time_start, memusage, test.id()) def report_rst(cov, package="fabio", version="0.0.0", base=""): @@ -383,10 +373,11 @@ def build_project(name, root_dir): # Run the tests +runnerArgs = {} +runnerArgs["verbosity"] = test_verbosity if options.memprofile: - runner = ProfileTestRunner(buffer=options.display_buffer) -else: - runner = unittest.TextTestRunner(buffer=options.display_buffer) + runnerArgs["resultclass"] = ProfileTextTestResult +runner = unittest.TextTestRunner(**runnerArgs) logger.warning("Test %s %s from %s", PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH) From 0d9d0916a923c4bf9c035419b8462f9570a28655 Mon Sep 17 00:00:00 2001 From: Jerome Kieffer Date: Fri, 2 Dec 2016 09:00:21 +0100 Subject: [PATCH 10/14] fix issue on macOS with limited memory GPU: LUT 2D integration was taking too much memory --- pyFAI/test/test_azimuthal_integrator.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyFAI/test/test_azimuthal_integrator.py b/pyFAI/test/test_azimuthal_integrator.py index ddd79676e..85eb7d739 100644 --- a/pyFAI/test/test_azimuthal_integrator.py +++ b/pyFAI/test/test_azimuthal_integrator.py @@ -327,14 +327,14 @@ def test_normalization_factor(self): self.assertAlmostEqual(ratio_i, 10.0, places=3, msg="test_normalization_factor 1d intensity Method: %s ratio: %s expected 10" % (method, ratio_i)) self.assertAlmostEqual(ratio_s, 10.0, places=3, msg="test_normalization_factor 1d sigma Method: %s ratio: %s expected 10" % (method, ratio_s)) - - ref2d[method + "_1"] = ai.integrate2d(copy.deepcopy(data), 100, method=method, error_model="poisson") - ref2d[method + "_10"] = ai.integrate2d(copy.deepcopy(data), 100, method=method, normalization_factor=10, error_model="poisson") + #ai.reset() + ref2d[method + "_1"] = ai.integrate2d(copy.deepcopy(data), 100, 36, method=method, error_model="poisson") + ref2d[method + "_10"] = ai.integrate2d(copy.deepcopy(data), 100, 36, method=method, normalization_factor=10, error_model="poisson") ratio_i = ref2d[method + "_1"].intensity.mean() / ref2d[method + "_10"].intensity.mean() # ratio_s = ref2d[method + "_1"].sigma.mean() / ref2d[method + "_10"].sigma.mean() self.assertAlmostEqual(ratio_i, 10.0, places=3, msg="test_normalization_factor 2d intensity Method: %s ratio: %s expected 10" % (method, ratio_i)) # self.assertAlmostEqual(ratio_s, 10.0, places=3, msg="test_normalization_factor 2d sigma Method: %s ratio: %s expected 10" % (method, ratio_s)) - + #ai.reset() class TestSetter(unittest.TestCase): def setUp(self): From c951cbd611b758023a0df088f26dfd9f56998a8b Mon Sep 17 00:00:00 2001 From: Jerome Kieffer Date: Fri, 2 Dec 2016 09:17:34 +0100 Subject: [PATCH 11/14] clean up test --- pyFAI/test/test_marchingsquares.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyFAI/test/test_marchingsquares.py b/pyFAI/test/test_marchingsquares.py index 0209cfb86..e48e3225d 100644 --- a/pyFAI/test/test_marchingsquares.py +++ b/pyFAI/test/test_marchingsquares.py @@ -26,14 +26,14 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. +"test suite for marching_squares / isocontour" from __future__ import absolute_import, division, print_function -__doc__ = "test suite for marching_squares / isocontour" __author__ = "Jérôme Kieffer" __contact__ = "Jerome.Kieffer@ESRF.eu" __license__ = "MIT" __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France" -__date__ = "28/11/2016" +__date__ = "02/12/2016" import unittest @@ -56,7 +56,7 @@ def test_isocontour(self): self.assertNotEqual(0, len(c), "controur plot contains not point") i = numpy.round(c).astype(numpy.int32) self.assertTrue(abs(r[(i[:, 0], i[:, 1])] - ref).max() < 0.05, "contour plot not working correctly") - if logger.getEffectiveLevel() <= logging.INFO: + if logger.getEffectiveLevel() <= logging.DEBUG: pylab.imshow(r) pylab.plot(c[:, 1], c[:, 0], ",") pylab.show() From 95c092fa58f164f2b830c057f8f00ab6767692c0 Mon Sep 17 00:00:00 2001 From: Valentin Valls Date: Fri, 2 Dec 2016 09:43:05 +0100 Subject: [PATCH 12/14] Fix subprocess to avoid deadlock --- pyFAI/test/test_scripts.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyFAI/test/test_scripts.py b/pyFAI/test/test_scripts.py index 2a1ae321d..3c2914ece 100644 --- a/pyFAI/test/test_scripts.py +++ b/pyFAI/test/test_scripts.py @@ -71,13 +71,13 @@ def executeScipt(self, scriptName): stdout=subprocess.PIPE, stderr=subprocess.PIPE) - rc = p.wait() - if rc: + out, err = p.communicate() + if p.returncode != 0: logger.error("Error while requesting help") logger.error("Stdout:") - logger.error(p.stdout.read()) + logger.error(out) logger.error("Stderr:") - logger.error(p.stderr.read()) + logger.error(err) envString = "Environment:" for k, v in self.env.items(): env += "%s %s: %s" % (os.linesep, k, v) From 1b8d831549cba11a51d2ea140ce62c43a20ef43c Mon Sep 17 00:00:00 2001 From: Jerome Kieffer Date: Fri, 2 Dec 2016 09:54:55 +0100 Subject: [PATCH 13/14] Upgrade to final version 0.13 --- version.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/version.py b/version.py index b85ec9a90..9acfe568d 100644 --- a/version.py +++ b/version.py @@ -53,7 +53,7 @@ __authors__ = ["Jérôme Kieffer"] __license__ = "MIT" __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France" -__date__ = "01/12/2016" +__date__ = "02/12/2016" __status__ = "production" __docformat__ = 'restructuredtext' __all__ = ["date", "version_info", "strictversion", "hexversion", "debianversion", "calc_hexversion"] @@ -68,8 +68,8 @@ MAJOR = 0 MINOR = 13 MICRO = 0 -RELEV = "rc" # <16 -SERIAL = 1 # <16 +RELEV = "final" # <16 +SERIAL = 0 # <16 date = __date__ From cebaf3dd74d40b20ed1bcb3c43fdd3a830aeab0b Mon Sep 17 00:00:00 2001 From: Jerome Kieffer Date: Fri, 2 Dec 2016 10:44:42 +0100 Subject: [PATCH 14/14] update documentation --- doc/build/_images/PONI.png | Bin 37820 -> 137306 bytes doc/build/_images/output_12_1.png | Bin 24096 -> 41878 bytes doc/build/_images/output_13_1.png | Bin 5108 -> 7243 bytes doc/build/_images/output_14_1.png | Bin 10247 -> 16202 bytes doc/build/_images/output_18_1.png | Bin 4763 -> 7609 bytes doc/build/_images/output_21_1.png | Bin 40311 -> 72004 bytes doc/build/_images/output_24_1.png | Bin 42454 -> 72936 bytes doc/build/_images/output_29_1.png | Bin 7318 -> 11680 bytes doc/build/_images/output_39_1.png | Bin 12328 -> 27482 bytes doc/build/_images/output_45_1.png | Bin 47986 -> 85258 bytes doc/build/_images/output_48_1.png | Bin 53724 -> 82280 bytes doc/build/_images/output_4_1.png | Bin 36584 -> 67543 bytes doc/build/_images/output_50_1.png | Bin 55386 -> 86810 bytes doc/build/_images/output_5_1.png | Bin 6172 -> 8759 bytes doc/build/_images/output_6_1.png | Bin 9119 -> 14669 bytes doc/build/_images/output_6_11.png | Bin 22448 -> 77327 bytes doc/build/_images/output_8_1.png | Bin 2925 -> 4418 bytes doc/build/_sources/api/modules.txt | 9 +- doc/build/_sources/api/pyFAI.txt | 200 +- doc/build/_sources/calibration.txt | 28 +- doc/build/_sources/changelog.txt | 43 +- doc/build/_sources/coverage.txt | 66 +- doc/build/_sources/design/ai.txt | 5 +- doc/build/_sources/detector.txt | 32 +- doc/build/_sources/ecosystem.txt | 24 +- doc/build/_sources/geometry.txt | 33 +- doc/build/_sources/index.txt | 7 +- doc/build/_sources/man/detector2nexus.txt | 2 +- doc/build/_sources/man/diff_map.txt | 3 +- doc/build/_sources/man/diff_tomo.txt | 5 +- doc/build/_sources/man/pyFAI-calib.txt | 1 + doc/build/_sources/operations/windows.txt | 2 +- doc/build/_sources/project.txt | 66 +- doc/build/_sources/publications.txt | 9 +- doc/build/_sources/pyFAI.txt | 28 +- .../_sources/usage/cookbook/calibrate.txt | 9 +- .../cookbook/integration_with_scripts.txt | 1 - .../CCD_Calibration/CCD_calibration.txt | 211 +- .../tutorial/Introduction/introduction.txt | 6 +- .../tutorial/MakeCalibrant/make_calibrant.txt | 5 +- .../usage/tutorial/MultiGeometry/index.txt | 1 + doc/build/_sources/usage/tutorial/index.txt | 1 + doc/build/api/modules.html | 44 +- doc/build/api/pyFAI.html | 14225 ++++++++++------ doc/build/biblio.html | 15 +- doc/build/calibration.html | 45 +- doc/build/changelog.html | 181 +- doc/build/coverage.html | 220 +- doc/build/design/ai.html | 27 +- doc/build/design/index.html | 10 +- doc/build/detector.html | 38 +- doc/build/ecosystem.html | 29 +- doc/build/genindex.html | 1577 +- doc/build/geometry.html | 37 +- doc/build/index.html | 11 +- doc/build/man/MX-calibrate.html | 12 +- doc/build/man/check_calib.html | 15 +- doc/build/man/detector2nexus.html | 24 +- doc/build/man/diff_map.html | 27 +- doc/build/man/diff_tomo.html | 17 +- doc/build/man/pyFAI-average.html | 34 +- doc/build/man/pyFAI-calib.html | 14 +- doc/build/man/pyFAI-drawmask.html | 17 +- doc/build/man/pyFAI-integrate.html | 10 +- doc/build/man/pyFAI-recalib.html | 16 +- doc/build/man/pyFAI-saxs.html | 10 +- doc/build/man/pyFAI-waxs.html | 12 +- doc/build/man/scripts.html | 10 +- doc/build/objects.inv | Bin 7429 -> 9672 bytes doc/build/operations/index.html | 10 +- doc/build/operations/linux.html | 10 +- doc/build/operations/macosx.html | 10 +- doc/build/operations/windows.html | 10 +- doc/build/project.html | 73 +- doc/build/publications.html | 25 +- doc/build/py-modindex.html | 92 +- doc/build/pyFAI.html | 63 +- doc/build/search.html | 10 +- doc/build/searchindex.js | 2 +- doc/build/usage/cookbook/calibrate.html | 15 +- doc/build/usage/cookbook/index.html | 12 +- .../cookbook/integration_with_python.html | 25 +- .../cookbook/integration_with_scripts.html | 23 +- .../cookbook/integration_with_the_gui.html | 18 +- .../CCD_Calibration/CCD_calibration.html | 186 +- doc/build/usage/tutorial/Calibrant/index.html | 10 +- .../usage/tutorial/Distortion/Distortion.html | 20 +- .../tutorial/Introduction/introduction.html | 28 +- .../MakeCalibrant/make_calibrant.html | 18 +- .../usage/tutorial/MultiGeometry/index.html | 10 +- doc/build/usage/tutorial/index.html | 19 +- doc/build/usage/tutorial/multi-geometry.html | 10 +- doc/pyFAI.pdf | Bin 5048164 -> 6147313 bytes 93 files changed, 11560 insertions(+), 6613 deletions(-) diff --git a/doc/build/_images/PONI.png b/doc/build/_images/PONI.png index a034e60de841c9f65891412ae297e38d13a9f9d3..39204b8ae00b7703619f7162b662346bf0398d4d 100644 GIT binary patch literal 137306 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 z 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 literal 37820 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 j1f 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 diff --git a/doc/build/_images/output_12_1.png b/doc/build/_images/output_12_1.png index 5c1490f36e7fe6fa52945bbe1fcf40c73a8794a4..28c78f8a9fcf7ca300d110b417d3832b8a4a77ac 100644 GIT binary patch literal 41878 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 diff --git a/doc/build/_images/output_13_1.png b/doc/build/_images/output_13_1.png index 6087c66710cfac7e153a678171ff80b5dcba7b46..e06e9035e8fd34dab86b8a79b6869f66f901a4de 100644 GIT binary patch literal 7243 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 diff --git a/doc/build/_images/output_14_1.png b/doc/build/_images/output_14_1.png index 197506b023e921e4c40699c91a6e2251cc24e909..214fa057e4c4b92320fde28c622d1964d3415216 100644 GIT binary patch literal 16202 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 W3u`Oc^x&6#5SWgkcIkEN7yk!|Asa3L diff --git a/doc/build/_images/output_18_1.png b/doc/build/_images/output_18_1.png index 9b24b51e46b98d180e997edc48eb5115bc68a872..fc8fc06f422a9366d99746e91ca19826f931811a 100644 GIT binary patch literal 7609 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 Y?C(#;#-5%=&R$W3qqavFhrPc2A6ZrlRR910 literal 4763 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 Z6~#gGllZk*$x;gPrLS$G1%Kuk^M9fDD{%k- diff --git a/doc/build/_images/output_24_1.png b/doc/build/_images/output_24_1.png index 9aa78033edfdbe5d24ddc3a15e3110189cfd0f43..ba12c830b6d5529c43c0ac5b063923fbf99ff846 100644 GIT binary patch literal 72936 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

    $k!##8G{ydFS{rgL!OHFp|1hJq8j*kZiQMOH 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 diff --git a/doc/build/_images/output_48_1.png b/doc/build/_images/output_48_1.png index 98603642cb8ec5be39580a557557b803addaac2a..7c0772720d3db9341c6240e9d5e06c3ce098f46d 100644 GIT binary patch literal 82280 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%0D8ZW zZl0`rQsv_x&nn>7_x;YbfNGO`P;z!W>i$-kiLJnq3jb&4T833^5Pi*kkpQSYwvs>CP-Sy3f?>(6{6WM@)+(F-bI8qU~j;y=Z* z>L&XRCB6=Bh8Y@NqwR~I!gbL-eRMhh>z^(Yu}%N$?QS*`yMv~*InVkP(8$kj_P!dd zHBt@>Lol3hrhKd=EYsv<>5AlSJNu9txIT?7sCc3yxxvGb)MMb(BHWb2dz3;Ou~H=^ zcEI18tRSGP#`Ozxg)FPR(2?+9V0oW2$Hr;l+e6;(pPKRWTuC9P!}ojLF#Jr3Z63?O z4R>tik}AT;hyH2}IQ6?@xS2)x{EV+7gTI!(azT!_&5e&IGs}@vgw4sOw6GiI;{0Ws zqYLtAk!R@cmG_W+hu3e7uqdX;sG=A$~)^4UOd;AchhkyXWEew)RE6-fqw!y1fzZD44tv0FMvOS(ZuUmw@Ll`}WKXh^7$5**RMkF0DW zTG$h-^5VjuTj$u?C$`JA4tz}H0TU`m2P(VdqSofaXKv@*b}lb!RM(^L=bfb*pi#!$ z8&ImS5dm{zKD%9$NGe-;A`+2877@*XZF~j7$iA1@r3 z(YOh-*MP5U=SDN3^6z^2h^$X--2F0aa`T0LhxrGl`k*KE7DrcaBm^=hAHBSJ3l!yX z6(0}8lYxOfsJm0ZV+WF6A@G(K=--8hoV%P^2DDCz$yX_XXy!H>p3k_MG|nl6x8(X{ z%_k}(@0&zCPHeX_kVggG@4+5d`x>bbZrBNSYn1b$>93Nl{-zdacMA1W@k0=L<#xX) zn&bszfY$2`dkb@1xT;VWW6xbgo@1=+y`;RrY+q^>VcgsH)K9$Vg6}Kr@w$P7ia9}!e*s=w-9U^jw*)ya7fd(q~0F?$+txBF+-SwVb+gLrO2-CNccF=hBKW9NP@D8)&q~5FbG!V3aOZm$+fz!BX*e`h39me+~4EXt> z?pHFq>~Fm!A+=RFznow}n#gp4p?Q3Qka6fPJ7$-D+3e13V@miGIXLSH_BcD7$6fP- zy%T&Fl)9fy-6X@G5V@vkZj>RbqA0X+PyTYLfA)`U$5CaKQVIEI+Hj#=P5Prt=Dg#w zg6QzEw*``VmIpYk{LmB^ktCqUVk-(D@X2jkxvK+5I!3sUp|Gy(@hE@p>myjf5wM4= zR!Kv!?!0;e!im;G{v-G#??0wZbHh2WIt1kIM^RDeBeQ(oe~Y5wy2Er>9mFj;DjF6# zqKBjn(`=T#x#eN9ByG$P+Xf?L?qvB2f2#QKJKHT%1=XRN^=CZwyZwrE>L-aIDMAl+ zH6_u)fOMWiblX%M+`B4`#ZO+*l0l!< zU{7@J6V(6z+jNkvq96A3q?-nxU?6~izbu&JeE)}Tg9iG22 z*X$Hs;%|8mPI%{GyR%qyl2)8B+7D)(n)@;D?R4rKpwK9($vcaQ?$cs6f0lWs`}H%oLtXK$>?gPMb!J;{~bfeN|DJjesU zY7+OzIYy!lX0^jM6AlBN-n4z||Skzi+(UwgA%FygVaTan8Cwbbl*ST`SZJE7l_#GsP*i1pQ8XSkqwSP;uMMn<#!Dyck0&CgM3- zMyd1Qkm>saXE~j*yd34$;g;>~W!FhJb*DM`1R>hkb-{`czI~xRrB$g^Py#zZ0ptH>c*=X@EtlC+y6QFGye)3Aa z1iaH0uv;DxdyjkpBqm{ae&HmjIK{#)3g&z8FQJCT_-$^;vwE|_y5w=|O85;Mt&Yl6 zgCplqHpoSTde*U;BSBK(dI@V%n}-9$uvf>39g9s691(wc8v_rO8WC?d4?U`5srcH7 zB#JcezO6*`aPe3hu(P}po`~XI<`AstP|*z89p7~MTAgiQ;}QM@7K}r^&w7D<;}LvZ zpvTFJ!UuWPd%lP{rd0?D@d7h$v%7h)z5HhbQ!*a?<7`50pQ27qgWTeasCoU>-)x); zIBsb&FPUlxJ=SA>8pEnSc|9dBNtIPADZ6vFGl%4yX0V($H(jakO$dc#A#xTm8!+5Q zT>>96??!4OR=1xWOI|L0M+oxChU^r?`(rv;bI9=#`ht*O7+gBw{rTW`29E@4oji|> zWCiq{BgRJK6gKT zi~)pNI#wz~EJubZrJRADwIsVav*QY|j8+H-A_S#8mwUtbyVbS4GqePkT||-&09hv$ zYkgdSjA13}1rI(-#d(unCVlE@m{;;Wo$cV|3(>`mc4I=Qs2>%}D8kuB)>pO)cweEs z`?)=wiyl3K`Bd?39gbcVWHjV8mbxukp)Pj-#&ojv{xo|oQ0MZ%>2H%pfd?;Lrldg) zU7A);15c@=AzpayO96hmyHUEEuJ_NMK&usFUxrcYsaVCjUtRql52q~0-hAoo%Oclt zstsF~RA zw%TU@GGa!Y`Xw||_P)7APtCL?9F;%FnYd~X8Q77qJq8_7}6Ht+@* za6rVnDbnY~yD+$AH*>2vb8Q*527H*5(3r*mw*#hCNo^pHMa*e{J(F!8q|H(ZLvY>M-!Ij^^VnXEgSdwdp@x73`wKTp}Dc`ErlsVpU*%2C+}VRx95uw z<-20JLLbl1 zd>M}8jkiMt#sFLIWE32=GkXFHPG+d0J?D6mX9& zSH)?fwzQ;NZ_+2?w5Q|?>y2)@iMRw4=@gz7vbbKwDu(-14wU#^g~wFNvzE#8mkpO4 zB1mk{(Rx6PMHg4_kA+=*_5U9%k(@V3#vG;Tqr`u=^qJr{R*7c803AziRfhhpVt82; zicy2+W(y2I%nDBq(}oZAUh;n{Hxtp=H*qVe+mYgzeSGE{AFjobW{uAk5bcecC&l%l zMNiCRT^Hn*CngwRCo{5&v9}$1*AngzBo3C~?PaRkj`iAZdQH1#2>k`ka@t6LdEu7u)Y9?$8R@)go_yE@5Ox$CB{X`~23`q5w#QY{? zDe}6F`-yUmVBb7V#WKF`?QDZP05L{aA6B?hOmxgghwQZ7S4~Vi(MoRPbxzB@fCeMXs`O2=_=4+g_cHHtc%Ix*l zP-Gi^XLvvcwfR8@H{Jb;mkiW2RAr?jdkM2x=hl|pVSb~V_%-l5M_rQ|xq`gX=V%e( zvg}&=tya14FB4H<{cQsdW)u}~<1aQZC$F}sNi7Q51?k=tsxKOF?^Ccvzwi9H{(I-r zA{TTlrtQ*{j9v|l}(1(GLY~82SK7gP`u^wqUiqI zOG?G-1a>~#rp3n`1HVwEZ{s!$ljOwMmMaQ>joYDPueIIH zP%+jo*Hoo`u*0K3fe{FKsM^rQFSGi(R3Df)SzK%p8b42+6B!eSjVyd|t$urpcj9ni z?t!aqemS-TgkJC}G=iZ#mTV}Uiwg@}J-W)5ke51a$*qLK!; z8Cj(6nLi=~sjPCvK?K{6c99IIY=9b3! zS>z#ASu;h;aVv}gsz_F5rAfJ3sweX+tKehqEd>y4j`f!r;og`IuRq!4?5k}zJ(bj z4{nSW>9v!4Lm&8R&>z$^kF8?DhW5#JgPS&=S;RK3<%GH?(;o6D5nO+zc3N~Xa4;$G z);yFPKt|~-=Qh*`y02geQkiI?87tfhn9~p-?EjEWBS0J2m%BFxZ5d(<Wikht}8T58@zz9445LVCfx2PNP z+Gdl|EZJ{3KV10ncMchFGoqGR`lBm-)xVDB7D%;!mOzVCQtaGG|BO3knRldM`C4E!?g+<yC=oferOZhkoLxoD_f7&28|e_*Kl_zZ+nvk0-56@NP_d>lXwPs;rOBC6Br-$1{<- z4tTzPFhP!Ae>;jZ{p_hIt(UFdE0{d-T7-JmKh)oo zuTkA-PupAn%T>2h5~72=;(@TBQgQOo8V*1z`0JnOZD!PhmHflnBRC^O)&T?!WO|Q| z?$HRO6CW0}TL3uqu7fxM5=g{I(W1ZgS3kc^X zRD0rkIJ8ynKA-KH4+-{j-lZ=KIplIJtyed-e(Suz&F8CSQH+V`6`UpVA#6dsBz98o zNO;?5a9c(+CIqd;oZ!dlngrA%dv8hwJOMVBj}1|0KY-mDAV?X5>h3f}r2L)XXyT;U zg6BLedU~M`{76Y5>qr^Y$k@b)BL5FUqf&1bQi7llqut+1;gAEb9{wB`4&r)ip{DK=xqZB1TFy#Yut2)=#}2@If`75c;Y zs)6QTQhf0BhRaPOAFum!G`Ub5`hYI#h;0Av(xj$5nW0LI-*Q$!K|i+#aVP6*r^hlN zdArKhO;)-qZzqpQVB&XXgp6V#h6stfc3pP<6SsIP%Uw zzeuk?FPw=V!o7rlf5rE6|2m29{%u*s;mV;>%<0mOdFM?3gWxS%(D|)nrzAzUxg|6D z!t^3-vADqYGY20!P1+LMbf34RjB0=L)vm1V$6uF+9NswN^Sz*G;n#wYk>toXh=8kw z3@b(4@!CZnOr)E2b02^=zrugy!~;oQoo~O#nxVL5!pI&ddCjvEvUq2M5kvo;9X8odGEVdZCIEFo{`k zsCcn}X6R<26sM0sDgEfFUERCd836^2*P3nue6yxyL)6?S*ELs`r}PYjkHRw4I!O=V z?+$X(b5`?1JTwSk=|1Ps7^;geHq&^u%~}%ilCOy|RHG|*Xg>6E1?#Ngj7(T))PS&h zws4*#c@VYDTCQMl^3YbtM(zx&28nddJMCCb*Gq{K2*x4h;qh+_ zYIWPZI#fdBIx+_a8vh<02`{3~>}X5&fpi|2)29hI+>`HLFiLjKm$YNjlV#`-9*m?F z8SCZu8wUf(rN>U&HM&K&5qu>_5IUHs7Idd%h19xe|{6O@epUQ5d4__zOU6^~TTd#;ZccIvL5su}6KK{R{0ZkRuK zI2=mWF|v}iPVdH#`gr-D?TtGa>GEFjp^sq&mGGfea)ac~3R#5i4*_;U@`Bp#AV5f> z+ENH?44j^6N39YEtj%fN;W8Jab$1WN%90{AJL*;wrH`e7^h5hPsg~}vwyt17m_&)d z(*ivpc`q^4uh&JALg~GJ{t5MOV0vPJ8D0C4b)9RFxdNEYIN|*sy)@~bYaOcA-k#{- zbbmx&1)56)nFZq>%?z_+j|@ovPKrVJ-k*;mf=0e3<s8e~(L0(_i%Z zTv1iW^wNpYg4av=61u~2F#p0|pW*}Nyjnap(;U;*VlUeDD{C>wzP`7kjoc5IBYdS! zHiU5gQgxS_g#L&=s#Vp_RcctR&6^%~jxvY}og>nnYPP+xzTX2Ky(O;If=qbhQC#Qw z&ucs^oA>2Q1;xtz0Uq92?(Og)Qp3C2U|iR=#W)nqry!}lDh4yBQI-5)aG+}ROS*9?&naafkXVxeQebKRq17*mIJsq}xz zDQeN~-n84Cv@YBHiK@!fQ)=CPaC2u5<7!YT&rT+P6Lx*VQK2C)U!H9|6%1@UdLRq- z%k_-M@oUP!+J%rc0bj_^5pZui4l$5dZY2k zX;kf$9xww5^zi8olnNH$Nzv-7_!{fZ8)J)Jd3wuXXnWBa1*_~G_XShR9KA2EW?)ec zE&&(E?M)FU1p}4|$`{^y;c6CFW}yH*YC_<2SM>_#wb@7go9DWhtKfOhMPHB8`Bo`~ zCt_pbUbH7w+VcMRNbB{vwp$)!!mr}A@**SUT0em+K z&&uQ_!%m7h*513jJVFYrVSOP6OSr}IJmY_>G%>XwSE?Y4aDQ(-p&K&>kF^G~Z7rH@ z$P@W`RQ){-MZZo@R5{5hcN$OWw%n%$d&GmzLG=!Pu}`Kbyu^CGM@;Yzh2E_u(qfv> zURhDwp$3eC zkk@6KibBuRomO)Jy7kjv$++-|VWX6JEkUwl_=lGTgSw`nTH2*^4zB?Yn{EiN zMkdBm)cH7lb-CP8Dr|=z>-Q(g$?(~#zxV7u+xTPPA>gESG^}8dQh79*>*RC z%o!EvEywxm3ySCHF>Vv@45YK?WG~(t)9T9k?PkWDW2V2{WRSJNCYnohX?NE^+t-uL zb1o>GiYN|;fqg7}W@X-^A9LyA`H;g;;V9B~4QQf8H!xUb0t}c<{reD^Z=&x&zV3fi z*(bUD4RI|k8N(*r)NtXM^2U*}5I^L6(-lq-;Ub!uUvIxR0CUT{O&ul55;;x~m^IHr z+#ko58>*9uYYF3u*Fd~B!1Q(W&C=0JiH}aOJ$2qOfUR8-PaGNVU|5s{bVB2&Ro9uy zpYI2sc-IvOp;c<%FVuzYU+RrVdgKybdCXJ5Oa%TeK3Kanb=_R`w$@46z>dR0!YT(2 zMX6;afKK?SoNN8xdwS zM{R}`uhn-K=wYQ?*6e9Gd1<2pje9%DJ6ktarI~6UbIg_8aZ1oib(v3j@ZQ)EIg0zXMkhI^|jzSyt6e9=sZLY z?`&pE>0<)+3YowDQLjc=jm(!?j`o~69yR$lMXbFyY(IlH zJ9v_c*J#_+<3HG>K!e&*_#*EmAAY+QYN7OV_9ivLzRbh?m8R}hLxo;dc&SI!CTv~m zW!vOt+5pncqT}<>rNnnpqdBi;5;dG|>qtJuU8~}6XZ;B##Tqzl);jg9owyz=M(7F) zk}LKPg#6KN)o?vO%kaJ@HUO_i?M|8ziX#J!5e}7vO<0@gsN^E?#DVeG>fZ|qMqdEL z=-_$03#no5c^IMNf?gXLm=Ib8c=C z4+9hGiayGws5_+N-t)ZZDV5Uvo=X&`Rsn*x@q(HhIo^Q+f8Z^$kzGODHR^W_*li^W zzrWovn^d{B%02X7ZPIrs&jcZ<~L!i4nIKazfymV7-2oA?{2di6e?(xXwScV`YnuepMDys(3&SaSk`~|vHr7g zaG%E7z$sDuZ7+w1TXbi>AGhlY!OCFbp*Oxy-mWcYF2h4UEn8i3Gj6Sv*QelF`<(uL zKN+DuRWlNW0`Gv`KvEvjg=Q;pXX3xX+;4l!pl4@C+g>YW6vgdCZ#n9JgZ+N~LONuN z@FS^K^DjY_Mz0>8U+hmqO&S*SHc$4Gj*@m&TUFEqVZ6-z63;HTDR`DpJZ;qzs0;HG zNT4LKT%r_w>UF2sQP46H6e*-jNqy<3p#CUNm{Xy!HQP1EYU&#?UP6B^HxFJlQMq$J zUg$ffsBj~3H{l3<{%>V0-?(Tf0*W!W8?JJ2*x%Tg!t^P6yjs^T8p_Y2SrW+MhG%(P zNts&en{nHOb#zFIqGA84$~n6<`hM1%J0#B~Y{ZiGtoEc*!4<(q<>c+Da+dYw*o#qa z@59nkPZ6UYk2R5&?t{-z0FjJe^9!R~D!tXz5i7x+SO8*sB#KBeLTa;b-bUtMpPet zi*hej4GC~LVRLh61TwL5u^^hdhm*;eK)EV8)_b&iJXaPvv=4U>r_kgt?;z`TVGI(2 zQ+O}NOfffe;{;^AtX4ddAY8=riZX(9d4<(Pm4A6c@5PFY`SXLHok+uXJ0;4(92W1F z@u@iH=bMsZ&8kT%&a{cPTUh9%T)>#r#V*QTh|b%-b*3hSM;e zH3;k{iWEJi>Bw5wyK;EdL+y>}`wb^UN=rmlzW2}{Nv)B&U_W@8^^asQd2|Y@#DK;2 zQ)VCNNn5Z4SrD`mV9@MB&fMioxyw#ql77_z-|JQ3Q{*)YiOZ81FOftvdwe~FQa?f)}%(IFW)z-=ka+cWk0D7po>Bp@yD9UOUy2*1Vx)OPS zoY-*}nbtyCIOxlp=MDBEF+<@_Bzd2lb_xhwMCuio{IoLK=xUd*fG~I;K4W*ixk11L zd04f=9zD8GOm5fdeBEa+Bh7deCTPop-N$rZISR_2FG*zmDY`$Rcgf6o$<1QiKM=jr9>x|WFP{O>>4{JnjE`PIDxy4?UFejI!L~n^oT|(*X_PY`iG3A)%hMO*A zxwRAKBvrUYh?o(~WZz}bKW5B3w|jE&O27)fJ&V^m35V z{v>KOj%u}BVr!S2N7+=4dTuPL!awK??}Kn$%{^Gp+MpoC>oo8{)zW4R2x&7ffjW>H z%G_Z(M6yV3rf+rO&GRh+gefph4iNV@6lJ7Ul$Z) zi@V1WtzFGhJ#x5+$!*ThTa2=z$z_K1erm~Hg2(qtfHu#xiLVq>b$iPI^E3COAw&GaiPQEMJk-Y@C#_ptw@bTvNWMuCa;;ZB+Ys)j48BYpd zoh*S-Q7hT7@=dNk3s5YG{}tu3s?nV5I)zf-_2gvpfa>K?zbtV+`*`0(=Dfm?PK|b0 zA7{e6U6N})X9+?Wp$GD$LrOjkrh|-6`$lg0;>`g}{o)+WSk9}pk zk5U`V%{r9{-guPgptfmKJy498lhv?buRP3p(OZ8KZqt;xt&$lc^%-_b}o1IQs*THXb)cB(?d!&p=2Qyz)6~Uvk zEB)mt<$3JWW)S>`>~ml0X<4wb^G!>|JBg$#-iSLgNfsQd#-Wuv%>9Q zkAH7Bo65M?-E2bn_Qg{t<^C1L+}P%}t$+X6I$gYcw?d_~A?4Zke-nu2GWOg-+p=Nh zp87$E3nc%b$hj7hP3zf^Ow!$K`MuBkv%>*<#;-Q*kY|#-k&`h$&iH)uiWhL)?N|^0 zHN@`cm^5b$A>oE7{i{@*>jdg=-UTaf=npl}S-Lj%m&{NZF+YZuku5gWFM8#VgH*QD)d@OxAgdwNBCvnAPN9#M3M z2eka|!E$n^kTCfXFS44*xBf%g?XH*&MUgjQ$Z;0L6aneq_$o3K@Oo;3fab zOQ!iWd_3OtUh2*t3CkNT^%S>rGukL2FN}nobJC`F29SEgo0AWq-Gtt{dG0lNaWzjc zuot(t;4|^Pe(ydGd)|v#J7#av+c$b1I5|o~H%LYHePChyIOBjEpHJ5}P-yfYZ60P*q zWK<~Qwyoup<4n!tXqo6@$lAM*cZMau^3F9ou#BKRVID~{ztZ(8Ca{*ce;wC6osvpW zve2&BQ<>uklwySK7@;Dc{W+}rI>+fDGQ8W6d47-;>6Too-Gh9gBtkaX^#^@I8Kb62 zPk18GGV15%yA9ZJj|U@vX|drky%X}yg%zUS-*dcT3SU5bS%PqRzf?Jz30=xBV4A$% z+4vDtgjBxlT7pmBkpfB8Cl8+Omv6It+XeCsXJFNgFgA>-;A*7dhq)WKRruXLZz>H6+h*u!7$8 zDBCUXE*z{Q9(in<*&8=fNYedScsyJ;ptrO&!0zaTq$CYhD!&kXv<|lp7}i2gR`-68 zDA6)Ezt;3hHXQeFGQX#UpP--ATbA9f*9W2L9DnUulns2jzCThdxT+kdYH0*X$SFmn z>@uDCDrtP^zhx5G!#WJYEt$e>d9)!=>JJk5#EYuUapV*gDQo@DCO0q>TTTrLbkLJf z6vZVN(B_K9RmJo14i0B5eeO!PlQR{8T{)S4nDP`l)NQ=F!|Vc?n$F5r z4Dp=OpJ*RQ@fC~{q4ys=n0DQyZEnd5+nMme*Sw9#qS9uz%?93dT${Q&|5qyhIY-d3 zxzktyI8|}a9nmDYe}2j7%v-hM(jdFTB`P|m`|MC${?NmtH1)4$=kq_UN^TcWd}`C8 zLir0%yymo=N@o&-t(SAZhFZWK0Mh9YWnUQ+hW3i+V2OSQY zt`UPfVAl~TH1;E==*~S4FOd%+RPU!4{OFZD>-Xc8q_^bG*TfYbEKuzUFaK?)Qe(pY zf#l!(ZG=a4<+VSJvk0e|b;?f#<2NC#> z5KaO{Wv+}g$(i94LJJ=65zSZq)ZW?Dgn`7}wLMo)9h7^i73~77LG!>zy1i0|Eo*Pb zL0r)5)wpcRHI8OUF|Qm7$0ePRbqO6*+5}V?`YaG+1GqHriXzzlh-Ky<_kUxU`HG6e)#=Wu?RRwm_|JEa=W zM9ceHepdXkM?C8bcun@IhnfG=nW+xOQVy%XP`x8V5PAmziLkgxDJ5YXC{>%`a zPQ>F8-1MnmCR!|I4~(c(|4APhg-A>x>F-U5jx{hdx(h@nP8{9ZIcaIKP63X`!1G{R zY4!H2gA=*b#M_K-E;%Ts;P?c-M3xP9nZKG&ZYjSN+H=AW=znke%9;-&mcC`e!G0{u zx~Trizx9gcIX+i00q-i$71Cw-F9W}qFHLpEB1>w zUNHns1ftiTkLTd779#6=eqe7=YgNGScwIB0`dvQ^%2V$Slu&zLF*o7H*(tsP|2_1# z#MzKO6InOti4dKG1NWH6)lphUd61ua*L}5+4fHH{fA>>fGPiByp{1PgeBX^dIc|WET<()k5r#BJ z#r|F9f9xYrn@;K%7l8U!bMMaxl(_uNr2Fht5G+>yI(F)y6{ISR1kNH3NGx~LS zWDQoANm$z5EBfdck@$RSzFuk_PCYd4PhT8g#Ttk!e;BH|w^ZFd`;}&OG~mk!&K!2l zYy^ah5OEgjSnaMtnZKqj?poGtX=)FI1o~GyZzEJksrP88)*F9Rea%e1fu>Kcs7)V1 z^!=m%EymGR^H$C?p90v&PqEclIHLZnWKn5^)X9JR&0(Iy|%3eTC>f<7e(isYy5dg1~xERwFJ{s%E}k)64v-4gO{Wqc&}Qrkd{B%_p4END=f zfd~1f)1D>9R7w=Yt zO5r!L94h}k5SN%h1l8Iv;o1Eyq}H;r1x0l$nsRWD%S;17{Tpo0FlM08ii~`<>a~Da zE4o||(x*F3E#~h{&@=TF{qVJlvec8EHGJK0W&5>Y9Qfo)_SiIHw8~(Z;=d=5fArAw z*%uW)7MdaW#Z{eMSJyF*L`o0V;hvvAuwf6^V=Z9RGoNE?i+zXhSUP(v1wTAFxQl1W zlQns;5#lOd+iH|e3mgQ`W={E(_jRhgvXNZ1ER}C5mT}yo%JvNVCdGgrCj>E6Z;%nN ziRcqbU}8A9>BbGKss{E&G;~6gJ@3w7ER53x{-5m!>zabp3f!)t%8> z>Ibu$@jZGdmm@cvpt*dnr!p4A2EuwwB0<%DQ{s(2%nIY(9vqb(KOX#S1yu^aZ#iOj z#`_l^p^M5TEjjzXD53}EuKC~uWIwI3{gFat-GLh(;-h(OO5|tR?2z+^ zm0~C?TW4YV-{fG|Y7U5mi^W-_P|w$CU1JfoJ8=e)oR$nZ$MyZPC2~d9QRuy-hb6xZ zyRL|Q<%d~vRG!36g!;iiQ&&3fL_2 z+6e;(-DdqX3EZz3oL&51Rj!XM583ilLkCLp`i=~U(xi-{@M;yVgSE=xuLH2bb7C8Z`6ZWH>4~Vfx{4j*b7xnx%9mRxE1oKiBPc@4(*&88j&Q-tn7rd z1&TFL&W@G8#ZzWoCbgGKF2t!J(}?xFUL!n-D+LLMj!CXzqSobAN~s5hDtqcjL$053 zOjUA5;h$Ou`dH6%6j!&_PZ(F5n^9I3wYJ)db1NKp(Knuzz@wRup>IexV-|i6H_4e7 zQTLeYNn~m57#X)TwftIO?Bx*~4krYmi6Z{;2xx1C`#Ny*64G@r-qjkED%YYQ8O1R; zbt%`&8U?)+Ff|p@i9M$AXa*g0=r$SG04(ElQbms#MUL z&hID+yrs72%~(uyDCO^cFo$Zws8Qp6ONd*adZ9Jzb8{z@j)h)*4jr9)^Sfblb=tHA z6jGKdb;BU0K6Gwh{fJ?8_yvy13>JCsN7W0VXb-3P@6Um8rPRf&81kTFLK z{z$Yd_K#qZDq*N&7eA;uBPnj$r9gsLZvI09qQ7eXgm+N(^}M(Frhec@o%Sl1N5vn3 z0Vz!3O5JL)QXr)0OKscb5*4>%ku}&lEObj@ZP}8etHq8VlV2g%ft-piFSyiPCu}HW zqWaH+Q@gJIn=rICjDkGv&r`esauDv854G#=gSL~4odn8%46zZ&EC)rdTtIBoBrJG^ zgUPY|%}BLc;IWUJF5`&^g@q#;<3zIS@x4L;~$JOT~-`je@%ucpl^ zJ5LTs`1wO_bDCy9Gu$ypZ7DEEL#n5!>vHytsz6@AWBO!{0)1X)RbHxRa9WyZfgG4b zy-G(Y^bvFl@jPoks4|1jbzB&J2d>3uFXG<%AXBxdCU#nF>ztAc!s1ZCl2j?H6!tFk zp5iJG{!h6W1GhSHI(CO=uDI$j#naeXQ^dRcvy3n{8Id4#b@raA^1F2$P(~v<){tNb zW-adb;)WfVo(LNEAJwZfVdB>(sRp6u|Hiiwqi-onQOZ3nbwRhXS1{Lf^zA#^a(#jj zI})h7ziQt8pq?I3AT2r0;0|h8N+W*hJB>B=JsDuZV(`c`xucBbE=S!zIu~BLcpKa zr*7c(H)@->@I|QlZ-;NdQAgoxd%bXI`)FYDrdHJh-(7NUls7T*#-jRf?zkoN|CMe? zD)hr^cYkh*hz!U7G_G#DEFxknT0z}cfAlQ3()9KNc8h(@b_tGDTbGJk)L_fi>FdOM0Wy!hGL=j)mU42I6WWrC^BBxOw07RC2WDOimHyy+{2b zJsH%+6b^C`J~#L4U2Q=k6#G(^epgI^gIMpHPQ*Khz`i18NLP@wXUv5jwz-L?INYgO zoH!3nERvQqyBRVm{$M4Nzlr43IX7W*CsBh2*?U}IG9pJSR<)q#u?6T3|H&y!H2l^csdG~!$=<|$b?IG@6tv6UUm z`p^HE370!n7rt?U5Hk8XTAIF$HL22Uzw6w8nwJkOpV2fC2MfzTR0D{UX+@3pEjilk znh;!K&gI-Ju}ywbQuql^sz}gI|MI>v;e#72d95}iA<0g?o>LA%N|S??`5?e3IT$ptXq?H#LogZ_U?d-HfUx9D9wG1lDb ztfm(2(Ke_WN=?i48`=+d=09YRHg%8%LVV}wy~!`xey)*8^@ zohgL9xKkU8YNA@0$<*Tw?dnxyg(zd%Q!@vp4Qqmu58J z4SQxT#^43UJWl7JxjOc13#F}^kY}@!PRY=R3DT9&kFB9S2nbBj1?HgI8hizk=y|eg ztxCE^sUTf49cBbc3@q1MyBMywa$S>(Di7o^+LFp~C|=-aN}56aG`5uV2h=+OS`EoeUJaEi7l)oH&vJy>cu+^tZSJvB~-98gRcp$}? zj=V!p!;VRsC33URp{}wtAW;2*MI-&=-{!}e8qXsN``*u~nd^VoQ*8R3H)Glu5ucn5pMTlPIj4ze09PiM3LxUpv7 z*fep3uJB{6H3Ale92SoZMVCUSCglCDjox;j+z|&r*uSpF^ zF7qw4(>ga+Q@*b~>01o?YF&AFaYxwG5+BkSEm`y*T*vYZcw1Y!T~nTSLn~11wQ+l= z_XTihkXa(Z(aJ-BRY^>kd2IJPeTfJV;$X3_2@o(IfYUfGRE%!?&j^3b_=N+5L*av; zo+qFHccXkGr&j-U`jvlvO&SW&so-7yxW+YMkRdY%oyXZTG)J8!?`cx3aXiTJX1oCN zWcjg-x~52_UR9ZNs_C@`!Lluk4QcD zyv$$wHsXXPkYLr4fh9J{ORZ5YN%DFAw&I$9=UO+5pJPkl34_+@w1naU#lB*QVotoU zKQxW1dZ7i*Ry|`A@BR^`8NK<}fMo&ZH~*Q+lvNE+2k70hiTM!WLEalh@Vgx-CNAko z=V18Y3gK^5zEU3&wx5D{opf=BfLJ;S$`hfB5IHT)DmwxoS3uzi-W}BNR+lk5b1>8& zx&x{dT`P@Yvj6}A=W0Hc)%PTQ?iRH6qtd+n5&Wd)%8XK!Q!%vBmKa_=vBgKkmx3_bcB^X`KA4La&Avb72 zsnpiHIQ#!5gR&lMV~r-J3+LSQ`JLpf(z!d&6(dJX5oIy!U8dJR8;u%`B)geYw34!W z>ff4!{r-@<`9i5uyyI)2Ofq!G!X#rpT(Nz8dSuq}+lvh?7q~caXVn(UnBHkp6{i}F zpeKZ>Z~gP4y^nk?hiSx#j6NvWNI@6Igk&bMtP{{hZaEZS^0`Jk2r|vX!jvzaj4X2N zx!z{yn=fTIO5+19(^@)oILAP)KXP`IKvYmO52+E{#4b4Qoqe+r#O!G{XmNN9Ykq*& zGig|QiIqR4In3EGX>b@&-@f=R1~ERzUb*779Qc67ocgiyxt`!Knsgql#j+#U=2g

    k5V*PGs0ifjRN$WUtN3HaIn4HI)B^A>k(0jo)&kvf_d_3cigb1oJv1rxi zjrcnNs1eK4lnBu>#x-3Z5u_xzr;9dqD|^~)Ch=SrTzKn}un>3~h;kipXKS%y__T}b zZOwqy@}{A6>0r5jBIQ#{{{yKyaip>vc|&QXRk}c?ZN6b)^b)>)pvL@}o$l*dHJP!% zOduoFZs0Fo`{5~FiC+Z2^M2U5XWrIMHG-TyJ41u{)nA0kvX5E~CwV1W?K)YnU(S^U zEg!^m9QxKNI*#&1*Ga>YJzYiNao#EU{r-L*&>c%k4oy~Lzx8hq&` z<(K7%e=Xs=Ksk`a%u0F&Y-fuBvuhfcl<}wj0DuH^%^1iV5(g%ai&d3`aQU22zaGZV z*`}nAnyQ(9LsJSUZS^xD$|p}ksPc|H9-}6PmJ9vTg!+yKuP8QFzjHm3Sl1ns-F{i3 zC;b~rf2c{{k5~S)>tx$C4ImzRdQRLrX~O|&P6&ny}m=$R4xsHyamfUI^B6PRu(=9w2*McOHR@{SyBj0p8o{T{^kYXp$}Hv;g;= zzGTEPC5K33J)C8E%ENIxa~23onm{p`T|zFbzK;#Kbm?B)ec^r)cUNAY+Gq~b?QBTS z%gEK%<#!*K%MnXMpyuZO&%B$rKrOs<6VR@~<3tpg-tuRrHCKqX6B_D*n;%weT{#he zTnU$#;1x{ishAs!$VV5faZg{$@_hC%93`%^4H=i+3KJ`Ux`};=1$9=((Qz(vDaJwL zNf}?Jq*B1A08JlxwYVUwbLCn{NiExy^H{?WJDn@eBJ&`7;J8)uHD0YdIiSI%LM3noD?k_AHrUJJjB$ zS)r-jT{1;|i+HFSUx{}tOr@fP1CU~6GvRH>492~V$i0)H{8S?*mw%YvU5j}CeGZ(_ zs}No|9|Bo9F(G?7A2lp1wq>Vger04~NyldP>e;{sP6Yy^#kR$u_=CXRV&8*_E) zPb9~k{&ELu!j%D4l&H40DH~MKJ-Oda)G$Nl(&|1 z&PG)jNqq8c^Xg>p&HL?;j~Zv~rF@7?kaXg;q&8C0e@>@BV4ZC(1b)PPj^r&~Wagc>4dUca2K@7X z*-}LY2X8L)2Kn&f=-VWOw_u#;w{?Bx#B({r;{avsD1tCNOF@hDzD8cd#_ zxf!|y_CcA!_G)afc!1Yu&d%r*n7B1}Z$Fu$x9>7RgVbjtCyO-$Y6L!eoX)0}$TH7S zD|lhTXv3k)*ZU#A&)8oBHQN-o$hmJ*kApV#958oUdcqOYvowk*ZZj;%Nu z&A+{lnfi6@gIF0X`d+@+f-}7Ho5m2Sk-xiM(PCrxBFzdQ3fhCqSVA0%e7#0Xb{qb6 z*{?Gq`@OGH{pi^he-b|*R5?1Sa6&sFRwKUSQk76|HDE1fsshZ!t8N|_~PS4XEr0N4L8k?3?; zJHdsz{9MO1+m3ge5sERIN7*ij@6B~#u8EHs4sQS-`t4|@z$lUY*8F6#pnV}(Y7~>r z8wNF2FG(&86kB%)cO6)<76Q`D5*ydoqMG6fUVN~J}T%CW*aj@F#(Qm+h^qL1cNFBmS2HX z4pPdZNa+1iLE;s%#(*yhz-zWeQx=Qd>7Zjf1sY7e6Q^_g143eFOFjZ8 zv6uBQ{52DY&4US3?rN$cglfaD;_|cYe1DOH7OyNebR;B-sEHZfLpMO$wNrTUeC>~1 zV}HqRmd9ut9_KEx!E8$teaaI8iWp3>1@v4Qgm~r|OSuyt0}>1lxYLREfVo$=9AG4y zHHZ8e)@MwbRjPf!pN!WqHd8uj2vKz6T?iBPJN1{$6P1U;^zs41S->z-b9NFN`lIE8 zhxIJvucq^|mG42$w_e80@NO9SbgBP+N6ynG0Lepv2`=1>%s=;1U|jkgf%w8>s-9v} zYWD^|M!708iI4NFX%;Mo8kK>Os?VW_!tg7hQlo&1CScp8HxOTUD+cvF^L3eaQ={NV z?Wbxz#6iKDP3z%#?#@#!2Xu*{L~frTU?rmoM`tM<#hBDMg<7`dt*73V)2F<8{U@*e zssmKv`>5W+aDq>U%Y3TOTe{>|3Q6j#VbR8xqP#3GrKaK!KN_-5_GG0t+c+~U*))ss zti#JfX`V4EfL&|QH6sW0T%F(<460>G*W&AkKIOEr9|9metn)ICq?v1C-cc@rJ=!KZ z=l8|i=#5!+O(4sK6)X~=;NSNs08HON9urXMslcuQl-JO1W@_CcR!U?>XS^eZzFMH6 zMmlw{X=o5GrTu4}N{LoS10yq)(7=%{G_=4~P;@B9V|n$!;?o&N|3PkR-2qa*&sO23 z9og-Vn)Smflr3F_#x%&Bp=qAd*(O!xthvJUCW^jWk4)s5TXI4+oZ+3>SkhD6dJN2V z8%R}gGp6*MorfSpQMx0rf&8UIDR5W=T>VVLQKv3IK{QeZS$~T9kQl1}@?L~s3SJ^Z z2m1W9-(+bCI42ef5p~i{ms4mBw0TAdzi1DQ9Eh6t{_xHCSJ>mmw5VoDBWQ|~WVD-b ze^RFqex!lZsjh&Yv8B_YId5+^#t`s9%&1%Y+(?ik$s;?BgS|^`l!5a zR2HM(1glh+cY!6(T6q5Uua2&5L910W!ry?Kax)+6Kn!Sg6iC`LTs8+UTeM2ul6&}0 zgEWU+*Y$DhNybGQe3bGe_knBBd76Kx%O?Gpfm==h!PUt}Au)#Pp1n~L|A9{mwQsppB$sZ+*8;Afb@Z zwETIL`^tC<^+ei9b4^<-qOq_%I7#5|q*OOuUjihJ{{wA)I4Sl5MD<#TP%--Vr_4Ds z*<|T-pbx+IW+(TOGcL;jd;GEv43cN?`$yG77l{JHf&)i3n(r?-+HF5fLoD@y!W1yn za8?Vj~+?Ax(r|T4= zFYPoiDC<+MOwyG-Uark{g6GFj@sE+X$x-iFAMm2zwnSw5es5ErYx`?8TzDD001{pV zHNtsqVvz&mKEi{KuA+*yjm%p!fU_D4tEGtKQ9b7SWt$2&OTW<;MGH;)dm?6~ARPYQ zbtteC@Zs*HwwoDD+*-9n>@-=V3AnKjR7sb`jKhgK9i{?bi>+k(H(y;hryi00Dcgsb z`83M-5tD>_^0lpzuWL4NIXy67)LX3Bv8@e$^79tkvfxfNdZD1_RqB@%mYAigKRZ0F z!w6Zzda=0+6Yht;{bd9wvn(Dix>Z3Tc^irpH|+ykwquAx6{i4wIm`=mM9x49Rju%R4kuMk9PszCzfUok2D8odHZk zXy--YLA@ip_aiR~GJQubF1=NWkE)16HTNWqbicR7Yh(EkT4)^Qtea$tkLg%is{v}E;FEP@ZA6cJqS3^{5SB5t-9jT(OV8yFRy@$L z%rI_77c>M%;0!@Pc`y&7@qR8RUp3mj*ZTKeHJ>Vhm=_H8(3KPI&;9T#vh|t4v z=K!NMKU@CJINpGIQ?LUD1hE>C7yy}v; zH*U-Nq9T4}Y$(L1Cv$gdc&_a0d2FY3F_$mOKskhXSkHT0e0T>Ut%)qRO>`@j@#7UlG>RQni)B3)L@cth~>G!pkqxlZODe@54`#NvDTo$g) zo;xF)9Gs;xd#0^n7*QK{{P+vS!OsgCYqWVJ&B<6nPhytyiTgJ8(vz>#Xdx_YtCluT z@%VtCY!~IdzAu#d|7ih!9_Z6Mym?gRRUm69C;|QK*+IXmK=q&gycC=f@vd^CcA~FC zl$*>;B8L_&gi%!^~gAn5mH8Ec9?*#s%Bl>+$izybVRYdUQ!M8TdM7}yDSUNxmQ zQ6O$&HL+t_siF~`@G&5~Mho3kBK4-mDsw4Kl)}E#B}cz@7#y5c%h@|f0BNYckL-T6 z+5n_$`2yG(ow`nl*Jiq8>Z8AH8CDkjgWv1YjoU^(SpXQ?%(Eqc;x4SavjCa!=iDg0 z-6w?i1`lS8oDVNl2wYqIL#QUSkOI4@ZnX9pe%YZOf5l$>TYm9PbVdCpQlw)eEaw#z z#`p8Bo*=A1FBBDj#Aa=~_TaKJz$nkzWo!>%9KJ2*#-THe8fsj5e%S)dJi2Ip945OF z8D|-pple<1lI#+2(ak*yxoeX7%Fjrvp-JKhZA%MNZW$=QbuGiVIs{CastOgMO34Qu z#7gl}9P%aIGTPef1)Gq)A*HCX40$JkY4uwS`h@uOkpwbl91Ur`Q~{5ff7_hSZB%U! zyAi;KFDNg+rhlvq?&5c}m}Ts$ zQu+fRSOkU=`?HMk>tQ9`6#@x2ydE`vLF7KS5n)B3-%FQyuermL+@r<(+NvB=LlHie z;u(heP6W`0IpQK1Zj`6c(*?yin?A?(jL07TNG+{J4~q|Y$UBTt+;l0k{bk{A$ADPa zL+l-hf+hrr4`$d=Ga;;5BVt>KQ4ixUk*P_&OCvM4uIVmC6MKrZa&zN~HN=409mh3$ zaur{>OyJe-3P3Fnu-En{uHes=B%(k|@|_~%!jwTQC;i1;mfkP3t1}A%bx9A(-CZ;U z=dD&N-j>$t@DGPoin+gOUR%78D+@1> z5*L5nnhoV$=r0nb-t{=$*zq^vv1UP^UphV8HIZ-FYG0`WA1s;{;u?zkB#*lmT$1dP zDO)Re0zjn3R=Ezw>O&XIy8tnadltG9F3XIsB5qiAeD+Lso|R>GxIO7KW0aprJ2sVV z&YAYPZFL_1N{>QE&hIkox+$6}F(ZKT0b@oSI8vtLY2tiZT)p@6c4SyF{9T^{S`T(j z-HDg|`HQ|h1Y9G~t7${|^nTZ?i4WvM>;a=LC%t|iYZwd$h#h)=@8 zmp>bv($gmzj}|*7m!OL9^<+&6wsY9N=5%O#jbW~`4Ll}=KlW66%htmX;9iJ>v}>bJ zd<5aJJY?Jv;l3%4uWmgH10La4uhjYO@Q-N1EX`VVYc6>IpvXJGRb#5=@JSu39s`I$ zx!{eXKB_TlhS5Eza57iBXx0IUviHju(%7|W9CFo>*VY!n-x209*|8deKQ95qUyLe` zrQzOZ&|vcEutHZ~c|UdBQ9rJ=+KC_Ef-6!v4M?H#hhx>2f#F;qSQZ5IXQc}+`iwgBC>4F4-X)Ya6q$V3b4V8wiZ=< z-SY!>K(2(Uz$0$3g1eWT*>_kxmCtA}-HR$QHKJr%bo@3^ZP67-e8#U&sI@c*3`ki5 zRaKT7hs6NY&2XoBE9kQJg_o<1j=T$j%Cobz_YLpjWGRu|txI5FZ`Z$6nEp-q54a0F zs@!=ZHq}%@$wO~IU*3GIh7?>@5sxCY)r`wY>@RgK>tAp1q(tDa7epBkN1gEmP;+jP z1BV1tc(ay2JQ>Q9jAaL0c!DtL^m@T;ZLaXF^at38iaSu&(Dz7| zWXCg=XBmhyp9YSa%A13FvD<ACt#oV1`(MQQwwt*&ubg3;< z4yrBXmPdJ0-1J>}y0Vyf%G^Bysw`%(3lgI_nPlqz*S=AsMzIHw{Rw`(S$ee6(co}P zfD-TdTyJ3*myKDsx6lf3jGcdbXG4t~g>q}qAT*pieXmLY$@f6GS8x5zQZkSjM>**( zl!zo3J&peEag=*^{9m<8;d%sNdl78|RL232Y)F;ONE&1iDsEIJwde<*GOCpe{zXyph#^GH@8J{oU1ezS^7O*8w(u_a3#gZ*TE@=9TE9artiA^JvKzOm?{#OnthXl9vdK6(%N zaTm5?%Nr@XAo}ihqd7O_kQ2|sGWzw|)2F^|?G?bC4%*0&b}VW0#n}^M$MOia$G*ul zQI%FImyV@i$22VvE_R$iIM+hoJDX4uABXruCA`Q{k17>bp*Go_<)Y%PZbo>#{+b2@ zsha_+Fa3f1iipEz9Um{pGdUt&01nl;yb%`@+k{B*=U=E7Okd1uZB5NsIpi+fcRf;^ zvOZiVHaOLwt^DoCO+0_u^{Xe#J>+&99GLTwFX_5@0Xuzl6F+65i&HU~{ucZLkKPdc z*lN7(?OtN99o@3ik$w4dmD2kRpkzV9((ttJ{(y2^2;mRoo`0wRM~EUd@!GRIUfMdh5@LUQrw%>j%)q$qZG9J{hG%pX`vTSXll={NB@ zS^8FweXPrG^mod2i!x06|A}m9b-8cDpfCj9{d!g^h$HGGkZR(ChRmhR&ZI}1UHPB@- z4m`lHi;tnKF5{8{I=I8yX#$kSJi8%b%3GW`wZ>3oG`e(!fzg+4C(cD0DiS%VuKD6a zyz8|!rT8Hrh`w046Cgs?8^7u=Nb=7#l$iv~QIVL9Dx3_qHp)Jqq-OR#xpVN{Kj2{D zFAi1%#ST^KfKq_KU)ikfy1&tranE)coM|1_+`G{w)NPurezoqw44hHGw$?lMnUN){ z)Tdj$%^sNf;3xELDko99|$Z zv}XBTH`O)4M<%6+2j-%h7!6M$>RVc4=JJ>WyYu&r)tR|-7-t?IX4YPY_Ms2v*y~S6 zQGTG@*}LEMzH6cLKH)3EZpes~{7W**R!q@VAd01hI3P3ec8Fn&;l*c{b| z=bJbb=;0`Y)rla~1jNIbNbEr(*sD-)^YfJe_f6n3oC=(M2gz;E(YQ_j)_Ypa&A~2c+{e#A_4PhFi-Yys~!G+SRsAn-CNfPxmzvgcCV7xWS&Orr#FcnSgQglx=$4r*0z<*ewG>4 zJLeyaGRbrl^?i2tJ!6oGZ%}UQG)3S;OJoDF1CnWY%p*9u#90XI!97BQ34e8v`+f@0 z|JX4sGK{j(Sl94!Acc~#N_9^5QV{G1%tQcUo((T)91vO)w}M`gE{-CyNzZ{gDxogZ ztk$CR*LNfEpX#a-rT)-||L7CL^$8IXz&%@5t~97&t!U>!knOtjngftlcKJ+AN=j$Q zHy*9jWNBDj`KO&&@#r)PmtjfC#Jba@mXp9tjxzWAag4*?1deL&o&k0Z*nJ>tk|I8! z?iH6lzi$nL|JC8gd`T1d2==Xd%$q{_lo!y}Mx}XqmEbCK6Wz>(DAv6d={AoU*(T^y zGWYY2r-fMH7p5g35SMvnBZq~6v3j!J>&71R1U;8Rum9p9!)f{MhUyn4Ki8An*zXB8 zod$8Es#JRj{`L<_`LXl0bGa(UA(`Hh5(|6};=?K7Jk{W`*!6C@$Bk>*W0L;+3Qif4 z@0g62f^!|cxFvAFp3XzLrrcV934|bUh29z2=Ny?9Z&Y#N1>q+bW20onu!V6R(m6^j zjeKol=Nz%_mb*hNb6{^LCAP}upJaYZQ@uIvv#OSkaQJ`e!^O9wJNsY|eLPe_yVl6Z zZRU@VB7(!J6;zF=X~X*lSw?+7!b#ssUd((>m$YBgG8(xsG5v|6F;^FfL9&pzn+AOA z#YYRmM{0#SO#MC>0ICg01-MqUe-YX*ea9XfF?B1fz z{f~+dAO)^gkfug~(cs4P8nec9+sYz}<@p(^Gt>p!s>!*t78t<9V*%mlAbN^Po45K} z%hz8R2~w)4;pG3ZCuW9;kIsMFw4dF%9Ta`63Y<_0l)4`-Yu*>G+(Ps|3C+a0ixnt8 z8j;iAWG%Ob8bEmAA1O+N;t-(PmFXr^{yx3fSL(oCtYEa1ToA+h?0hL!$|#Y$PRp38 zn}{_Z8)_OKXqvZoS-sOT+Zsy$Gj#8UbzP|Pp?lS#*=?5veU?7$O_Ra%f^rcDLzl*N z*1a;#(BvPrF0nA(Fxo1OZ){!<4yY$j-#!`7SWwh(atT^klxXIci(>G1djAqa_qMkH z8j0Y>b2=Y4E`Gmiuc`!rZ}}RH*_0oh+guTp`{F&mRnWu!9ts)B7);1(ocpxIw#{hj zfpmGU)YeQoysL6huR6gK6^V@bBC!V_N7L^}F((#YP~>+a#l}EEnc_knO)Z9vjE;-d zoSmV&*YSv@Qc#2p#+!HZD9Ck@xNj(d{;O)YVrfr$>4mZTD!SsF3h%80Vb`atI^=dA z?S8tNUxF%wzop|+fI4A?liHA+(z!I+v24fWXlktC3&wc(lr4jKSKUxNO8Zmk36(b|RYWRb|Yr1VSjKc4mi>Cw|LXruVDECgC=9=XT zq-4X*D+cUd@~a>*tkN(x(loL^WETbXl1?dvr|9+6$Z)DMk}^P!4(FjFoMs0nIy1i+ zyjhbWL7P8TAbUArJMxzd=Gb(kkD3f}bYpMbm;2oqu+SPf;wna!clj8o0<@fhSW*D= zDAMcG;)?qN>9*px4~*T?#}rKyQWD{83|s4C>uFVLdL2_H*Pkf6s9Pr;L5*#%P3=_* zf4>!#-*K;;1v_OPQ1+^ce7zCW&6&zOFc>@mYZgG-5?n%c*X~4rh4EB%1|Rm^Fi7)V zkV&YlmB{(!Btd8Qgs2aPDkq!DPRlF?z+8~S=|u8C^*_xv-wet-+ozt2x;`wp2tJQf zjZcA7<_QkX>!-{WGAwLv~xTft|6^_loOBYTz4CQm}aO zDb|jG>iNW!x)$&OmGdiw z20<3cDJnmc#$_9yc_Q) z7-^0@^&Y6^oFCbKALj$=yK$lsrF|h<8|1gk)B^3!1st2vHG6?t|8BCf+%6%vt$xQP zM6T%7L>J7aA^8Vqt#+8?ne9T{p!ss+swRhEo}5RzBgC9L4_KU1k9g)KlnSWnm)G3U z98=C@boP^zN#_6a`e2}3z6hOx)h~^YeslIa0$k0u{uX6d^m3wO-jfrgn_Esa)OU<7 zv*aEy9wm5xTJ;8pWdwC!2Q`C8SB+LTv&_!ED!E5EB>L+*ITR4Mo4-RX5=T(4Iz2~S zO#FZErsb4u&@7fNgCjHL@dwd~Hdjgn~Br@Sk2lef9WB9J$qZz{ff@Zgw2sTg=(H8F!H^CrJN>-Ve6j zzXWOqlb#)%+iR9N4aHxngG)iGIl#lg9-dQ^CQ2;sZw`ZR`FxyOrK`a5JZ;BN?^oKt zZFe;}xfdxyS^)3rwXK>vaTFB0w|PJL(N`w{U;oFBEm+oTsxl9rgG4yF)hN?=C8i}B6b3g+_`5WHUu=pvq4$6d71Tc zTOP#HU;i`ncTa+Ibo-WBJK~XG>rNfcU%mB&tBkzhUhZRnl9JiZPWrRAJ|Lub!lPo+ z&Cg{vXNQ+DzLSeEoXXh=w2hw6*=g*pH_1UHUu8sn)!}q-c5ZK|GRBLpFlYdS%4J8Q zjUHCBiGXOR60wwjg&~XVVcWA|KkLdF}@JTns4#)>)m$IW$dLRmLR?L z9XSYANH6ySW8CDxV$$-}lkKgwkuoZZzKex>dZ0;k<+Ce@ESzfBFYc8rT>hO03q>zS zcE}?8&4(<3QHcOeiqnDH;Po)B;N=t%M2*?CmIO7s#gPT-v-|OgCBV*_AXfo;A8#1X z)Sh$7jB9L4KLY{UwF4ROky?hk(&TLA{#I*YT>yu<=u8oJu7Tv9q^xXIQx^S4W6>)v zVYS|IH=m z?0qxW%)$kvkL*PKpO#y{;_Ur!1x0~Lp)Vr^>4rR;EQv_Jj%DL8P_=w(kYsish%`Sj; zyV@>=sIH+`yV;D$L&{e_vJ?R|*D{F^PInD%-fIvvh#?w$OWa%LnT_ZJEgwpw=E$rC zfmo1;gk)p;%UgdX?!C!h>++2x>#L(%xcVB7En{d{ZPYliX=)>{r5X2dA$bM4n&-n9 zhs25EPW8n|M2`SRc6TN=lq(G8yChEUCLxyOfJwy*c-DO$_tzJj-@nD4MrM)&bQmrRIq#v;6B3OXP8QcU zeOdfT+^Z)U_UtADArkcy_4u*AX<~FTXU{LqZp{devTwH8gM~)V zjVNOo4vX3O%{Q{ezmCYLAiuGWJS>@}f0!idK63bDsKWDqGTVOc9p~NTfcE$>0pR61 z~MauH>yES75n$_T8!e7rHN|r?m35fqN@&r_H3=8#W3Mu>Usz$T9{M{ z-gRV*pR16|%NJ|RIHkjoHnyksg|TLGZtvU)c_?)@zn}V1VeihJL*iO~w=y|<&?e61DfS$adm#s$>!QGJJfHXCt3COsP$+-_Th*Tnw}SU57IUqJilF3Z6Dx zs?n_oz#|HRn%i|aCLmeC(Z)Oy`A={Zo$-%%w#+F`2tXyLw0N&(8%hh*a1r*r<-DNu9{8$`imP}O9SMS2cYqh(ing` zCj+d?b2mE!9@2ZzUOi{8)UgktP%w(#M;)h>L>x7~)vn6B8O-9!$!>g0x*09$F4o`; z+Pn@j#H}*G>TZVkgg@d4L`bw|ToppWk_6F9F% zw;h4phYpl>mBb*H0_4X_E3TiY;TnPZ7ImJ8JlXgi0D+XHw;s^9URV}8aL9X%nG4#p z1JzBU_X7(*{SKaHSpA0%XhR|n76%b;ix5)~9CO4=8tpUXi+Q_z#amjwQe+rOU#Uem?M3M@m*d{1kR1Hsk@qrFBbM#@`_}%5GMcO&-Q}R-#yq#0rIMUgZ%Zmb6coZB6Jgx+(vezZY1BmT}>x7Fm^JK>j2j&WMWy@;cyO zNtMV9@4TvF|7Xh45=z2G*5Qz?uO%n${rjQbKM#-npTGZ)snuT$MkY3c(%yN?fzw-ALz>QcIVVq_U)hDAKSXwM$APDz(JYAOfpM zDE01rKhN`<|IB-4cDCkw&2^pgxlW%{Lw!wh5@r$r06?y-rDg;G;0yo&KtUn`>@Q!N zcPOxLcn}qB6Cx}{61k*czZ3gwSwa8+Qks8Wz`51vYXIOrKwC}OBnyc^!j$9u zQ0A%>vKH}Ijl%H0kgnzCd%OfnmR);EiGM(n6W!8UcY|ce!BLi@_)2xHyAZ~tfc-w8WuN9_5Z&w@~KY}1O@&} z$J!=bHc$Uc0S1*c8)^Te2%3B%bCdtlO72^=&i`A#3Jr^Bh8$Dxt@yS4irIu+3Gb~G z!yxP87og%U^8Y7)yZN7A%4p$^y|6Gi-c>Jr>^!mjChp-jiXUy_E^T3Lb`MZv_SH z0U#)WVX2T~J%9)>a_7J23}|@^e1~PPlkG!#c<;rGnRJwTg(~2!CARRa zR``MrIj{oa-dk~Ft*)i#OPor$!%BE5W%x(TcUT0zU_=h&ID%q%FfDiZe+#___N;&x zFyw1j>$sS8z$I4BH|}mP!&5JA87Njp(`bj5^Agk2yl|wR;a*Y$%CM|r1q226(IIpw z7yHv_NB*-=I(7$+fZKZjN;FHg?AjFr?qv+{S^`RmgIQ;*kEiF$Xy+%Tr}xqncouQ8 zj*q^>!Pp0>mr*5AZU+Cm=BY;ziMo7*zD6;7$P=1CKlrn2&28KEh(XV5kr$%v95Ref1^_3tTG1 z1x}baG#Lgl0NF77dlO`foTQg+8aS}{vH;iv(3+HA`_s}kv4VHfUdfvO1pvelA|~>l zi{fAe*RJkJ5HocU7!DN2y5&YhitRA`oqL(7>G6#bioyaY$R}{{F z3O2~tk)RJhD$`$tpTxX0_n($0MeG5>o}2%k0<587SE9WacZVAvtpd_O=iIGnX%S>& zMN{9S$)Sz1YNG=4@$Fay^(uyN{BvbB{HOnvy>41>#iG=<#R-c?7tmfQ85$0ZY`VA= z%~~x>`+{KJ3NiiXitFE#QZhAxvBMx2z{^@dbp1;-NhX#j?Pu`H%1!oxW%g!M6Pr-b z9yP4F!S084k_qrsKqOe|nEcPStFk(PEC-xWWv|I$Ju+a#d`Vh}QY(*rqHl-*m~hF$$_xK5q!GMC+p z9tB@Orn^RSqe}N+5$TX)I1EyzIg2 ze7m1w{8`2lR%>Vuwig=??kO5Y-doNSum<=APxs;@9>E}fxEPC*o5SuXb^^>WAi7}% z_0K~3O%L(==Wc4zFjP4&@^1Qq7GDl~)9;_$a8Gwp5@0lGyPr$E74OE1x(L)UP@FEr z#U4?$41wNy!bYIe@7oilw`#ne7Pln_EVzurn_XyGt6f+b)fdgum}n$yrP}RhV*MuFWGVR zx|F|P?|Q^RFHS87oD$zS<`D;fA1xv|XSHl4-(!c1{rP^y&9A9qnUgNswo0dr&fvp) zzN;Ti>wAr|7JDxGiOQc!-yNwWgPE}6dHU2*`JjlreujBN=nY;8gcA3X_T)w;x8(#6 zQ@eI`5;T1S2bAvj-gWq*hqG`lP1>?P+u@_@)*?<|5p2*#Ld&w<1eCZ?Y=Q*faj`pMpRvr0@f1FpIU`g zT?zv1GR?%pSeBVy-S(jN!U25*2)4GY9lNFc7#b)CfjV}Y4?=JOhjB(xvULGB+Mz!6eRP&oBRA=-A6>@m#}+`aO!?r-xEfWXx; zN+zYbV^PPx`ttoS+EB&@{?KSatjjyBcbUlN+AHP4h5pggIHE>j-^Nm+#}^a;4gfk< z+EBjcDh9`L_l{w}%VI72j1<7Y-q|^nkuC_cx2atE;U5y62(hU|Qn+;vfg8>@>g?Hb zSAIT!O$0w=?#iIuvN5WsUI!;IFcR2Bv+`So=^e$LcY5?2l(8~W0&#!?8$^87h%vm=W1`Qse1-AAdA7kv zm?OZDg#I&BOV~>Fne$JXdo$HuqS{xL)4`pQ}6JV-yuv+tN`?-r!?f z{jg0%9^%K6S3cH~SLg2FMg!zw!qL{R$ZB)$a`Cx|tlT$-?%!2~h-w|e?aBX44n7BI z#2?*8Y?S$YiPC)R&B*VoGkALg78CNz(w@n!7@+xn%cBs=5i~Qqmi>7F*|Ewy?YoZr z!;ALC?fh};hZ|-Ozb;%oyh^ycJGhh?lNnFBqvuN)b<_&sNS6LOw=*h*$k5Y?^OGZb z1%Nocr?#!!d^ZGAhjyFy14U-6ae927$9<#&Qn>a+Ip{*2RaBG&j(^GatXix($Bi5? zhS=(fNCR)A3P;?Svkv|;HTb7OTGo<2V{ybFy|`f;rlRvAw9vidu_UT{u&76!qfk|7 z_vc>;qYmyvQN`# zm!jPZ7a7Of`O)gpV0pg#aje2pkDuJizB1U;{?~h=-E$ z{8s*?R!D2pXDhJR_)?;WsSqEh2epzsaoQTI;>9^={K?Og4e?ek@ACrxW`ahv@dDlf z^H3tIz`X=#t%5Yxp&>4Pr)mlIR^tRv&uA0-ri9|OWi7K`6E1VPN5`Uf2;dmax(bdS zlVyX5Cp9)I$CR!;K$RYi41uW*^{>NzMg=p6X(rR&m}p~carH1Z z#@B|JU~W6?+Qos@0p%ly_;nw}(dhRExdg@Y^Iuc{>>nUE_^p)jpQ&d-eEx%G_8c&TklYu_m4PrHvb|r6~{A=C!9|?)d$uHh?qmAtP`qs zYdXBPi>Mr*K*NbMY)dp1-u-7#5lSW&fDKwe0lp{c8bwAd##!H$MtfH%haQ^ z0y&CRd)VF~&25=77JPaIVJCGGv%@#f7D{6}<7=K8WdtbDr1;&R%9Bg>fpf-3)n6o^ zT^y9H+T^97rn|5{D-Iwl>_o9a@Tw5dM|D(-xdUE$p4>$2vAXRPzPbW}Y{}>6^*U0H zw8#m9e!VBBL6=rVqs&&bxTJ}cxk9e>VTB$kIg_kqmM;)i+9AGxX;ZLM`L>x=;a3Of z8mm;N%H3+R&rztqbmwpFtd)H|qx&5uY!oNl*=YX_)DLUo@u6q-qHhN~!|0$&NwKB- zIPy#RTH@Bx07MAsN|(2`{*n&U@5z4p_d|pg<}q&64yj~b(#b_!LT~#Qf3u^@0hFmC zrm<2|Acadk0o;)gLLWuIo9AuywjIO2`}F0Wjpn)5eJJ|Q!c`W0$BHMxvRqq0_#_A@ zV0GYXLTZ9{+9-MaTlPw*z*jPZ2P_a^?rtkcf$*oF-k{I=j5GXz|kZn#}Sv zx;k%Y0PD#i&o7|nIG55VH@15#p@1;E3q>YDzJb+V6J6qa+6_%UO}*`ED+@Vjz57UF zYrNG5H=pX5Vd;#VHQAp;DdU=bjL;LN(Z;chmCL*H3+M3XX{xh3Wvv=%QgM?Xs2o}N zhQ%qZP?_}J=YbqSs!XP7OT~C1?CPz(k4!jmmX6jZ8JRiPI(T*i*mC-C(WcWI zCwb4mcKidZA!l(OL@_xA5x=kP{^GYnN@>$vRJ}l>Mgc9}C5hWrtxyZ^K!I?jpW9oa zQ3<7O8nnfAu2UHgg~g{vbrY?eRbB+KgXD^vHThhmG_agQw*a^Lt;{ z_fa6$iz8rX_Rl(LSXt=!dNYY2eyQ%#-MzeAWG}Z|5=2IcBoem;cV>@Mx{^)f)l&XQ zf0%qXZKc8Jb)-EyMUJS863!yHa#(CSBd>eJGlsZqJ@JD|{(9V@<(|;F?)DF}ek-)C zQBbD@#E7$H{_=foTg-;f#*}Hv{gy56{V?VEgiJ^Y^EEsA#=THbfJcs49=PTfmqLwJ zdJduANLhZ|qV1hzdA~#N5f>uJmTM43Wj$90^f1yvdBP7|>pEGfxSP8IWC&r5qK?Vs z*#xjJ&LhOlA|~!3M4lz?Go)7ijVSi_408UN6@H-enzx$~+T)uX2}FeG*e1WUpfZtC zT=eL!bc-(+tVPY@6J|dq{Ys=^);r`X$ip$4b>=Uk5IkbH!3mx_Z&f*U|EXyh6|-3d z(tsMP8FTl~JM`fF%ufL&OM^t9g8er?x6Bwk6Px4$x5j}nLmEERH{5-zO4Kz9j<-zB z(-dR=SIUd*IY$XQwpZS}&8Rg|8?wVpLwYg}%;hu=CqIH^h~DwLm;T-Hv`UD!MZJ=;Ry@Cg5~i9T%g((` zM=?q?ROnVf6wHg4wOmT3Gf&h&X6&VAK~WbojandN_r4kUtQp*85t{JMp_AH3&7FT* z@=*1De=`vBnx>u#Ek>>J0#K_Z!hsk1Ej(q9EZS?KmfGQ9H%7mMt&jcmo^^vMjB$_3 zwRh@Vmfy8(|IL0Ag}ew{1CK%6)IZ|I2Wp@V8wDy}c9L*8(I@sH_exVW!RMz^VHBS{ z0?4=`PsNX75TuWiy1{#WB#1}ANV8`%YV}tVxm4*sdk^Uy_8{&722Z> zS+;MiDSjZnKLGG+%ea_lKx;`QTuFwC791#BfgYt-%H`gv*2z$3S7ApwB!a9Q&HnK7OK7-e9o_|$@P9Y zWX-JsKxv;`RV0Y41L=+0|K1MOh5k7|Z)LJZzjdcJvP)79l36aGMWg1Dj9 z@~IMI2V~za8{Ik`Fdlimwi$_QH(BEt)Q=30amM{F!~=r^Unsu$3ROFBQu*d!8_r08 zHYq3f$>6AN55`?$+im9&d40`on{pSkFkiNznnk zqoehYRZRWe3zEQUMS_!gbbd*==v^uYZQz0`vnYA9!z#0*wzSr9_h<-oqf+nEd1hf;GXbg-rTk#!TEMG5(4HNg8ooym9Z4 zLAI^B?ymD3y@}T~-)lbwy};8!1~&+Zt4F0!2Q7=Pjrj7(&m9tZKQa?DLgVhg?Js(V ztPn9xbG~&LbJIX&e+mRe?^8zE@U2GvgfxKHaXJTZJ4rPON6t93>^su0Ls5QtCJ77w zICldGnRhF5u>tpfv3Sdq2bqGDq0aY+(s8_36{N0IyS-^yot&khoqz#Hw#oW-;fz+$ z1Ial(;s9d5mOOJ1lmd2`zq!U9kb3%%Y0WJ!n?kp2+|qf6)5){KIqalNn6AG{_fUR5 z>XmlRx&=Y1^6Eq{Z=73-dlO2rgNRR@x7Xxn^+S2)4h}V`8$liNwDQB(0|>ZvTzgP` z(JzN3QEdeA&sCqTSa5p@*LE&@l&_wF1wWXAP6lt__H(gr%GFI0iGO^B6klGV&ANo&iU?~lvTJ% zX2hl1Dv?h0u6aZPBJEGK;&+|w6+aluPB#eo+Ea4X=h$alQhZ-$s(s?j#FZ4kF~YN` z@8H96L!1uQE?H@A1_L;-9T=L@RKIz6yK;LZSZYxOy5zil$hjB6M| zU3tK27;N4cuP=NY@NI|2H=u)WkMQ7<`RBKDZEA-nX7E>P zVes}lp4U?$>$lHZQ5>O)q>h>|LRZ1+W1@J+V2bm6%2zz#c}O7?w1AUfo6 z*sH$@b($7d6pajw)`GhZtJLq}xE~JK(AQKISh07?PA;U9)Vs#+?~pCgvJ!mUsZquq zIVZ>fz=O{uGPdUy7SUiI`#x`E9xyP-*4V;%;mMOgA8^CTT23KMb>HaGKoaPxUv0{!PwIQ6%F7X?HBZXLXf>yBhrTC{2%(m1-j z?*3c(Cn-;`0B?;80LdDpvCD4R3TTf_!vLyiXi#xyM%cXwOUhlaCYx07uZBaFz3X4UQo?mqa5{K-Zz9V0#{=I92b?f7a~i={4dn7!_7424RS6X^yrTDn7TOeR-u%a=GW z1Nr|2>`;pTI6KnrM%^#5Q%;ek4q=o;`0hHBxOs}3tZJ)lSoU7}hl(ECtaMr{wvY0O ztUKmj5Q>TymI6k&n0?w-@y~kJQXr;MuR?ULut&KIh*eZ0X(k|XVmDGZ$(hK{8Fxvw zhtAQ~a>dRvl&K1auu4jy2Ct>zZYNRB1<_3U&_H2er&pSC9gR~@WP8B~Xl#tVLa0xOo`q&z|u)-|^mRJemd zo*prn9VOs=IsO$vx5y~QzRlxX*nCQndS#nI*gu#ZtR(UZk9|eYHA%$KqU=u(k}l79 z>EN4#zI8lAOHUCfAJ%>n&wc=x6Y)Ylta%~$xq+jL9o_Zr{exR~9vO|4I&~k4r3}u! z-t!wp?niMQ$a&qQ@Hcte1+bNego6Ku!SR+i`M05!%w&dvIR>nWkUnHCbeP%fx}nAmu^x?v zTq_GLewNpl!7b&(H~Wt0v3JWByL=34;VAmgkL!94xly;=t&S8n>xQ@4RCA@;Pnu%s zPAxY;#QJpzNi%I83!OJLbsgd@#mtW#nTQz5*|PjdeP)knoOotcpw&TnG;wU+CYg>Q zY|nM|U4(hemhUZprdtbGl?ZxRTk;H}5HAp^&@`aOH3)995NZI=>m^93FJ{XWJ&%tq z1foF^`1OMh1SY3**ct3*(%&`_~{2LlPt1i_T3V$I}TNGRdLOl+?aQdgXLVa>Gn)53L2i@f!ar0&E%1;n7L_$qDpplR$@eaqY_?dwN zZ@*}k&fKIQ4RKAM!x%T&zKf)KAnzQjm%;OrCvhK!WDrlFQmCb9?*yeHsX#gWdoL#r zjpiPkGWlLGO;B_lJ!MgEQg53GEZsm*f|%HK$9kwgYW&Ii+B>J~?>ZTX)xRlItPG}U z@c5jY6&A7=^lQ+cO4Xdi$A=mD(iGanrEe&7c#KJ5LExH^CrH_P$bilSBx=Cy3~rl6 zg$8e%KVi{mc0@_fwJ5#7H|jy@at{p#Jr0xz(Pq*oM>CerY+TIR&WVPA`g^`u^X#KL z%O7BNj2>S6{>2OEqeKi=Ai$xt2nL+6j~CI0uq(mgOf$|wrLgc<>z@R~_*!Yk@_px} zXeLuzc}el2zIEt5jg^W+6)b5tsf|0SO{qYIokiLtbK8VpKMSl}&5kShwnZ)1rpN=dw0#_BJ21?eb4s}4ewT#9JW8-R}+ddvyG$RF1d?nSi@F8wK~P*<5?r5@L*FiiNh z){iax(wSXn0V9(yqEX-eWQwfsgNWG+ zCU_Pr39Oak&C}>~p7{0K9S5-RA?J}ia{&PG>}z7o?Kh>!gI^{zy2QSowpQ%fn|8c? z-Am*|;9~iN$+(W(mim z-$tTGS*EjV38xdspP@Jd&Ek9Ce!XB8Wi}%8uT2ig#obHD^GLWhs(fFqxTOYGkJE7+ zr_}okEWD3wiyF%sMWz0UiN(PydbwWI%c-6Kxk1(i=a3~!5Ps*cNeE-OK7`K@d~c#7 z!$szM(_BZ+E6sT5(?8^lzH<&){E?!*Nz;onDNIw{^n<&D9Lo3nL~#my!4I&bKy%-d z-|VGO2_c*)k%hfx%QOh2Mm-p=F;g$l`iYqr)rf27vu!T&T#`-%)PBbw`n2-Nz?%m- z=b~Pm!RofZnBx9QDaF`j@ngxL6WqNpVkaCcc0GLdbLCsRdY8^6!cCEkT`<4~2tRRx zAU|PzK8^c%SmPOfpe9U|j)2KFYuJ$c+J|~~na3wT`3X`@P>ZX5hcvFB-ZepV;5qC2 zI`dfgBrkF7x2QpLw`FQ}3rymjiLQJSg8OvsFR=Wk@{@iHvu(>lgne&2jb)aT!&YIG zR(}|uYArUM<{x^zQ;!ost|;1&BoPH4QlsZN^gM6=|E&eNR`0d2ZWs=*M!~@&1mqjl zqzmPAO`lEi@h&fUK%`4eS9Nr+`c;SOp+|6d6iI52C6T{pjlS%c8hjciil|qrNxVa? z`a@%4V)tkRZxA$pYooT94lch=(J&DpN+}+E@<&h{o%khJ=vC7FSLokv?_b-mP=9l9 zcpKL~HSX#EmSuv9nj862fFXL4_ddSvk+0Ob){!C4Vilm4$e*9fW;0ryYv>)NEp$yx& zdt(;NXvc6X51qlmFz>B=0j#{`33F@$2E+nJBN5`2PfXE8lon}EUkeEF_a8;KNC|n9 z`g~bnWl_&0?6fa5b@<~^e(n7F4Zw?Ni_IuoOYF#8puMVQfA`&Jyn^~C%*)x#!B%Z8 zm(KN2-6TJ}0i8x=ooxHGeDR6=;6lzF!nMNo0-^>2+?O~ov-sG{H@hKslEf56s!7!x zSq(V*JNNP}xRF+m`RNy3VzsCpGKfYC_TC{^D5z1s?N5H7NDETQk9|9EgD}tbUo2EjWZOfKsIpC3>H5=Lk64zFh!cd=|lMA0t1N+%F|tiz)oVc_H-8!Z6x#qN}yw0{hYNTlF5s$L#XdTC67#dFAs3{%m~jSZA+ZSn-hTu zq7M^r;we()Za(UODF+UQ{5|)G2yhJp!|Du<_ZhQ3U~CCz#AZ>#A;oMBB7iS|k8|-m z6p#}`viH0L$BFK_tvb>v)cn4})NTxgp#IL~_ejn*y{GYmAFn<6kihC_ckr5cLzp`c zCCd^}D6#M2MpLB*3*}TB&e&v2nG^Qy;y(P~da+RUX*4Go&2Y-UbiCD)bo*+(> z6W}UH5sE8m=Sa`x6iq?tdy+}Nk*!=wN231l$d&40jv{%uozb}P3{q7x>u2XyC>3^8P|-&Wd9RV0uI)kjv- z7v!VMXjEVm}T(<_rq#r`k8Y5S5>M$)Me8z*>I`cy-4Civ~339m@WFB%KBfAl-C z$ywnYDeg8|czhl6B(ha=cEMt`8jJFPVWkJ7%*5=+#hP)gK2$UwB`OJp7y_NyAJof& zixRf$c-?A^6elMuer4p5gK|IrQv57#h2CD*reS990Ua8dPbOyIpvNaITC>W5Q8ps+ zXBuxw2x7!pi8N1vUJ4GWthF6q&hog(_6=H`ctC}VR)<#06+T);D$qaA(*QHdnKbpW z0w1w?(@*|n%#JlzmN&?a%cER4BmsumOZ&y*|IL#1ufl-=UJ`0~M=1%ecZlp8vYjlA z75T4w8e4NqQP2xg%5+OZdy3sv%!+AE@XX34-$#mz7S(7Z$ii4pIjnySAVq0<$e+Yb z3HXZuJ7}D|EVYNcsW!{OEpk>TL_hKU_s*Br1b_}@rZ`ix>`21c(hAe$#v-t;ae{|s z_cZ{@`IOxyhbVqqMXjf2mfiLc{*U&1eW4iuyTQ%}>KJ0#z)IvQ%e zA^_)87UiP(@rwS&v$%p8zWxRLE+gh0x+lT9oc4a?XFaXegEYsO;5jyeu>)=y5Yz6& z;L0zfUVrDMTU*C&*XRx2T2s4!qYPr6vqHDbMel(1Vftwi5klPU0;70JZES$ZS^s3< z@;H$3(wN7>Qzjj6Z}EO$N|QSME((&}f<5~+!!!Oba-ZOjgD)#tgg#sHPK(MKU=T98 z8q~QD28LL=MHcNt99zwWpYO65hOii8N zKjOB003aJ*4t^E%#Gv13UTm4bPxR{+Dp0E_@ft@KNI>xhr|12McL!?wcj@*E+DcNlq2_5VtbJ1#r=7m1SuMrW9p};@!^&|URy_V3NOd0 z;?Dw#)O%CvkXGPcK;4l556C02oF`0xy0nr&b&*~5UFI-leZDb$(E{lnh}Hip(jmXI zhy1gQ?iePM$~u!g#P%I~sZJ+cFJT?XJHFRB@NGCF`tMFTK_OW~xMEHkt%jl7s991_ zM=~RD-efzkl5Ft@$?{ap+r~P?{7+^u4@e_WN-Ni4`+4jK3l(C55f{d6;(!-q@T=`z z&YJC3zc+MFv}{j*J-*k(lPUgS9Ccjs;(DNB(?@6!2OHck=p_ut25gjBawUvC>fDKK zfJjVCIC+XC`@Yd)!F(7iTKoasaJ{)NIcgy`I{URI7SQebn#XI9RxH6zj zF5)3&>Gw}wddM>5<0C=fu20o6?wlEZ0~Mir9D)_6o-MRVUShSGelEIJKkg!mrpATf zc`>fogF(6iBqZ{2wxXfFYzIN9V9`ZkpJv}W__Un-OMR>hCCJLr2K1n^XIw{dWf#6RcNZc?W%eMfNW$~bO} zGMcTYu#(rKUVA^lmSVd3{XASJ>2vtRbRDmgR?^_bQaM~ha`8C+nL*GD@?ey{;an06 z#zlvP_X7<3#&!7v&$&(T2kECZd4j!Dv-#S~#rbM*l6?v+cU7!^=Zom5Nzs!^1x^&! zzC_pISuBTQFZr_<7C6gfL2sTjz8`Rkz+ob|1oRl1DYP@2hpCnwT%og%a=JeUUS=d9 zAzVy-@~7nf^+LXl_1$;^#2P_Ro9;v3w#jb}zNt-bk;Yn>JdT$jfkmY_sYcONgYL`O z8`El@WW3ROs_N9HM7+@s?VT?6jXdUhOP)*fsA8Y){SP$ei2LhJ8cDnuNJ%N`H#|V& z!77n-YU^&~TarSucY+Z^W))jcR~la~&;c{$bJ8q1jrhOv1Tx>xG4XIHY0Eg_V^igt zXwy%_`x2}d{4E7?P*27C&7p4Q`_-dKCC!Sufyfx8Q&v&hY@>O?F&$mwT6}k7@#Hp7 zALqi45;i2*@O>ehh}2W8;|$_lq16={7}i`=7oG zZ{tNwcsqSuWT{JkjTeIJ)jIR2Xtu%tI%ZWJ&cA4h z^}q5%eH~7;5UReZIMU@rioc|vIMbQHakP025Un5>{d&xJU@)b`N9|-KlH+*)Sv8|R zTAck;!Sq9ASR|CoB{)t4E+C4 zs{NvXpY22BZmTNGRn7s)VvPPfuq0}h|F~_QT$HRVUkia88$RoBQixI;s53z=%RWDVPCu;x3dE5#0 zIY6tmaFcjC{rtgFos!h0TnTuAEUHg9YfumWRJ)Qet@#$;2nC^P;A%s^hzYM$#i+4; zTW%3vLrZq_yX-T{1gSY(cL8X_^Ma)hHTv*g0DVuxlz2(N#f;E8o6 z-Y6cGU_lX^h&g$wPFSsqQIs<(8Lv}_X}&xFI{&iZcBSDX?5DFA-W22K_edYq#>z^t z59~yKP(9T@ws933-~;Z65Srm9jWCEJ1$qJ?C)a<**+5O584>S{yFKE1DooA$gSt*R zAkvm}`gI^@4jQ`XtgUp8pG7eGQw}LkABM$?YC_>}06tey5#ZN_Aqw!2Z4e^LyAZ~L)dy&qJ)~eTDb4H)YxAt zB0+58U)GTc;lNS))M<8|h-rE_ulRlg0ii*&OUB}l^{o(tqEPCrGoHLu)Cs;nK3aKi z#TGybxE$mXepG)Uk!u)_`>>f!6jE)$0>;Yqp>iDW_H}0)(6556;d;*5A`*G!x=BiL z7)mH0#)*t_+s#4OB`|t3rT${&>Jk51aWoVi&a7-kIFYm9e~pSN-4Ht%`7=x(GWD#H zv8@4(x$G=c7qMXf3#s6v4eIS5{=oq$lPc_#6TK|*>BS~WIbGw+QNR+wsgKpGL_BN4 z50-h>;r*8(b$X=wsd#=Qu1T{Ud)b?;)_7EWgF*7UqPu5+C(=jjUegMXX(~J@HkF`t zZbjDIP&=lYuH^JerIquwyH}9oZeR}^;tjy=pf~31x?t4e#PvZnL9Q}Z1L;=-1L?lf zC|~4i`TzK=Ln0o5=RjJHRWxQbmRwaIzcT0wQy)Ed@wbU-I^Y4B)6akZxw9fcZj7I+ z6li>&0vKafUgs{6&YjwYqmC1FX@uj_sI@SrZpr1ATq^S^N|mbfDI0B*=8HBz#;G?v zGdiWqzp&O~izsvsAE!2%D9(5dMC}XaKj2w#wKsP-mu}m@;%FuxSzvzAFs9hP@_cYX zojg-U`_wo8Q@i%8v{2IuS)zjBvGUjtGf-m#9nQ+gSx8rBnE43vPijCPF~S(oLx>QB zL1xa^`n{tMRqG3haGy$bE;Nj+Ip~q^77z&%Dk z+tBBs?cUVON_HR1%%(3=hv9}5?lHC@$i77}`Ez ztGTNF}CKJtf{Xy>})AF8B8>hExMw%#BG+A&-+KXi~vW||4=KbQ; z_J2WEMnYXPs=vf{*>b6{!#dcl*E+)k{LNj2OMHB)CK>N~`>-47Tc%S~WApwkS}Q!9 z*BW<~vWeO`)llcGdciQudD;O!S3o3O+f=|gFz*}PRP2=c5U599Fmg2Hz&RLYdj*jF za1>@gQt*QH)7~1B`?J*dNZEBWiM?ua8O4@=QV9lG@2)AJF~=*>({nQfn7_P#v5g|S z-qZks_-)Xi_P0p!IIl5=`kYNAq1}N>o2suXjuBsst6xPS#m{71GXT~dFVXyJpxPgF zR9BG%=S1aGR7-n|yRUc#OeTE9)*ZDpk|vaydPSz&lpHj_r$3_@950X=aM&}!I6H+r4e>Z#-;N$U#&B? zYYvx99rcUCDV(OML9dl<*XI3i(sH)c4IlbOob;0-Li0WJMxUpOi81qNDsz0!Og+Bb z{whR$kETa5FfQ~vHHV)$*9doFXRDffAG#wu8{LO1`)3E`!DR7=js|8FTl;npoO0B! z?LFh8cxHEj`{TJp56ag+ynA&82LHqD-a+(Q!RIaB#kgNl*M4Lp*~P?g(=m~$G8Ib^ zsqV$OCy&MRIdyxF{=c$2TK;3}K=VW?387=_Pp1)DtZ8_JTDbd0_ekFhOmf;59yAYz z4~{hvl!g`=j0)+^L}JCY8PbtIe1uINl^e(NzZH&qXKeIbQk$G&=jN9jZ>MCHX4p#- zxfUr#T!~()qYG24P|%%9aUZ_>r7dzb%e&e06d0qP#O9*wszB-q-+s{eWNu`e`M_5< zJRzBSU)~Qi|Mm!aWiYB+nC|$mrj{0yNya+`)#kW(V4B)QkJg*|Jp^C7+I#fk@!+tg z)PEC=6d00GdXjGzhiC0%^n%R5G%*}}A~PJ)A0_ivXQDltP?B-RY!pJqf%l&hmhu8* z>>g*%Qix^WRVsP*<7Xj6X%^@LoO6)jL>AXo`Y@W26V6| zi|QOgsJM}miOXhhS-jj_;_sKcUcm-sWNB8SYo|J>u}X^+Pp?|K2f00XKtfqy{ZITw z<=2K!qlIro$$+8T^FBV4tJ}D#vyG*+4nr; z3;Vji&6Hh^Y@?CF)^H%fM2RK6*}N@|>jUtUkh+D1%56`)=RH2rVy{?)ocW<`lAcx^ z?$)nGEm&C@baLlINA#h!R`+YHxY~TISYfmr!aSh%ta-`?ywOjXTltRoJ*(iDdJ@8S zg4IT(@0#^9-)nX{y%5WQOS=mzagB)6)Gu*5iN8E9i&xD?FQPrixPT5~Us%t`inAftf>cY1uApcPFh#*YN_rv^zOg=Od5X_ zP`+~f?Du8H-?-LVgMx97SFYg##Oyt(LxC^kYPA}YEY{ndf8H1!GXIpi@$)Z?gd6Rq zl#{^u8Avvkr071H;dUf#3gn-%L}u zrhlzZ3o5S8;CJbKXr_^nn|$$~N|s|T?RXy%A}jm^4p_qu(vd>31Bz<|=;pPnY_dO& z0DCg@-h=bUp6TUT91X8oB?RC6r(FRa` zpg}Cw7(V&)ZJFOO{Sy;e;l~FCiS5E;wXjgu34lVxEjo8#yq+4OFx&{4j>3o9<70%^ zt}XzVhJb#x?>()8D4Z}t{uoVj1=82TIQs^3c`;fai(jy}qAB%BfBlRaiPv@qQ{IZ> zCs4xD+0B39Uy$c>Bj#lNX6BxGuByZtA64I{MmPELj#^pM2+05|j$#E?A`(OQjB1C>Zw2uw9`PA#Gb5?g7O#j)zm-W;I8&UX8!E?DdVDU1Zwj zZTg+++KmzzXSJL0o9jLc(>}*+c??+`nrAW;EwdEHsrhdiq`1yt&9rjlhFs-nrK=|2 zC%*9+Dcz%EtkZtdd$EQs!T~OQ0e4L{@VQQd=WQw?V~)L1Q>O%{Eiew-9~27ZK}uNv zVTB{vGZo;#%sM(j#h>*-=dLb9(@(>qR3)ihf+V$VB&9)}xC8O4k1$Q_1Y52vk_+FuQFo_#N76 zQ{J!eBAKh20)F*&iX$ti*Vo16+b-JL?77h$DlTv@IETeWOuIkot- zQ@G}Jl~$8WI%E4V!Pr@eOF;@N4p|GUad5b`IBytsDv1}#FTsk-*Hs}@LzR36W;GgT zM55UF2MkReOZh<81D!Ow2bf~N8}aCq`NuyWhq;fij17K}0l?QlKK6Sn=D@HA&>4Zn z>fE8ZfXDQ$&bPLyvm;+^zyvklc36i#H3gSh$bZNZ5AIwo6o@}%Og^g#Cizo9)MB>a z8Q(;MrZal?LDJCf`}=vj$!C@%U!|4#E{I0qrFZ?ohgm;SaCT&joWrDo6zC-C<4Xt! z1zHi?JGb^B20IaHyZTE8cu9w?Nt8f1aM7B;NP%Td_eLDdSN+(q|7Xt2u_?)4uI&55 zQulf~A^YjW*HaX3dWw;JJ-$tYObxT;CBXEEc-}Wrli3FFFS0-@E4GO@U5kB^Z%1EF z)n13T!2})!t?R%jThw3BIi?cnkof4fX9!z=wXb6x2=umoalM=Uo$)f*nRe;kdjosp zJBA#IgJ4Vy;f1Zu#*a;!JqGj6yX((4eh0uF4odV>*aitD`t!{%=bsGmM;BYzPmtNP z_tW686JC2ynrZNf{bR@ee&U}+Dy&y>ZSVHoutUG{)mgPKR7ZStCZk1e=>eobcDJ}} zrvj7di;dB((aO=U<-?do7uLA|XRU9-3PpAIYhDKEKm4G8{_1cEJJI?+L&y7Ecd@

    r3u+u1O;|XRb3?CXU-i_*aUs1q&>DB}}b_Mw2guR3u9|7zD=zq)| z5Mc}O!^ha;LN9KouoW=eut(6xfKr{xtp%J*$F{=Nvd>yg^p49~9yH{LXKpDspM zAGT>))je)Cu^VR$)G+gk{&?%g*+$Qe+?pOrt;)xn@RQV!`ye2;?v}<3;~F$JS?_w{ zucS*ouXWdf@_VyKUn8C3Kgh#BysR{7`S5p&UaIp9p+5oI)b?e(_7(v{(UjEmYV250?H0KQ&!*Fn`#(&x~d5rE*z{qaHTQ5Lq={GSE z1IPdM0zAfdJBb#Z77gL1G@85+tivW3>8sg;^N2j>C{Zu{EPM=#lvLGT^myWd+B4wq zsU4Q}8@OOs0_`lgA0}@4=0fUjijqM|i_zj-WNk7a_)Gxdk=}z6pUgcP3Z&`l$Su}F z*KhAtfKoDI2~tL!S!f%krM{f7?P)9%=71 zT?Rl_~#`^zc?GXI^DW3EGx z!vCq4n#dEQ9!8G4H}cM3CoTg2l4cJy_^nR}rXBl`VNd{@$|_T-=(w3BLy|BM%RdUQ@rBIRikq4^FWAIu~EMhPgEwolTD1!^l*`U()PvE&E#ir+h|np=r&2X-)l0k@S5;pfrtW=~7Af?oGDoowny7<9 zt{2~btufP}HjXp?e*CqbdR~{#x@Ec$4*1AYe$=7d>f^ukf*yVT)Spq3p+ndu17z#v zqW-{W>w%Nqn)Xj!&M*HTS8o{=Rr`j0(-C%(w##*`~E-cS?gWz$652`nmv1;*S?PPIDRL{tPD!N9T(8`X91Gy zX`^q?;)@ z$51Z^CRd9oMr{gP=qK_RO=nMInDHdf<{auR^NVrH{xrk>G^0-GM2zI>`xV3F0xZd% zIkD5HS^V#s!iCeKs2h$7rLq@q7eV&au4TzFvX87eP2O01<>a;z;XjiP!Bk)m4OQL|qpUm4>iyWpq6KzcCRU)z+Y@_eW zPgR=>IobSX<@tZt2-puK14>c%wS^pVcpm5!<+(whPV{hFv%ai&l-a|;kzyc?2A{eB zDeXu6@HheJHuJa|wPA*^!i!NPHh=2~4(9v=e?F;P(N8Fz;m@7J=BpKS> z$FH@$H=jMJZG*cH_hHewag8r03rbZv$xl|_Rx7OX)ua6Kra6lU#6!IboR_J8x@BK5 z(~B!@W)+Z(tR>ny*+cXY+U`*DpWXK|L@)A>?pjQz_Uqpl2OEfX1CmoWt%_1(U9QT7( zti;2BxPsmDJQrwuL@}C~tF6qN=3(BxrPi}Q!2MaihhDTj5cjH7XUV=&wpY;?A{+Kc z)fwxO+B&hfj51IwP(0MAveXI{*xH$$(D{mH-QK2)EB*9k7T4WuyKGHhCY*Ug5W?o( zuYbCRAhFHi3DX4{<)ns&N{wpUs--+#P}#Z?>!^|sIsdlz6yGxhl#Nps9wZ&ts-F@Y zVN;=jm%>GdignqkkDFI^ufu)?Ts23+f60WByZ+0)d}TAH_n)hHj=?wHm{i8GAO^Jm z%k={&-DlY_QuP_!aMLFwjfPwgJzA*u!5}}LWHDV154-0l1{!q1G$v^mMiyGu?J z6a#9}_mg{3a@&S<6O$)h!yQ36H7LtB7KwQM3<>`#)gO*^6)PO7qgqbVT$K-Wp79sk zt))N9w0(lySs$$`=p2@@@*xGMMaF)G&;|3rcXDOMOXGD%b!eqF zagh->En1G(??!kfcv&2bUZp|DFHEArQ{bYU=#C%pa)Dkfo9iDbF5$fhj^^=W{R-t( zPK7Yg`n{Ik zvu(P}(Egkd>ECDgZQ%YNTm}oi`a4}5{|IlD>$0!qDFq(h**ujr~(Lj3u@RL6Kyk70H0qs*6c#a`MmXy>nt`8^_d z84?Jz0|>3{C3x5$X`23s*$&E;Ph+5-U>7NVEUkjka&QN%SR!%@5Ggh&C1OUDkI7Ao zT49g-k@rilQ-S3W(YC;_OeHLCa_P{ietWxf+oR)@^9sT}R3UdI3f`;SRA4ePNdddi2QAE|Ev|TxeZ| zQs!GY@?t*jhRNHv&)r~f1}Drg<&`NN8M#(j}n3qpM#R@Vyr0} zpA+L``K{aL5><~KXG`mAeL~bl{cMr2d4qcG3f@kCe^*;tkaI1i+CJv}WmLEd4fTZQ zSHJD#Z7y4Vbv{fWzD~I=o7F+ng6(K%F0-crz2O8dzz(w}q3PXluViyvMTn5D>z zv!|{avT>wn2X8c6xW?<47$UsY;AmOpaiab`_T48bn613753w=d=}5C56@sFJ^n@^v z%%vRE%z-ej;+E40WeImh-`^IOKq;R{deKAdsjLVq>cxIprTJB;Z`82p&0&3LJX)s5 z`3mi;EAB4o*BTl#eP;Z-_$>S6tS4b%xJU5moon1F7@@`GR$&He`IMDydUNF2vz}Pm zzI%rqXSp6Oep$vFfZtpJG`R?zWCAe~8?0yZ0q?(>oawLWK3*r(pa#N3&6Yep=@yCF z!Ey#gS%JGcd?AyJSk1ARl#O3qde4ejp5*uI%kVel>H9@%XKYbAzRbJmETaC&lqDTA z?S!cPu9;TQ4g!p~6SS^Ut#n{u*9h309QX|}q*wqKl%_ z|2pV%3e8gBJl@|K_A7W@fWANZ_q+Hwo5Bbbx3Fm1K9kQUmJbwsvCJ0s@aR+|0(k{e zF4f(n=u-LJxveZlyqRWbvc#X>{4v$wr6M*N-aty=#JYfMtPQ!8@|( zsB~MSbc#t;ZP=;~7gUldG*`o@_#T5SgAcEc#kVVAjyd04ow-ccOe0R!<{uQP?bFL= zypc{0?r>O*yv)~sl_i6%I*Vjo6p@NoZkio zHzWS%v`%F0dc9vE#G9z}Q>7TLwVIHt!i08as9X{M#$>J4q>KGMaO|$7t``hYCkxlo zl4lLCTN5Ak&HEgXR_hMqi)?&L+=?<*J0u$M+hDCXMJMU1zA28M&YTYD4S7`d*|S#F zhis%_+Ur5mWPjLMwm2l_GR)GQc5_`2DTevhVQMI-{)?j_ycU3EnSiKSKZG%U2*+7Q zliY_&vPOK~s8W-eX38^9VmAO?y%!rQ>AhDku8klv5mI_LQ1$#^cl^c`aBqs;`wlb{ zqj%-v9#+V;cexc%w#!z`h+>TspzG9vDkWL2gZKw)IPN&}1dD|Y=Wb^)DeO;zZ8+`o3fn7CH_hNK|78c}2FMjvD zyi>)-9a0?NT8g%p0m>5O8=Ax`zSYHb`gnyIuS~=?QGoLz_$Qi#UE_+sOIN=*wmuJlGKwG|Y}8Tj{FVqYJ<90XNC^Avg^ji--4I}WM{5R-Qo z(y#Ed-h3=cSV|OkD+Q)sbThQ~-?i7Q>S*{+q zk~oW$P*IbFPUc?O?iB%rz?qv9%=)-pa`J0Vg+Q2C7UVA2X4Sc2dLQdF4Jv@m zdH+)pMe$5_Jvx7MgE$*URkmx&*U6|0twvo#h~CGhf@$Hi}{ftrO2@k7@yQ%D?2EdJ~se;s+aj_707 zDv;X0$pMn%OwBX6l4Of1^Vqi!Z2l~>M_htoSTz+TM6`3dNF@38#CJNcOXaB4j1bsnR=ALy+m2_Njc*P0umWc?syy6wJ-38PW6`i<)gjdA2_~`S9ICfDwj?*mf4*IP zi`V48Ed(2re%LJJy?;lC16X-*7e{b`a!9b+UOUO2TkFS|IyI(GS`Ly$L)EHHb0eIt zh%=I62Mn|M7?C8o?*nUg#hoqE3trB@$X4eZbI_FUrHG2oQ>VY`BX$07jh{K*hcBW@ zD0ZC{clHW%QP)Er&<;5DD^`wik{|L#ux*5U)h=?|s0S&LXqZt*F<7RTYfqD|i)Wp~ zOhrIDtX*1pbNC`BFs|t`v?fARFaw?Tp|yQuI&$=IM> z8Sd&TO)NETAzuFdFF(2U(W;Z9BOu~ll^nn8D{z2GZTpx6b;L=nQL@*(M$x;vcj*V* zVaA*fGtv!#f@`0pqPHvzjUTs-5oaIv*k4KV>7kSi+?cOm_t!?S8C!)~M=zEp)@OPf z`bFXxT_xHXmD&&5OicgQm#BpFI25Vz4px0QxMFdiA*w(At`L;>hA%XTb!hURD*3nG0-*ng9>U*Pf9h&b;nyII%NF3*8LtzofO$M zlDR+3tH|OqWK7}W+bFD7WqMQx_0>orVZ+gzkqZRvFMJ;^SD&Qk1B5;@PT3w3tT8cg=Z zZ7C++bDMW=gm1C@+VWEG6NZvacc(490#Fi=1=JdriEsRUcd1D6Db1qac;n2;D{&@L zw7!XkSN!pJ;QgHcHJN1FF6K!K-8AK%8LcC8&lCF_Ys>KnnjWXENmsNcWInlw0vRie zWL<#IRL;A)JUZPvs0%XdSmL-eas9Ahn|kb@=K4{yqE$A??YHACd#jG%l75Ds={_Bs zebHR9jQ-Z~sK^h9UrrCIZU@N?z5d-2uS%!)qAU5j*lgf$6gTw zk5et(c+4Y*rc)3ww<^DU-Uft3?Y@jcQ2ykj=Ci*=bdX$+Pr)>rSq%Jua}oU)LqC#m zoa?x?SUS2`PxB)}F$nZsu~Bg?0X9RcdDF?I__SCok{R@JoZ?-oL%fCb2BYe`5l}$6 zh>r<5IAz=gKVCwK-`B#xuDx#gtj@cT{Y;_LMMBk$;&WzFF6GbrttZ{YPx|#-GUc)@ zF%sOWzgj?7nVjvyM?Ks4HnK&#n!TR&?`A%^*E*RXxSQy7-!(R-9eKV~4BU-tSsT5P|iTYC11E+2RqEE1NPNL#}N?J`VK^?G}0Rw4nRaTE!(bj^kVQ#pZxL7gV|7JjmNH4{Dm_(S3xGYB#{GjY(kns zdQpsnHcA>VA8R@#9P7MJx8|x;@8zb?#HQD71@ukUqH7v#IVDdM(sWfKq$KpOq6JT_ z&8zLs{1>0TamW!XrYj1$h?hrv(9)-YQmu^E0XDm8gRYB3AG>^m^@`q8O@SWiGW`y9 za|IgbrhoA`T~RBO#2Iopkae0(MsAtXb?R(aNz_7Zt(U9IouTWg?Pg0+l0HA^&6@vs zSq6cBwyJFzLHDxRCNZcTHR@40h~dn&i=F|VY0w{I6q{mCh2AoEG^z!pY2oaYiI4%} zLT98g-|hI3*MUejCuh@>e9fxF;k3OjWjbK)O@ zuLD&|tG`;O8^@)sdz`xSNl7zh-~1M5UB=JepnhH3e<|alPDp`yNV~Me#1>I9}dpj+*m%%ir{xOSaqJIC4B@#wL-n8XZr0LlQfKAhUM4>-8xNgL3) zt~4n|Y7Q7nkSjZCS@=|+s~IB9*YW&Ult!cj5SzGMs!whl z0aYj*03~)JmSm)US36F(5~r*^E7fh_Kp|dEAC_&_|HyeO0^E*4>+7dju&bxL#&USp zg9_EfJ)l=@Hbu-QD>|luWX5wklg4Wh~(R;I@ z>}kZCEKyyt4{sR}7<%*F%(6`AY$NA=_sp$JlSI=Z0S8kiPDu^z#$A)*s6cr0toD<* z_4|7xFcuP5`+F#FSLNJSoj-afaA6USwgC=a%GB@cq>e7brq&RDgo|qYOMiXFO@Cys z&hEZyA=``)&iC|~1*-ou=0_bW6o6Oip(y|?5SVOC8Ea^W3o~xUD zq<#`fsr&~w?CUA}`@$Cdg-vxgOOxVNx4BLN5eFQ3%F-v@3@^uL{dYblN1LlW^Cc^# z*_ER`%4~7OSZg+y8*q)&zu~iwkHFA9`{@%t!YwWkzj}8dN>c<+jkQxKscKtptMaPe zxC|ADPc~rRUFnw@81nv3Y69ze3U?%1&fYz27LVrj{pDGQuJIFyC?$lgGff<`_WXoH zWwP~oQw#$F)g>+4wXH5juiGXR{Kl_a%)O$X6)oQRZNaBI>b8@U!PE>6hYU z2yvN03t)r3-<;S*^rVc21381Q63d}z>)PeC$IYUhVfd90%$fdNxpY(*oENX%`>Dmx zbbaRj#UU>FRs72?KD{Q9&lKB+YRTE`$8T-!Kt$+b;EqZs*=W6z>-XcY&edkV`>u|? z+MC(w(J1rfY1c*@Y#UbRNQmvEq^3%CQkVU=A&Q0EL&`^h6efO<5i7%;+`dlaV<>xF zpFVCn5`ACt!cfBG3xUz^&w8Aea7`u>hC#;fAI(cm9IG;Dd;L+~+V<&f_<3LMJxW^h zyc**$FcCx}Y-b?n0JQZ%vmcJhPQ%>*=l$nJN4ynsUHR30)+=X>`ImpKJt7~ae|Vz# z`_HCy^=`~&!Q;~$!OxcQV{)h!gjnjY`e#ME)J6)-4a*a^X5t)(u2Mw{NNw`yyBP9t zOA72`>LcIZE<5Sm)K`fU!ghII=qg9ewX?uOo#V;{MR^oPBgrZlB6}-i{QVW0;2BFj zB8e)$jJVvXbMPw965RUvgy3hIU5Sl7{DT`DX{Kg2JkJK#y(bOlO;YvFVRpWxRX>x- zo<4xF_V;ymvN<#xlOtnYBW_t|o)iHDmTeWR^)}1i%$EQ@=(RsDbt5YyZMZN8I^LW# zU5ZmNtj(W}=?i@qBX$1JfM2(5!cPaIcw4TwRVhUI>fHkN5EJk-$$neTs;?gRH3~Z~ z5Bb*C*5naJoZ_Siokiq|?f0`B+(p1YRE-r4CdLkztWxyNSry8&x(h@F=WI zXe9XI@v|QP#L?z`+Op1*A#nyso|Okz@}Nyp$?+MkJ;5{MM|Q{Qx?c`SJ+ta!XqM?7 zvhF>>Y?TdGQ(K_b3Tn0acax5|HTy|~Q-(GPeA6n#^EHKKeR=drZBS*>pl8C#k2}D4 zYBTr9%7B+7dQX)-Z61dJo4>)~u zD&VXbf%~uqZhS)$E&!zK_it~3ZyB2j19J}N16DF)_e&#hyDrsS&)hdqZQ*H43br{i zk04~SwMsI)9f zzuJEts^Cx#5m)?%Y}Ci*Q=fxNBgAWWQ|b`b`%qZu415#!)1%6BZ+^a4eZQHYhlp~s zknP)ex))k_YN@Hqyoj0`Z1sF>^}IKh6WAdA!X$)n4{D2cW^n#Y``jhq__H=2;{cXL zVVp*SX27!NizBm`d2etofU0={urv@Y+6+MEKQQdL=5EW}(yV{l6^E`jf0@e~p}pqe z4x$lOP%)-==|0qHwk2y3LDBJ%SXjjV8S2$WAy#i7l>9M-=7R-yYRYfv#wfeyBl{Sv4K35OYQuE%d91%i#6%g3|4`ERpZU2MjTqE(E@ zcgbgNrdr?><#^19OVMn^$PLo3%~`Ht*tmrz|8A?lDQwX5-}Cc3ym`{a--)MBJl=OC zaJSB50k6q(y=w&=lWBn_y5$ z9h3=`hpX|L(uF^6!c>BCdtA* zs+7Yu3GAX~+U}jklT&W1{5)A95Yu~1Z9%5dW%JGpQ8u?&CB#OYzx1uiWg=x#XRtB{ zb?00kUZMCU=fq*^YS_x_rS+5Q27TsXhd{iC$h$uR8Wvtz$-12JR;o3rG`(aUyA${q z+XJ=v;u`}vz7GQxmd{2tm+%|T<8T0n%{$cRBELdlHzjBji^-b167QB3+vtiu=zkj2k9o<<_uiPl22`X&05Rus0%|`I+Bf~ z4@zkgKj(C4Bne$BL{~?DHp!rh=xTOfm#ZXa&lXrQq0mJy+;7l_>P&DY&K~o6tMCYL zKlGb?{X90yb#EKz4~^ed-PWKj~GAjb}p?EpyowsFbVBe)Tx6oWuAl2 zp=#YJcA#d+cvPkzNObbY$&p>kr<>&$)Zo>4M~yICzt(%Z9~2!;*#aNL7Qb`7bcY(@ zp5-$g<}-qOgAua*TMq;ywVh{t?kaGk%atvu)j+L)iC4PI=T7*y9(25U%-Sj>kM+zlZ#b#llUdBi@ud$0Q0D-2f*X9NwK04C z%`fC^0{1%VeE#LeJTR_;$Z!Gk7SB^_Cs5><1|g-fU8^mr5TR7P_SP?5T>&J|Mx|7h z)V4qLM{-IK)lR%zns-Q><1Xn78CEuzW0WU}DKIBv>7HrY)MpNURx-frOc*%G%C8E?_Mb*prRlPy* zv+>x>kIr?3k+80LY_3K|dihhL-b*aUi<~IR+RM?KE1{-?yZC~e`#6Ix15&ijH#n@o zWQ<9lyOhv6Z*6g84ZQ4ub=)rY&e?d7BYW8W9_}9YFI)5(bSqrJFNRvQFfmi2ajn7d zilNJ_$v;h4G@Y|w#o6d%)bE$-Vc5Du(l-|$>8@0NPoY%gw3U%cV?;i~e%u4)AvZ2? zPLrdIgLxUFsgvrIs|AY1nb0Fs{DYICd4-|7f5-l#3^}9BY7b++9$zTPW%!Jo@qDCK z<4A)=tk7^H&_>IQi1QTA8j!;;7^^unpmHng(H{Z zZlIRt%}%)LV}3mxR9`{4p{`}jn|vL!d$`#W`U6L-uvMw?2T(SVmqBaiQka+g)QfLe zxjJfxbmq+2s(+rtYpLV6hHedG8@LhNEtNM_X78>%FojquuTM zd(tn5%jdF(x*u|7GR(-59!coB4cIhsi|p@@T549Rha979c2s9|jO$x|oU>c24L7Si zdixG$dq79IV@xluA)P?r$A5A=kKK3?2kBn>rud7Z9ZV%%VIqubH~g_%R6f zDmwt;bo8~{cGcL?rHFRLe|1WUA01x1wau)I4t}<~e)-vQF-ow>A)iDzAU&gyYOwoh zmHd|mch;rtK#+g4Ywlg9*Qn_4r=^Ycf;jJ!&44`O#zhb`VF%pBQH1g<+D1sjCyxU8 zJs!-c2mH+{@HY70Y!a~pSNV+V*99_tcxGH#hG&E^IN{G!yW0H0c#>loe5aa0idMz8 z)uW0KR&OhVfzjD?k6#p~R&$W!yZev6Vh%bty-8MfVOFP* z-yaGt|9vV{ErhVNb8`v6Kre&VEIYcLe#vRoIa>D08v`h3p4?mKy;s|UuML5j5dbMa zHOT!)6V7**7Cerdi;E?X;u3tcbRe;-bz`0npbnUp5nNL?bbP@3{`mhEu zY6IG(wgY$q!Yt_^*+>GrmB=T&sDipkyk+e?X=ii`hioDjYRW88au5}Q}sDERKWNhFoQXFIGnMTM$f~ zc_y2TMnrK4#BJ_Nq{h*w{*~7*k7`$WIPh}2o(?tTf2Wbu3AOQgR7qC^nr}-lmEhzD zp|dTltM@8I9-<8&pWMKb;LPUfYv8hH3PGvtg)q`4U6$CJy1e*BV<2dh?bV=Tn(~F3 zNmdaL;a{L#W^$qz!g0C!-p|i#XjbRH)SUp_b|%*n3Xe&Js5Q#@bp=z^CmxEd9G##@4kac45>AE zy6$UjF=A?9WN~HDNc9mCD;uHWQ3qRy5?Yy%T z{rUm@<S8@l3Y=yuvKrwYYMFe`A*9sxp3drozWUVX_guRsY zCuVi8XEJUpYBCCGgpgMnyTPFZP^?Cog1!K?q0w|*=!NY}e*A%Phxf|sn-<@1%pd~M zI48nzx(uW}b)|ow1K0iRpKGWuRBdoep{MW{()xn__I7Ml=iLde!QglMKn^Bz!9`{5 z#e4Nqv{oV&OnJe)ulnU5+<(2?L47lE)E}q!go(Pe{_mBe+z$!+`FiH)aD};qj13?B z%ui%YJhydv{^@APGem@Ol^A+~E?T~XCQ~j#^q#Ce1c_%vXKo_nKC90J$O=0{_Gkg> z$Er?&iWRaNTGQqs2q=%G2TC zt6aZ-?3GUZMp2bE6N&;-hG1FdV0kr58?DQYR_yHllcY@@vRb*7|775;2&Y%2@;l$K zj)CQInVwh}QTgG^_9U;6(nFj&I$KD)kfH@hjV1E~N4qQCA{ZS3HU*A4MY~Dbp~d4Q zHcdBodZh{{+`-daE)lVW|49v9@%EIsE1zBK9x+ekpTTb(4SPOO1?NSrTTpPUOD{}vGwB_ivsJvXW{AXzG|RyweFw||qh|OJ z{t3@$_*Z|KQXiyDq@1aqNqYRB;qYe;7a6qNn7-x# zNs_WpeSiJS1!NzyL31^Y-bEBVm90?3v24YVx}-Db-!wDO^u?uewv0rsJLs5RG3Q!Z zm-6)L$yBVRJyOYW5$M&jfk4Ktc-1r1bhk3|J7A>38~D@TUi42>y^YokCcxj0p4r}l zhdUi@5gnb(Ezp$a3M6QZ&eD4JkS>VSyBKic6}g8F!#8M*`7YP6uOP8Hta7R;YrT5F zU+#~zS$i?g3h5y@LbBo`$bd?lHFfz3A8t~@s8v2xpZAznF ze?kvxP`*JJw`JlO?J|@}$hlPoq}LPJlvB;p{0S`Vhy7mB)AbZMbP~8B2P(_D45wL| zqCgRhIgt@+AK&LJyRLFvaSv875tCi z)<$E`=pOF4Ju@amw_DwSnV(E};c-8ekztDZ91pq5(dJMs@ZgSIu09UT(^#bfAYrzF<#w*c)$#~axU&gH=I$?~l zY@K^@nvG92K|#=ZZJKG?uQNnki6^P6lyH{l`xIB_k93C^aZsjhlSok_$q23JlbCd5 zgK;u@8d& zDWkp1VE1_0>a;Ua_n8mBexuRiStpsd&0CbSj9D zh@lnf0cnr*Pq+Uzzm647Z0&uO@>zJk(f8YSB71Xl^XpVxRRH!yQ&pW}bWU@%rJ&@$ z{h_GKZyl4v^1Y+GURPepS1dsU8vrEpHH%yjly04F*h*ioI(h(^b>L%gp}X$k`OZj9 zx6*E8)KvZN>5834EVu>X+X?GF(CFt+?FvK zXZXNLu)GJus|9dB>DFrH567*5!bFQ#%TGTJ;DZ)Wi0rq%Gszno z!>Ah8LlGKd+Z1J?RPMEum|jd$ymxUYcRwyZ={m5mfuxP0@rm{u7a7gV$nsB##)Suu<-gzoNKDUCq{NMkoRApuS1ZOJCkPM znD4JS8$KEBwJBBSZ;@-ZXr)+2q1?$D_ZbskhV>z+Z0g=g2+iwx$D+jgX%dVCLABcT z?k0aBHnyeL_10vvG%c`mNn$aFhSb>OC-0^R$cDO+8OQLQxXDk zCI4Vyl?8Mo!-1(9c$jsgPSw@3K;p&8PQFE3|bzO$y~6Zl**WnbR$; zw8Jg?xNuBJ7K5>0DwH`T$L{qBhh3`^Dium~fPfwb;`#>$Bw_kw>wI+x=m z#u<@c_kT`-^JJ^oNd{4C%(aNCSglyQX7y6M4mRc)&VOh~8O>5}%+n=E08^%{ws-A< zxSo_NB1DWa+L3QAhb?aJCrex$AF6y zLH20wR#y1I=d6JAc45Xsfl0y*H3THMQh0qE=b9wY4#&i<_@-rw$h7Ri zSy|=U4h_+fByxkG;0NSkR|KuHct2TRpdoX0ZH zt!j$-MgePQTcFryJvG74@l?>Q(*44IcFdUN3xvP)uq2Tok~mU+-!gb;?_zy)UXI!{ z){?o6@fb*vmyb(3^!aDL|0^#Zs%;_p7$={f+8--?OS(27H~&#yZ<~2l^N}k*si4+p zXo`jUoB&6gf0l(U&AZsyyepm%(MLaZw8lFNa1CW9MLT5Lb#SFebB1d9r90E?aBevQ zAK+Yg;LKZmxdhqm?)SL_(kJ~j^PMX6W9MtAquH6cX@u|*N_CbtDTa-lMUx$#$HgVs zu3)|o@yg^%HYZP#z28izYx#G68X~R$h>qoCF^u77VQJ(_8@%yrbPvxk>lh}>gafR~ z+OW&P4R_+#a&hI{G$Zcy&M(ebbsW|_bsYY{eZqq|Cp1YNoQ6RuB%HGP&MBr4Bq{c9 z9Z%z{&=dc!&|6`ZRX5eIh;9`h(5fS^_!MFsLp1^RtGr?7x7#ocqEXPdO+|Q_0!Z9q z${yjXQ};JPg-`AA$|U-r1^uB9@ARb~G-Hda*a&be`v&nm!GS3xrqo?k5teqLj)ODY zRz~=2Z%qb`IR3F9W<94*y_9ob=$?M|33LUJa(M~M1qt0x34ik^q_@OWQx^O#B6lq} zT4p-KEcu&zQ=}_!*0_J>51)~%C&Vxg^P`%QFIdsG^8S5u#S86I#S3a@W#f%+Y+rQx zf&=q$J;R+{4!CgUKYZ~jsX9ByWbZFWl!j;zmSRg`e4+kWLY`x07APTWG`Mkze_cDu zmG>zX?Q&VWn8$1;8Gjb7)bCkmRkXT+2Dp``Hs!2Wnke9DR?M4Y;isMiYV?kQL5bWRGS6mn_LX(@wf#hOC(m*749IxCBIryWeZSmx<4OKv zy5P&Yl`*(I;TUiy!^65@h}FQ+JlyU~17_v&+wHQ&N@xWL!rZ-wc#1)Nw8EX&%5l3d zF~oc?G*qY7J|BK#Wl;eOf_@I`LmV9=G^hdZuTzb&S!k3q$YESdB~j(blsMTDGC>5@do zhijHyxt?zVDGfz`usaNrM;CsK;kheId8XPRWg!V+{R6d(72x>zHvU%FmTj_ji(a#n zL)ppJ%RyJ)FsxK##s$MOh5pT1Bvsj{U`am03((^V{GYxJ-H?a98EcokD=hW8eS5ln zetWi%TIWa5oWs5y_X*BN@kQ<`0Q@>dI(#}yTK$v-{leld^IfasPabtdQV~@Po4TSu zCedVqwHjGO0VE)4NII#O53UD(0Ef7Nv9;|n^x78Dpuv{T z(cO_-Ky2nKwxE~E?Yj{3;+s~#GgD^jvj|6@np22sVRuUfDMF~V4}5L9sXyu#jW(aq zdhyEDZvh5nrn8}W8AbpwRxmV+we;qZ|7-{SYgcP%HrEDG?|%^a7=@e@;~y3;9S}E0 zPOrZ@xy+2M#<{St>;p;)PoN{gfx7GcMhg?C`am59fsgbgW5!c#MbsuuO^U{@+%=;@ zMFt!{4j+#mjg6W_UOXoKjUfP<&hg~f6<9VmxXnQ-J0dvAB9bb2bzmRh&3;o}9C610qvl(#%npmqGi_ABb#g z6tEsTWj`Yo1ZHE|3<69?H{Ut$Wp9ijQ|EP`iY4|pZ*&8&A)nr_KaHoV7c&6mh3Fqs z#Q~oWmr==n^=uRGK1|bQ@}?qG;|r&p|DAUAR@Lx>x>au0TmNo6nWT;8YK3ch-Goc% z1i@0cE{N;o8+Zj;&_bPwbHX>54+4aecS;(pz(+5`RxMVgry{$c%=K(;?gz-WG@1NK)gjwq?bDC1s>W}h1?CTmEk;===blqxoCY`3il;n9 zIHeH;&;>$)heAkxJMOfkh2$#S$>57vzi8_Kji`I1!f(Uh8Hqp7vb(2ip&9|(I$(U( zhjB`!o_+|l_Wdnk1*JZbv8gqksg!OzfaehxAJ^e3UU8S26;#c7A&qTj6Owkg&B+h* zQ~kB3TETzydm=NBHIUN4o)^_SFkjLah%d4Ic;iu8kyncWs8n!N=t8?xMbZjd+` zt1LTtXzCfO0~90`g>^DJL9`vO@WR`3a;S&e@(uSCiGEBuLKhVW+XbY8K&)SSUdpsErDdpq~%_BNduS(>HR8~tI% zey%0kA+?nEJ+Bf~d-%~lAe0IpA3V-a%Q~yHGrhbj0ne+Wv9_9g*9urn7sBtxHwJzZ zfCt_T&!g$dD0ROeJ9ZUl%x$Bse^90uQ4D%qrx(W+l4~t1sqWsr;*(dlwb}HCusPZ` z(IBgn$)Ov;?Go^x@yYhPk6hr$Tv0;cNu&E)%bIuS|36fBXlj`7O_BfFhrcE zLGN;e9~RyQO`oyB=}`=qD(B!pu?uC0~-(g+P9OZwUVXhOb4s~tSDhI zlO~g^ZCKdum1^RQ#RIBEG6At%c<^(3=gx?uYg$`wJAvXFouSc%WC2;W!W~V6SjK$S z!jwcajlfMeThL!_8i2d&--9LjXL*jqI83^9JIdj55cQ}C=cKg>^lmw!bS-MQv*K+F zO7#?4PX(}tCqEV%#l2GsLpydmsLgZum2x)2`P6cMvgVvr8^hwyIht_p9{d_KN#gBI zw0$WqazysM;ZtTNuVe~A>aWgWPpa|D)0msQFCd`iq;s|){l?%f-6Gu-OWmao36pnv z?t!6%qx2)qmW~=#0&E_$8(LgbiL!k&06Ccpn4Vc#pz^Ev5vh8WO<6I)^vu(-A6g!k zWGZff#_spK{;QiCT~CQYZLhAU_yI~*hT^wy=QXy6riV6y%ykw7fgS%_HEE?c!7G`r z@N%VpNVWB5eHzJ7_P6{qKj6H^g+}D&HAH4TJNH10KgsfAbqiQ6<=IF8G;wwQH*mwW z1bk)C-)jfI^%+|so2lT}&W0wADHi45urQC7GlRcs+5FZWvg`>1+R19`&#JTug?=i| zR34LK^KP1M#E{&E2m)7nv2f!Yl!_}-UXoBX;;V#O0xarsv|ooMHg@dw89}&;BhHUW z#8u3C!PABHv)@yy^CBM+mPAO?RL(-~InGTv{ zPd~8B3=AEmO~Y)gIreaM^Q^8vRWhN=GPcHLRcA@qsygJ~@QSVc*PI73Z+8tvcA#OR zr+Q45{3`1hTs+Y_-7wNyn-`6f; zl6ENk4NhtA-I`YSm3(HF21YlDMMA#&QNpa!&i*bxd-|&_&^qDh6$`hKwXK~;u#sIE*yWJ#InT~NeGWzMDnP67ToNh=h z%hdwO2qD@O)CY5mdM~8T(ONj99?TFN^w5H3B~!@pHwTl?u$ig|P4j{+X#N}jMScBQ zlmElhTgElj_;JGnCNQKnx?yb6DInb_jFj$1=~h7+MoXtON;gP@bP58}k^=;!Q$j?a zbKU>@e%|ffK4)jY{sui1*Iv+6)Hi}{@YTPk} zMZ3n(O5$cUsQzP_Na8o}1gP)mfFf&YtLUO>7iH(t0Mu`liX#@~Q|Th`8Y2&}#y>cXs`LwbJG-5Km?uM|iPy5PfKu zKeys`t!qDz`&KRb$Bz3H3idE|8R!GZSNau}JH-j7f*d!twKq*QZ!k=B<$P41(>Kpj z+r%cZqKxt-3sewk*Sm?zFUn~N3)iIy_zkmPM6=&-B-XT`K{MMNj;EPj0LvCRO5}K| z#p%KiKRb6wrJjt5z11@nfSJC-^o2EYS8IkS+7FjcI|wf(a4^Oi!h_Y2_{?U+>icYQ z0)vc6p(5s}^7N}xk5291=YfC!G`6T}$3a+1_D_R-UW-4`ZNGBkAl`=N$$N^)T^(I! zEtOz5d*#{%VaN7uM!C=EmSqvRP-Hy6khU6S+~{>8m=QUCxViXDV7^PO+~({eJz!#M zqTGN7jcyyzAVwlu6#-w<(%BZYy(UY)zeSy0;IU0NvKTEoClWE6XS<|P6zDN3r0M)* zmCz%MQxY-mA-rh9Dk-pL{p5V`i=|b|qW%B|$r~ctZw?dQc^dud8LH@FmmS%o@}-W6 zjXFa;NwR|87`X3klNatJ`nMvfRcD8TD|?bplO>qaoilVIu@EmmWW(c+R6}tNLJKZE z1uK(Qoc&C;$$pet15pet&mI^*jnhv6$?F+5kZ6Tgt!ns9ty#tktbNq(JJj1Oct^_@ zo(%8R(X~=P;`u%?%%O+Y8U8lmM<4|BpZzHm=I4pZ?oWw`*`|~=OAn(3tI0je-f!!3 zGyP5ZAvXxwyYS>b7;u-aCknN$LVj3JDDSO_tFouW>r%U$a^dJuB);qFMB18(KdL3@ zy_-kL>}7h>$u!GGAq5GU&k2VkGu=cMW>0Dp8aw&!;}TQ=#h3;K#nkN25k$pTxZS!J>xR(+^=oW5NPj^%@k^BYO#g^y5FLZcd(*xO&Q|e0D z3b&Xa>B$=$MVZ%FCi8WZJi|G^$MQ?rd*OR_%NkW>xH@#;7U@&t-mb5e1E&9_A{|Qo zfdUcX7RDH|&L72%|5#?N14P=UxYU;a1kyUBFZt$LvL-$KYMgih*`3{lO)Uz&UZ1}B zHT*5A7T2{9sEk&nA3KWj?tGkB)w;wt{7(G+NQE z$2CjFSkpnW4i~#x9{If(bShT-_fK5g6qcLB-liglr@9)4?BP`>B8;wYolAjrgq7aPlT)`xg(jB z9XyHlBzl}4u&KC|-xr|4PV4#F=Mp=28I|;MTYN3D%IWwT_Qf8>nd1~M!wGT1I9EtY z%leMV z>k!+Ez3k7N;{wP%^$Y4<=2d|t{7+94_ukfgR$8s>1-W0fY0|%nQ~F=Ean0sb&b%PN z`TRLuCtPO=zuqKc9pLhLCAYh^CC~C?PxDpVS6Y7hqEz9&Z(#$0@UjdgdrD*|gKNuP?tB_=9?mifJSlr8yWmTgM(>|3aim2wp%-rdQ6RceZWa@^2wzd* zB{*9zfbtLd_fTID+l;%>*sQHI1;h*N2-uAK#R<3x4M|2{{^PY7zl#$%5g6*U&$nrb z^HV7AW4(`+5Ya>u)Pwtx3+WF*)o{744l~9= z*IZ81<;>J#W*5z-?Y!Y*iw179XZ!64>x!m}dY#>tgx}f7K@sNO<&?+H&Gr8>U>3$4 zp_RRzW)*GXbXkxD3Ke<@*A{hZKbsKdcUxU?t_efro44dslg{lsbx|;@!zzt}4`fFN@BTar$PuzVTr8H)_|@*8Q(+TWkrg)0lRz>e}&; z-Fj_2n5ofmAawJ}T#;IXztf@mp1|qItE1Tf>xRPVXa?&KZSV;;u*1v8IwkrKwHu4| zr&VAG-=>6QS+_&>e)Up6(#$eo>P6B;pruM_Cc_bWIEEe&X}mN1 z8pTH%LlqoYxxlCDVH!rBuY;<2YG0hyYxC_cOxR9WA%@#&Ip9vW_{b1tw!acUrx%%I zh`anuoY-&mgG2S>%(n}2w9hsv%h6A2&eJP;pR=f$b8Pt$aqT^M7Y@58h%nmObVYR)PX+~hcv1D zV^baecokKUtM)lN{OLO#1Q|ZWa`dX+R51MP4Su`53Ucb>5*ZsQWG{4|hnPsJkvs{(y-@3=d1~?3L_&p90T@RklF_hd{iU6JFGdXM~AEnE*0W z0hH%legESu-rt*E#+B=I^eb;k$ynJpyKds~XVw?H#`;b271U6cXO}bLH{l@$I?+R$=4SH;v8!iTeks?TWSNDGFF|^{7hj_wU(a2c7#H6E^u{( z7uiN~pHR5BD+w9Rn;K>^*Hb}(SKa9M7cH>!%DrV=+V!39qVb)F%{U+c5V&y93X;x0 z{Hwh1X!F}MrlSnEwa)15CvNR&L!x5cu6LutfRQ6FPJM%HbPX;OrqR*>2IinK4|S18 zPN7K+Ug_i+ed#z0E=!sw7XZp?qSYGi$nef?Re*2PSVqm0U)m0imsqKm`P9QI{6raa z$)`{6`vB*RT5^HI$pc9K#(cF&>#GC(O(p7R)(5)(?_@SCwi(u6xYo_V3Ez)D5Cet5 z3)G3*^GY=1?1_ofy0`L`7roI4!60mLpL42T76{jN-TAMDio?SyH zi#ep(AHv{TbVt+GBhbGP3XL9WR^bkplRkcl`B9?+AD0TVT0^2yS;-5j3H0tKJfe{4 z&)IDpBC3S}0*xl2+Ck>x;Vmt_X?qsT-9h~38B_93gd&$?INmKf?IxV7R2+UC3MS9w z=u(@3RNBy3)8vs#x(O4M(uYzyVYBLoJx0~Bb+1t!=HXG?;2tOMGPq*Qr(WZ{In!F8 zh6Lk=<0BRP(n4S9M(aPx)XIeQ zULac;aBaLn{&|_icOhfZ|AUt(`l7#mJ^!g3?ZLf>G~?{fs(v{98kfEotx(Nt;fLr5c?9~0@PssHh-!J}P3!$M! z*PQ%4ji1$^zzOP$g^k%XHxS6_r~`O-Jj^Qf;@yowr5xL?L@e5X>+=!_1em&X9}N{! zc$ZQ}2h=5$#sLf9GL{9+9Rjg@Q=BM0E6{eaKEj&){x09zYs6(H9?LF(07YT#LdVwQ z4Om;=vMx?iCSmw3g79~>=kQUF?2GX=1UqT{6Dy$4f(3SvAZgp`0DpOw?Bb1|9(SGp z9j`1hm==oB%_4c!;{Cj#fmxd?AA24vTdc< zqdSrXxn1}eEbiK}Zgj>~_#!Xw##5wLy*OEft_Bm%2xl&SvP!8WO1yOB*C_o=Nd;zl zfEkngD}bQK6;mq#&o2Q-B(=i(6i}D`_uV;=xzw*r(1?t~%cP%VJN^QPoQR&hDeQKo zzLZs~0P{&2nUW&hNuu94u>8r>W~Zwt#BXprZIS_XA`XJBW9dAMxmUZx_A4fFNdqn7 zA``t>5>@;A=W(L99*h60s3~GOvh^JJvpK6#ILna)sZGVwt0m>-h77u3g~|BTDW)#5M%alBc^uNs6w@b0<1kz`duY%wUI@Mu(_~ao z9d+bI)Z`ZAf zVQmZeL9Xi+j$v=}K|hMxas(yyq4SC7A#p6df9Q)YcjP>uAP5c@SAwwosL^aTatYML|QR=2LL>OSWB)yb%Cn5FZWBc z$C-I?jM#v~VMSNjs0f|(DB?9rD3f5#Ms_#&J+;@b`D=#eLEs(&^nxpo)rPOuJJw*| zX2W3qF%LD-kFkeZuy6F8jt<@lSdd`YpaisohL51q;jCC@n=4|Z$cbAJij3o@pq`Qg z{|xpzxu0VEJ4Sh;Jhf1$LBhzRuXEDaNKWNc_CDk!`%1d;JU=q{;&1YP0U&lx80&au z8U3?VT`G(8`&}s zBvze2?E*X3AjvV~yU4+?D(VL^+YO~XJVOo0s+Ubao+QwXBhnyq*8QKrFBBfD_!=~^; zFc^a)1xyv~B=t2e01{u>e1p7Edg%z}OL*_Xt{0)&`>8g-rf7^3AWQK!GFCfDbw7 zHkoCccpcgk&wJF-%R6R0o(}_X0pMi?#%$OMm@=d*H@dkkdZMs+b9Gs{GalW9l2qeo z_&4Xjo{^FaY%=Znc^YUlZeZdR1i&M(K__$)!Ncc(^f99>seOp3NBlym_fg@S%ur+2 zm3G&Jf_oiIfUV7a;h(yn++ao(G<(x^a;WlyV?`nf+14D_QU``i%1BVzY#^#-tT-Aus)~(|o`2 zUHGunCWWj)C6EaIAf&@6;8j$n)(NKpyYT)%N#@){Jankaw==q*e=#dBJNr6|d}FXB zDRlHU+T^NW>GatZy#aJ754EQ%gwKuwS5Czc0|FaylOK!TWtHLjse*&(QBY}(mB0tV z3)D6u?gr=QwXy)IUjT>D!-3g-C z%#Jiv^+m?km%1`sCi%}&f>3i0X8woET2k;T)|`fCTH_lJ^RgAGSbx2r7_6*c#|!jD z5}YWZ70ZT02P`cF2`N%nNrYD!cv?Q91j{K9ohvEkzu{>L1^p)oUR( zY&eGO`aKRU4Y3pJ@fZ6iuv^O0Y%3@i9+ zDQ+|raU01hd;??e<01~`mA;dinEpX4RNBAHTBdy%bb7lg#ne&snqWOLjH^eXz6L^j1bEe1c#_j0irakri(tTD0gvUE+tzZ?4W#lsBFJXCt^5r9{^ zNFPd-iZH8cU9>!Vzt%M4NT9P>k*2{V;Z4J_Q*XGo+cR)I^+S#>2vTJCVxgc#5$y6D zoaRhaFU}p;n}M{;xcWBgR`u7B;?e8HtMsVVJ<4m%C-J}Xv!=-W36=gEIeisHwL|w< zc}s`5lzm?#$2;>5TeFPZ{!m%zZ{8EK>^)|GzbI$QH zVCMKP!{-HYKy)>;G4Tp$Xor^b8D14RR4$YK6BM7_xp2G=b2hH>=p} zC^wM*EbY4F(DSLL;y@A<{Ud;`1Q~&9gm%*Zl#Lgopr(O@}Pvt zQjo@kVy*iPy)iZWMr!(Y3~U20>WZUWYW#DLjT2-tCb>UetVxVFY*?eq{Cp;pR$;mO z#qzTuch}gcX1r-Rag}(kp46gtkvE>@)Aqk#i?Q%(g(G2yPPkq&b&63WA;29~RT+&p zSGe~m+`Z#$Aa-L~r-EPe-IhM2Me?MB7rIh^58N?7?758OC}GPQQzc-W?Tb~e5A=y zIa4cjyV{3$DS9xj>$ylFq|c*yc^9Znpj(*0NTBIl@l`m32*$CdMf~O{ZzaO9ZcP)> zTS`|7Rz(>4RkglTq{cj0X(|$9MzquVFjWxaZ15z(v`wv@qExOg%V0)~vTjuIpOisU zrDi3RkbSC&?^O2LmxNYg!o-FhSLr|2A_Ugs1rP@NOuve^ztKb1@^T*JS)xJ%e$J+B zSzGYuYJX?zJwugA7%68~XaqTN(ZYlmQUP^k}fH823n9rR)vz;wap9tZ_>rw^jiR+8nfgA$;Dn1B0F*Brq}Nzis<@ z6u+k2=aNMdinQ%LRt*L4SGC8w=%8Z?Rubo<#uIZz-*AMk53}%}(A1Y}&Y; z(9Y!8koIaXpS91Zk3I!s+3=1N(bdTbX6s#f%zcaIP??w`(GTb?HB8yo|A~nq2hA25 zertX^O|SRrSF^jA0qN zfPvEqp=d9|L)SQEWY6}Wu0SLBXwqA?N8_S0tAs#^Y;q-;*AUi@dVzl?#}X zQp*58@pv;AyR6*sIWlEulb)oF2-G)V-)8!#d)XjVw~EAC=+iUZw$_>CU&)glC$+zL z+USoAy`Y%sdQ=ajhSJNIY5S&JMM%_YZr0K@d+M(;@Qh(|R$=5;CF%ID`rgq)cF;HE zbuy2-pZeMSpSqTbJ69#ht$6?$DAv%%I933DEX+Cnm1<)1D~Y;R(cCjGpvtP}j!DW% z8yqN}L4Xh@Uea7$6u?PSBeA&%wFC_!GLua;Ld(y&Ob~rbJ(5PpxX0;6@Z-8+mOB30 z?*v$mRgAhDtL0t<1|~rkociHXVz>p(L|`B0!DI3w#O@^;MgM1l1v&fiOT%ry!xg@U zwyHB!hktmrK^t2#!cuh}FAlS#?75xpRXl@GMou?M_cy3n3U{B-i1Z2~$E8tTs*3zp z5xNYUa?9}la2(sv4QnOpsghsdDZDSqwrwyi`MvrCaerkkIxw<-T1575Z<#W#^2}Gt z2cn+b$s4ZTc)d?@&Pg(iS#Pd@O-M3xP4zC|mMG5BBU^-hO=gFmhq+gA2TuA1L7&yF z>zK=El7JTwlv+{SdRK+m(;SQ=z}g7idd1{pK74~A2dcczr2HSC-A zp~iQHshnTS?~$pC%vaGJoo4No>E{or{#Hfit$0T_YE>7Hy0bX!0E?F4XLjp58ExwD zm(j91uYw*y*IhV#>9w28fC~Nyy0ageCHpdXruxpyQ;^*KnK1hU3Fmqq{wG6rvk^u+ zKJeTVoWoM$Nr=kr+;8PTtKdI|x*LjgvJr$hcKXru+LQ#QdTu-M*EmM;Nvh+;Y4?6~%<%1I@f98F>`K+|8_d#sgCD^6)PK&iqY3Wl< zKjq6RmxXJuyU~g|r^?Zry}g4y-+}qotY0+H-CL%&>&+)G&EZozL%9{86NNxwVV^1j zwfX87Nm{dOFjcS%PT!<{jwIDxK>7YbHS}elV2k3R#uJ6`sF{Q9qU*)~n@QZC&*7iT zn#y6zVn}GcoT|`-IQ6uWX{4HZmB^+Hi`XIpr@)OpkZS{10% z=5oL%U5uBd8(8lIV_h;@GOGlyzKsP`CW9T6Cz3FW4wR3^2Gdw0vicOT%}P+{OVR(u zUxD=lWG}+w_>Xtk<5tnWm)R0F<36zrt=fdl_Fe}pSm|FBN{;b8HxHIq4BtxfX@{E) zlV(X-6MLG9YjEoCkYfVKt;9tVJ~rkWF@^^AQRjgHSSX+j9dkTI2{Z4OdNkBtYv81* zUI&HlPQakIp`{hQTu|aVN%(k}BZ@-$fjjmo0Sxpu7R+DM-Y;#t*m4_yw3mAyh^4ce z!&xix0N8cqzan-=x7LI+g{O+IV4Uzg~0 zy+at$1Q`2p{*Ak%AZaXfCoex+S7$zXEn9h?Yh9tbs;w%Nu-)vFo?7%L8;JX;Kx008 z^vd~}Ho}m(M^-Jg$q|}!qph_Z7PNy-uj~qR{`yF+8k(&BLGwcjH?+Khw7BR->wg{T zj$9fSAz;C)`DM}Cui=0P)x6p?N*b&bQ#jZeQWX=@EbOaO&VB&~l{8%bey4 z;+-ZNKY1^&8TH_m4{=eT=uNXWoV%RjF?$aTsO~n0qzMGNYC z*#LnTAs#*TTjXu2ns&n8Ui>|yx=JWlllG6HIr24QdoJdlnM#@IF=_N zy9d1n-=qE>A*TWI2FX%dZm8W`^ELRl<}_4ivkL>Nrw~ZW0!F(z+(?xrwM@h&p1C5A@GZ*-@llb5GvSn~P zL4~rGps7_E{s!bgHu#Czn}r>lw+@t8b>^0#K>0RP3m!F_ZU#eZZB+n_ymK=*4L;76Y87woHTs`;)Bx#`Wd z%z}_Nl}{!K2l`kbBd5X%3*(Rzx%r2`wJp~8Oi>YH8^2tz1QeAcZo9Oz!Al9t@FBS5 zu>Z8_sLx-2grHg>)H>!l+VGBrI#xhV>{(z)6bQ$PLkRR7o@3yT1>Q)8SsM#j2O%@r zhQ+kiC^jP9sh%9?h^vBm;-0=t=;%);DaWrhl>SNLx<82o%`SKlgOe6BbeBUkhUojC zmd~DoEO9Qu-z$5MkH3%}l>e4kAy`Mm!;IO6EVWppIk^XUXp?n3;yDLtX-YC#pYyWO z|KKKXdo3PuDR!0~1qSYLk{!EX; z-5ROw?th~U@8stOY=ZkUcJZb?mjF|ia95Ese_tpn66=l+AzXMB`|0gNUFoZlz>N@4 zzEZ`Rk*w22)^8qSBNXaw~+iFLTH4E413YGus_E%IKMsOje8#zBT zfHui^h8|RWxM8H0g)>#&+qHxR6k@f7b#jtbWgOPpzYl2BCU=Ye`XxA!;O?W~R%Nx9yvhmnC z#F1ZOC#L3(@4amp{(-ItC(G46a!Ojq8Jg4SDKVhy2W~NN7bN_tADxO)`&QX6#qsnX z+avg37J+s4Mcm0jo}ysDTIzipVX;sKX44e zXB&;;f!<5Eecuw2;kV#@9{#_0hi$-=GP}Q-Q%J{+y4O@?k#v&JGRl(uXx&%U1Gs_} z;DiW);ka9F&`!xy!K-9VV)MS3Z)0tV!1PD zjNQC&Ix-;%`oV>*fxd0nVL9ehX?#Ve-m7-s=P?&m2uEA&1X|Wo&%m6Jc5^5&AxSmv znSD_eX&_A$L}0a<&lCN+%9y*!1N(5fOmO__n=*fk+|9N?mqoSsfGDgpdPqW*^ha|w zaOUbg_BJu+tX908Yi1y*6yEG9P|U>r3bdl}q>lv;$0~BI!qnOL$Hj=efFU8Q2sc42 zpMJFX3O^2m+CrpR$sz}2)nc%|3(7&u2hPG1d(j8g8=)wIoIk&}f$B@hv%#`BAEK5bnQpfJO;2s3Z0h}S|x5mr8Yhj8QpJ>dR^YW{%x20ZVNp7 z5888W?8NkVsFS*f1nVa2BmFHWb1}Y`Vmc!1;%%mL|6RB+AwjK11YR2cYZ(mT>%>=(^kW1_uy@))o&{dxYZDPHHHh~ zs>IzDsHkx7dQ0-VHjlHrF`b_@d3Q1265L*n{9LPQ#V$P z4EZusR!nb&Q13`WwtT)y6JS(U&jB<=(ntDV6|&lBWIn&e@v`ap%EWLqSwT(TsL0P@ zP0qrnQvE%Nx_AXlcp!G)^Rm$GO!i$;2#0t5=+lOc>vt7B9NX7ZMLt!(vrQK8`B&4K zdnH+1-x1`X-fh`FX%y57a#s#5CM0yNE(rMT(a{j{Nuw}FJAy<--vE$0FEnCpRmUze z(?+hb)az9;Jsm%Dxh(wHLV&)y~b_uo`=ql7NOg?Jd*W<Y(N}yfcZ7E3R`xfFD~3PvDG30M z%>NEkwsbA{4ako1CsV1Ju!qmGJ`?nG3l9C^&k?=ejrW|b#73coxxi@Ykh?kEdDey(SCKvn#n%E9AI)GwujAf^XSkvEx?G@4Fft~i< zzA%|q5IzA}dek8<=UDwMi>jc(jP4D^FXyY4m1NvTU5E316Dj#umvi+OyZ-mVlDxI)gXO*$Qb`t# zPx7a)ji3NBdK%HH8vijJkBJ*e2W%SNM08!hnXr_Qc%jYnPQVTOl;0)v4tZk^S|`Am zR5#T=9`ct8&Ih0N`Nns`9pa{<+yQRjsK|r{1Zz!u8M~If{$SZY&Pp7D*QD$Y2q?jO zFJyK3V--oy5!)GC)cW`dv)e`ZC)C@ba=}=N!l8S*qq3$H*1%x2i~@cTO@6?Mg}zOi z#4lah9rAuIy=hk#(hNGrYGvuF_OoevN>81G?=+8JBd!b14|$CCDas)Fv)(xW_pM_U zkXJ@o39Y`%IDti(d))&!CW?q#IbnK7si9)Y+w3S#HD%0hU4r;w!l;Uq`h)_!-=90W z)yeVkdbc7=9vRYZSrTBm1hcgY3d{qm5Aur&QVtnl_1mT=5AO|}Zw>s+mGW91!lxIE z?8`Q6$pb$@jJj*2`h2Zf1#7qxAGCA_9X?-kdw1*TbmRt{Awie`8$81#5L>e{w`zsE zY-X-f-^aJ1GhV(BVRMzxAz^WjXG-Z`X(j&rU(bgxv6!Cns0dNpOu@1<0(WD znlPbW9hlP#QY@L|LK>#+VUUt5JXF;7-z;lx^$*V>i7{`M`1N3qlY;LR5Av0DdS&U12@y5eo*kA@xkrVZ9BQ zdorCg3FK8H6X_BGVq9gQsYrAb-do#m!CH`k_u=l$N6O~_Sp6{Xpy%UIN>JH=X9;5cM ze%Iz&t+#jU8O=|Wo&!iPu(+Zatu}LXO?;RDo|zktwUQMtc9jtsqK}v`&wMR1k4zn; z5+`Nq_Xj5tJ|JtK4I)k2w6u5{JPfl&_3X91W9jj<7^Q_~sE;8BJz$cls17=p8RgS- zw*F$tzFA(Do6wUrENMTyoAEM(+s(pCnm=hIza@EjP*HV38pf>cyF-{i-t6T&dh#gO zTU(k`jAtL=Pq1NwGU%sr^1qo5xd)|^PV!G{u~S|J$8xhi`hLoQwB~AhV!KRjf8Uf} zEFc1D_^kK<_ewP;1!&<&xZ?&}iY0q^{tVEZRe5&l*C~gVhf1X1pj_aPzg6eB=Dgll z(JiIQ{B??O!qjE>pU1x*-if3UzUlf{lgET{By!yxjeVn9K8 zHX_rm;A89mBaXB_80G_r2r_}L{Y~>w6&@v584i^sAhhR8d zftpg_Mi`bDA%2pN>r6Fd!UlQ?%CeeS1950@3GfB}(VRxUub|GL?@y?eJHO{#Mq(f4 zU8LB$zoI;)gnT{^E4lOxs*|iVU3|hGFrUD%#9|#gKzV&EsrVwUBk$_!{A!uqAoOnO z_*%dxR7N44Br18*-0Pt|0Q*2B=X3*UNAvNWG)_cEo+(ct#i-#O0;WL0?C`u!zj7RaO1Q{5oRU$~Rzw1LFe?hzCX9{W;P z1Ufi!s6Ea6LW-P&cRmq?_v%7+DDhGLO)5gKC#d{SX7>p4dqXHT((w71IN()KKs>;VB+BU%egI60r$Cv^B zg!sT|RQz+fK{6?x+BJ^Oc^2zPI}e;O@@=qho6yp(tKUb1(35=E;AJ*nRRt8$1V~ zHfrXwaR;1uguF%jarMj!kzLOrw0qmjI{J|H1e+MxI8;AUIYlp8$TK`MzgF=>6I1Z4 za526U#|?G4Nk;$q=~}vOL}C=rQMPJ2V3XvMWgC5}UzN|=jizsrko3O$tHqXi=kNQz zF%_o9nEx5)PmlyA#oh5#F8Z{O;8U#@^H<5TLB}PHWw^DZA>wUfvLozl`vav;q&-h zhhw8Bbya>Ls}3Y!YRnw`OUmY^5oR+6nrtV(U#V`)q(XKiq8{pHYslI+{r9;YJ}NZf z2UI$6<@g^LtxX;n1K_e}jPJ6M5`3xn7H>#ssfQO42;oealXVitw)Ghc(=Xcv26Nv0 zq0zcw`XYmVYC-N_ZELXsy56>^mc98og!L_OgUJb#8;rKFb zv&?0(W0R~up2UFGYxOLD9BO4pwFo<{^}3T2YYPgVj#qO0dpy|YER>um{8MxTe0zGo z*#=L?85X`~P7-~JP0DutP-1_byE5&^mhKn|wv;lcu>zq{?;-AcED zF5!Sqg1rq-CjLU9l6BQ2w|2;=7tWi5qaVE~8v#k$=3cg$$CGnbn(mSHcn9dG5dkuB zq#5SJhCgP_+botS1-MV11>Y;E#%xu%)jV}i2hX6O$pmU-+lwN8w7)|?)B0;E-N@>F z*QX}~ph`jmP6daqdE}FFOZS4=uO>_of4sl+kcQ!XeT^sGv65&>RoN?XBhym|t1?0s zLBxED8HN8I6$TNaZ#tQ{-~$xriby$svAww+F2@J2H-NF2m&~%o^!S0s9A3I|owTay z3R|h54$PnGi8svuE@F#9tk~cJw=~LKGxP+G_-sm4l7O>`@3CxrCl0D5TM7d8ki4UD z`mRX*Wb+GDmR?a<@bC_`e+q#MuFM12mcgrma2uxb3}|96qM88qDDKw zIrMZ?lVo5)Mv}$6UOw_4T5{Ic58|mv9laa){Wg5EOeWX}@j7=xg1s9@rKHFJ-k%C` zW4-IQOauN}a=Gs)UXWPWeLxC5WPUSOaeQ6C8oefx#JRh7=cCl-IFVbi0=4#8R)n-K z7+qYpZ=L>1{7HOtCU!Aefxtd&Db)pp)8f!-mHOdE4Pa~vCk~hgme^k^yjo7=rwG(f)D4k;${kFYdH>)W35z%WZ(jJday5twNG{}XXKS^QK>`c3@&PNjAC-%5?= zQ4DNl@Knc(wYjm_S{NS6V|$vjct;$#W|mx$M8mU~%QqFksE{ zee1W6iPq3e%5LCi)&bdPfXclc5A#6hhcLPXUJKSSL9q;Fzp~^=J&B?D2PK^K|30Nu z60pqOZ0j+i4xzeY`dkVtfg?sNo@CakH{r-2e$dPC(=To)tS&sKe-dW_?fZuOP+WTG zah@epCb=*@>Z8G6_>l(1R zrxlW~va-mIQggKFP*`DGeNu|;r)?r1+y=m)_BJ_E-@I(~*rkv79jt?@vkdsjluw*5 zbFs%FcKn^|)=Yr*GA{&f?qgpsPSJh$YL{xwHzYJoH-#D5F!!UQd(a4TzYWg33$+uJ z)Xkn60U)|-&knZ;yZsD9^GsjA;mrP`{`^F0*v0F(bHE%)*)#UOZF_3+;CDD*9m2V> zFI#qb6ZZO!tA~RQhpj({+G)RDUz&%xZ`IkOw8ah0c}ksZ@&WurHV@Px;`GntR^9xY z&4%LQ*xfkaim=icvf>nyDTN&-b8{)KwIC{^GR~~~O{v<}IFAs=GQhe|G%`Ok&nAYj z<09#EzxQej!L)FvWOgCmn9pPs1vRo1t7C=QsE&{K&4^^MW)r9mf1y zq0<4KST^jNl$5pbfco?}Luvobxx)`tgS`W-zQPK>%Cg;}m6WIvMiZdY<>vr*@E^wo zW@wcENZ~p|cT*vG<8;wulYy<=lp_ykCffb|dd8J{l12Awq*1q&lINb#mz>LpD~OmC zZwC49%h<=Mhn{)>#Kc%o{TwHVHVpp9<5@5h_q=@H7+&0WMzzjF#fR;IUm`GLy5nUn z8npcYntOkbUdsB(+u*A*T{ywY}y*crS%j9O1%h16%*Au#1TVT#a`RCHrfn)Z!oB zjiGNcZ5Q)D%7`3kK7V_sp_4natN*t+**uc`mWQRwzoUfEX&{|zpgb@OP^f5N>wWV2 zO@C3V&cJK@c2n!fn+&RNS9RQWR^edUPvx9{6yIY|9^y@ebt(wcbJG~Y76!2oF*P}= zQJj(r^IV)>Zf_~D;30I0 zaP#}Nd@NW~J9g9^(zrEqluC$03aOXDb8&u4h+-C|V2z|7)x76VC0+5T# zFuC}f*LX)7qeYZ{00B@;%AsvUp?pr@n>eZ@kRP|Iks-^*V|;FCz@ZO*h?4v{Q3iXT zwuw#f4g%g^(`Y=mOwQitkeGe!8x@K3KF)=h&dTVVu!Y-POMZNmQ!lK1@j0hB;R3}H zH~ZPumU6TYAdgZ?JkzzbxN$RsU-x6T_;o}oK~<9V+}|nPc#!J$lxK>$J(-o_ui$`R zcorXrmzj<&EU^#&3j<5I+K5|S&IoG9g~JJ4u*?b;lx&`Nr=PVIJZx5>px@kwarBLZ zl{{7R?buNogP!U73LPz>COW(&T=KJl?Wb-NzRUXz#g9j`Oyhc%-w2+g&WZ$*2p z5ko6FbLjn?;ez8SM+o`DgpcLDrabAJo<0-FM-$I3MQ%QSON4g|$Pq^iSi}#fR#SSL zMz8GPd-{52OVT{OPE=4UoxMRoS& z5H9c-S2y?w8ighI`Bd1cFsvESq{rtv?t)Do_H0m}`8v$8H+sF7554v9g1DWF>$COF0%eK#3UPD7n*`!Jpj;+^E{Pz7`wrvaI%fQo~&$doT4}whB>og*YZ0^J&n6sUyrxI0j&w|52oxKLKYSO zPEWRqY2%c4PdLqVI=?HOP=$9lS}42PopZT-ygRcMHD`=VHqO%8)iWQ(g}N+Mk#fi% zj-I^XOZubD%~ep7C`)0rr@{D1*`CpgNQ?(Fz;NAZMG*v3@y;6%AF<73`=(+y!~VUv z=>Kc&%Dc0D`zWcs= zdDW4}FWvV)@6s`mc0uEqNAR_eTQlCj8)GDkUafBp_ha4vVOsXfNr7#|MMish`T6C} zeC@L$)3c2?htzM~)c^aAE=wbnCM(#Z%&DTO%c;9@fCc;*$c{#z+400mvip+h<(ggR zpJau41fDc0Q!pHdEm}T$m@h%YE8&+KXRV~apE8khaXfSuQMF?!f%^VQDl2`&>g8|e zdqciQnG(u|=3rTwqBC!Y%aI{!Z}l93Y1=`4$jsU7u(Oo9D69&`!t}#;{}%J+&1IXA z2m5#SM^rXt&a0({+-Lm=K44QS#YeUz-5rikj!p#CcOpwJjPsA**xU1C|2O9d6|U;$ zpA3iPV&&X2W;bwFRmU$@!Wb=n5EP>>js^^_7jO%mTZg4Wv)*AOzm|MlQ473^C<24htCRpkv{k7Y9DD^(XZw;gbpjTEou7C@d9#|O*eR&?`F+3pJy0+ zi0+LrGPp4V(p=R>*&}6X8ui1Dm@vnntG>|@`MhRczVzQE1UWWC?IUlk*sB(ot8>oU z>H2NEo=F3kZ38|Yw%Ov-_@A;b6f!?2{mdm84UhA^m}wQt;@>dIRAsLA3r|zrWbPhk zqup#UP=<)7P!CgG449+tr*T9fRT!qL*o9s3&>m3tx9#NIVH8_eO)Fb3JaK=9R`a~2 z9%)I6P&>V)nex40n2Nos1rhV-GyDjW4=;1?pUg1u4e*EsJJtw=pY*KdcO&^LQ*y_; zLdji~QO)qoG2y0rCbo5tQl|{R4*u9Nw^nB>)hfXFpwcU(qUb>6_vi`nro-yDemIR1t1@wO=u%W+RmE`G;2W+wV%k z9#M=VBN|+Ck6CQfP%m7fNBl0H6lqqET^ANA#sCe+7kNnT|KaGVU*ehBnHS>^p5L*=6@TW%_GB$ zAjl%TfU5V6Bd_ky!!0vFAZB3##W9yq;n^-W)dwId2jxTxJiErGt^kbv3;)GaeKr+z z3x%Kb3hPe&vJA*r07~$gDpc*@bYC@g9FrHZsfJeA>1qG&t10NubQDPL>5U!iB*RsJ z$JLAr_*_^Bz~;)JdSgRss}&CwI&RJF2WE z3lG8XOAvV>$_i-y7A)Z0wKzXzPqfV z99F3<>#I`UzL9=2JZ7){o3YgfsQ3YT-3hGOwHP)2*=9OuhB`D|rFVt~y5Wvc+TyHp zz-To>vOA*_jO?{_!^hmxlFVjOVU_QhibTvjr-{y-+BJg|Tkj!$x;DczwihrUrB}hF zG06d(h*Hg=}V;ZQNnlh}+cH>(s9%uU>M8I}9h?QPVz;NG3+=M!x*p00B`7E!~T`4Yf6?G9C;8_44sa!hV zXD7Fem`l7M?nM^^Un#9qxLm6-)Tk~CdDmtpx8W>wfuUdgdGxpwxnMlwG++rWzmY~> z8Sk-VlxSHpPT3J|i2ZOP8l-ecXE=51y8U`0Mw;-2vML9q-OQqK^*VekR4hZ(bDKQa zUn!A4DX@Hn4NZn z54sF1EIwN`2ts*kB(vTT*CKxsb2LZM3ds!T=MjWEa1xfh3RtJ+JvXb)y?PzDS>Ajo z7L)gI_BER-%ssTGy8bEa<>nZiS%lxZF)1&1fFg({8uxTI(*ur7TvblHg`93rXwL@L z>G_v+QeeD7zR3K>suDIK5jFVlM#LCE$&#l`QIi}XmU?L9gq z;sPz--M9v~24YWN3my-GJP{^64eg^sgv=fC!;@EcwWE_~Hu1IKby_E985OnoyY6<1 z7cg4Czl@gRg-186@0+w4%ZtLzj4xLk+pAOcltrSn;>4RpiMHyj_u zm~)lKred_j+rdQ2n+Ii=#?y65LXqMsFfKKgZ&`qO1>Ct2Hu54^EZP!IQyl;)dK#cc z_tMUXcQ75oH~} zTDrwxJswg~7zfR<>%OG3h;J{81CP|AK@))}P?qsw36#G(Y+YCq?L4i`A0WdHv6_{w zWs?05qf7)qBqpwD^wJ-qreHbv6RAx{@qNs(#lR*LaH2-w_zZi{g6p=bALvrdPEIt~ zkPmKb6i;4-Nbb}}^IFaH(3>kM;AC4upg{?Cu{YVuJtd&PLmS h%#FSy|EE8ds>B1o4KH$Q_Cnwn9C-X-%YnG_{{c&lY#aap diff --git a/doc/build/_images/output_4_1.png b/doc/build/_images/output_4_1.png index bcd3b84831b7d8e01f6a49b7e8cdc2854488758d..435f158917a48640b3b4d924a2fa19f5527d2bd5 100644 GIT binary patch literal 67543 zcmbTdhgVb07cPtlh$v!1r3fM*5JWKa4k{&~mxK-~&Col9E-1XBbV4WeE+9zninN59 z5F#}y1PDkAU}zzi-~HD82fnk;tTQub)~qRe_B?y9XMZr%*J5SiWTB&@V+CoyFs7rs z5O$tyn3>LNwsBp~=N|^&XCPDN^Cy(q;lK0pWiM?DUphLrSN}^FDpbp1baW5sKrhry zgL40Ng`~Ng*{q(}INU9{CXWcx_gH`MzAULY>EnX1)N5Ip-Ke`4+)YCZ;#pKILs{*v z_I6hkmb!Zv6bZ9FKl#&j=+RklQT?8Tg5Pt|tJmv-FR&*4CzNu__o2K{$wSDOEne4% zuc{jz5x$VTl7u%#Jx^W!cHy%V3AuZelQSOIS_>NjMWN*R|9uTu+wnp`_t)|5qW_=Sne+arMYS6VI>DVKTmlP6!^D-OYow%WFuS$aATx0Aa{|TrU-7q# z7mqpVXn2(wU2Y8DeGH!s-Em7wc$g}uf_6bf-_9;1TBc&@2YrO^FsyPU>bWkLQy2zovv2 z{OWUWJgh>QrMdq-2$8OHlZ5}Kd`{gk8oe~P(mpE1@Y7>yRe);vts4DkVWxHL>|fEP z87)_36%|@1Gl6QAauyy=Re2Lj{Mo#{`Ahtya((w~8ypPWYU{ERpsHeQ4gV94rp@)~U%};U`2+NDH2#YS+UOzc= zN;{GQ^%Pt{sPK^j1;XqI6khi)vIZpUC#3NBhoT|8f4ebLQmN$@yNc-AqIm$Sh0YU# zky$t4SQI1W6o--v;M8g9MYO9$VrV1ET)tYRyn=Do&AIARr8F%=`*^-+w4=`s((|WA z`fd$;v4#z1IOh^?qm^x|$nHp9Oo%xO_FC%xb8LG-`2%^~dw0>c(vp_@v5PE;Q<>9$ zeyA!Kc6lowv2W()Kro(ORm9o}kOWf}_dIUi>cx5dNMf>;>>okcm zWl=(WuO6-_p1#ijGMJQTx0|9{w|mzeZi8tr83ebtl-MQj`+yAQxT+Dxn~17*F^LBS z_uiQWR4xUZ{Hj;>^c0^W+m0Hb?YH7w*?GlWMq!MGa8Lg+p>KdyoUgW5=AUTafj2*T ztdLIhwR50;2b<4~}rJjvAV+8LmuKJPsIwqwbaO(Nnv(^M?rMQ?kK~rtmx=)$E}O zLZrcy?ugCK5m}Ie7)exs8i4nAP3hLan4DLmJ4Yl1x>`2cwf=?C5^6Viiukl>JKfs^ zW%0ePl<=O7cIShz2&`1OXiCB;?JBp4W&z_Elqr1%X=nFQL5!`MJ@~{HoobG2xMU1} zjfic%`yRp6KR}EYU@|w)Pq|U)!jgMV!IXRz^rso z^(VEm+*7#6m_27%9Pdr_VOw`c?V}EMY11C(s=QANxhYiymXYfAqb^PZB44VpR>`hX zJMGTT@ju9eFo0M_f*P96fCOyqZ-k7h53xqK{@(7Z)uO9jaV>|1_f9BO>m7KWJtw@XAc86dl4>$cj(4aem z?H+-UEB1fdpHXp#NERKwf(-M^VP#&YIgZVZj}N~NNQZmEHEYqwQg0q(=_ePIkf;qA z11rWv?s4dpbg!f0oF&hyzL5%iDe!FTn=HNy2o#GprE}+lVwHL_$+Pc!T%;|KJ zUTwX)V64WjrvdLafD09P-X)lb1L<|cP|Uq}$}>N(Wx}xSEV{ntc0`=YJ^vQeU$zDJ ziS71UY*HEAl|b3fvQsHkSJcDT^-D?+3X;((;Kj_TGx8gt%y8nJgBDd4Nudk{q~ zqk~JPT&a6-nR?lFA*bcil-iX2x_=)s!X5=Pp5;;49RY$v3b^O_#Tq#^6CU6S(ciGQ zIfzd7l@^S6=RW~lqt#YtyGOz6xJc4HfL^o4`#NK#nly`#<)*FBv5W_8Ro=Jx#5&jS zv(A8m3ruXg2G#01iPZ87nc$;|HK@N8tQb(UB<~*2kG)beWiVE}9R}YS?Oq@NP|g;d zIhCgYqWx)=y8VgTlqh)?hQ_Y%-EuwBFb z+Lf=2PN`0i*>s?gQQ)+@*fNWmp~f1%F+1g7rjw#N4SGIB@1t?Q66z6x6%!YJPIZa5 zw0|8TV~&e%vzYW?_a`b-Y!I%cePsjLVWt~7u7slW=wwZCdt^=14T0(AhGc1Gwz-I z$E2s{0`(u|xVxu&qdiCJZ|e~jek9EbKeWre8c-MkKF@C2$LFW zH&oc*)Ik@uofZS%!xx}@ep1Q699LFi`mEZ6`1hZ0j)3JT&u(*;NmT)B2+$v3Lo1$_ zIGX8`cKUJLA4M!T?6%x?$A_%#mX%;xd-p_zuJ8L!3jr(rVPWD-#o6|F|3*Vxj*H|r zgbm``Rb5djy((6mO3p8b z&f1N|x>x9xL>-0F-l0~QQEjaaLAM@um)PHhcG2K*pVy~K3Hjr&Wb@$%s-aN)kaU^pQ%VW z9X}Zqo9EZNK=lyeRR~A;w$uE&*?jUVe_x(yN;zYSu-l*yBhb>ABE#F5>OvuyTVJ&7 zIBnfSYf8)tYsz2P5gw4jIRE6~!N=Pv-AhVGc_yW;3>vT*xzAFypuX?ic{B?N<8LN> ztU=W&34>iC-GNecXWp!nXwI#p#NKc9N3&)74>VOu_P_re%MP!gNt1q*rSs0;3<4DU z>b7hud98&^39)~o-b|9g(IzggEV<(fDImv1L)zb4oC%_@<`@JRX}*i%Gp01uEzXso zmbARN+?JDHsq1$8bgUdhfM;phYF@)-$APMb_H8@m`I3j?#Dfz3{jPMoscO2M7&i?} zjNfkAK!eoBWBF?>{-I}P93sJEmmTJ%oh`9HGd%_=+!-SNi0xrv)M(s>3EO*L{Jck6 zWj*SpL{ZK17a;h=V3qMWj6kT~KKU5eLsLZAU@6pcN?1h6_Q~L$`}`5LXZz$V_qJ-y_KD|tlWUtFd>Q~RZ6?3e>;XVr8eJmd?$5cX zboy6_b)6i+HhoRwe?9Sg$NAX(zDgGBIz!r)$C$6qy|sF=$ffKv`E^33_-n@#jQLv3 zZqHhnD$uRLeI+Z)@>LH;?CyOnd6N}Kl6%{>;=a3h@Q0YBE}|e0&fI8z(ZZiF<;wg3 zRQbbJ))T&v>_M1jH#iZ+wf#wB4ax8gUldZ_jSauF*X#W#>7L;#-ZNvL#GPaKsO9P$ z^T=RG>HcrR;p2UTuZ9H6_2AvOJMO-GFkGM{Dp)+`jU3n^1@17OWd~(J+r}}vM zjMDV?s_8YgV47q3*HPf4Ma8D+Hq>xE^P$WfzO5c|;gA_UKH7 z%s`HRTvAxrI27|mO7;(%jMakeS1ca!*T{>`5&-5(ZUJ^QMwE9oGi z!Bj*4kqYl#(3v^L?hO(f5k#OwbPkRQkxc0JOTA~GwKkXXvHs%rK%_2vs=QoE4PNmU zy)NKwR9YXE3~*G8BezuP!gmk4!>FUF49C3Y1M5^r0AUs}CyiEFt0p9x_m zf?Ot?<9M%a=Q!=V*`DdJp}(dsXQWHGc{hCv_r;c+=BpmlLNB+SepY9+$swl%BgPC{ zf)fni%H*qmh9yyJG>_t-rSYklO514P!QGOp40Va!;B6|e**f3CoU}}W3Hi%IlKL^? zj3YRhV$7OgNxTQ0jAC8)Pg#6O8gC*L&_s3&OfBhu`}J~&ZIA0a+W(g?PrMopQtUVt zgy6&6%ie$SgzYNvp=*Co+)qoLVc-j8<)gz1VZv6iAJ%Bvym3uJEwc7Ki*u^y_ zq=uOfu^_^?w`vd^x%?r*tp%51TCRT2=1Vue-DNyKSA6UumKAp>!j+Y+Gc$CX5&L@1 zTaObh5jZhgR4cMt5~pCjJzXJNN+=T}O&z2x);V(I&~M)-)s*iiZP{49@DhVRWNkm* zZ#hjL@J)8jitKqvYON*Zm-B5ZvEL_zwM*25V}@^Kg4IN~#?!TmD#qV?y#0FOVPhZE zk`rr-8+U&NSFJ10upz4Kbx0v&(+AzYWYQy`C;O(Aes0y^_`iay78*Cjz}*Q0{#z{B zEC!}P9^n^bxWl#Pvf5JrR(s&QqGDq#tA#4 zTvvEbap#vlTjjCo zsnb>+z&U%M|mzhi!y$)o`Hzt@%zKtm$ zp6%I&*9E!4!&Z{VA3^`{9MxhNhqVqydI?sr4zR86uvt3MKX~g=$V8{@utH> zb}3My;>6(6Pi*-?iL8-`I+1mY{Wj@a$%H-*#3pn!a>@L0pi1N2;*3tnlra)8*mfUp zMY_IX7MSBp&W3$iehYq1SKGP3E~e_MeP&Y@cO6Sd%p49Rb~%R6Z#pbg`WZzTlgEzR z5;&-)HyD($08hL7`_n0&8M5NG)qvwKf6WrEtaithqznp-nbgX%rb{7Hq0oZk(KWZ0 zP?b6xx!#OxkJp6gO!1|blNg=3D-b^KQf5FcQIal78^DP+ooWwPS@dJ97#0#){gT~d z%Go?aU%4FUve}Tod5C1{x3y+>Po{yHFmp8+JL53!AN9Ymi|cXetKZ!JzTmoSEcSec z{yXYqbj^_w58&@LFeY}b`X}Ij+`i1Jj&% z(Y!zz7g>%w^d6{7edFs3ZZ?DSWA6RON?&a$!vx`C|IhO--b%CRc+3^I_*(Ok2@hmb^G1_15E~Tm)pkXlal1GN04xr3G=%S0r7#5Bqu?2Uwsbtw!1Q<6R z*L<=~VbwFf@>n^2zgg74U$(1y{V-UQDfFun+RQehDc+xDtrRv>!##*9*u=>@aB1x> zP|9+#)Y6McY{md|&Xl-*>j&UMKFi&<$Pw4FFVI3jU3pZK4|&+WEY0}MSGVA0*jkCB zhV~9*=`8KiST}R41u{7{zR~xyqGe~YYxqq=rIish^yqB4htn#C1XBvQa-t`1i#)Nb zQ77Zq>&T%CcI^Hom)!VMZEL0U-H(D%z*W`6zlLcw>s$SAvmSC;sIa{;a=bn6Y+J3} z?Efi1C&Kp$IpkkggrAx+)uq7_{F8+i5R#d~qxyVhfqaT64^#OKjE`>Y99MvsKP<;< zS9Rv4PkhxEUH-StBCKqX)%>7`$2kg$+&9;d^yq0~4FItG9BqZreKXa=g%kbc0H2Q^ z7-?cZROY5xpSXDVT&-a)fT)}}Fmx=mu7;`MSa(Y8v?e7+ahmeAR(K+>Kuz)0>*Rzbw zn||cXhX%+{ZkWKA>;K)TXGBSR98*OlwaJUp2h z4O%WWl@Y#OmhBUm#N61D+>G_J_n;r#h7-=2&fqU!efHwjVTFcpm%_O}B5y@ru>W#K z2Gs~>n7&=8ilIqpqT0xL1N6=YiG~& zM#`sWm57$A&Q3i%m}F^d^RP|zCnf5;>`tV`yh4S{a;&Skm@HwRi1I%(SZHW`q`Y5} zPOBp)q^l=ZmSx3U9M^YwY;rFDNh2$#?KOag%E%F*V|YukhbYU#8`hFlI(ZM_xtHCt z?$ju~R1sb3GcraO>u39f2gP@ExCL3cLwv@7aPj*Ex~ZG0_g_xr7qzJ&}4{2hk;JHB?y`3a8hdZq448~q^v zy4^hKMZ}c>6AftygO@24?~nN)jdOVK8!|r@_=38j$m;t-T;XITpug=|-r5umufNo0 z66%>3@B4x(swk$`1J;}9m9Xn73m;WV9g@Wwn{R(itnT^gfBCA(Km3iaMfq zP{wlmlXd0Us|*)85gGo6s29mG9d6I5iAcjRZmGfCIfz*)THmF3HQK4gpnx-fq^&i= z_zJ(-1)i>#D6~;LtKPxqxc0P3=(&BQ04%XM1=)8ki+l~N{b$msVGY5P5=)od^hH4{2)pJMq|d{@j~cvWWv{n|6W+KpOFR|3WI z)Hi8ajB%{7X6qzmVampG(Ta&Bfduter5cgSOoUT=&*dh?54S!xpn?kFED+6MVDFN%ML&e=#3vjWULebf%&`JX5QOVPB)3mu( z@G%cpwnf^mGa}e>@(+zk;L*=s1C64rr`Nm9j!~a`-|z0Tt%>B=mF=pE)+uSmHqUV~ zv;_aLRdy>B@_0-55Nz_op!Q}%mC9g}_+U_=j;MIpNY(omWM5^#(VwiZwpD1gU#Ct2&(b zbx1zEN8y^nhb3Q*konr2@vnf34nC-HCLmq`-<$7>$#B=MQ?7Zx^rLO~h)iK8=@_i9 z;CXTE3n5JsNon@v@#d|%GjVY<%FOvzdRe+=HHvlp{oU7-*ItcW{gpf5$zieuZA{wa z5~McA&_Mn{sFf$C?_ak`IOEO+`@SBg4HS^>(?2%2pv#67x(F2#GKO1Z@SGpfKH|FG z!pNjm7LfC&>)KBR9|cwhxc>M@p{TM;ORLvNj70PIKG3+zr=|m6j|TzE*wZX=E`Jvnr)ShFb|@a5OWJp!jM5b&DANTQdHHd+#c7bR#{c0!!(1f@Jd#`c=o+ z$Gty38`~{C%R|_PfUhi|8->Qpl(7t;>pf$* z%v=@g*!6+LZ(nhqeH-@<7U;JuPW3%2$d;bCKkA;r17!>bW8OF?q_PRoW!NAbcwbU9 z{8oj$$I2w-=7+{lEhk7nPblc8K1j=IfO7w?!J z{{1Q#lJM78zbrs;^UYC&{}9rZVoT zu7#{`Jfi-UP0Vzst;nb;4U|Qn6rjqby0KgvZK`=iVxuk8^=?13_-}v_@&GWN1Yg^~ zQ{7yZC(s6!dgO+W853zixh}V6at__rKz|sLudvn5Nr|_f`$Sijs%+(hp9M_;nde$% zH6UrCVp=mtb79V$URvm2&BsIXBS*aDt^>r@Zc(Fj&m^-1V@F+!7R$N+s~EEe_-@<= z7^bJc*Q$^_=%P=B=EYTHk}OUvt2euD&Xv=fvc0gR58c*K|>aw=s$Qcj^B<`*%^08mXw(6B~VXd61lC4}pm)}U4 zXBE}I0^5Iy4mle=VQ=#LpoY|xD9*?l@OhR54PCtg=g~1n4>`U2!ifh6O`Rsk`aK9l z)6Xj_6cl*A9&2EED#~ckI~=mFL`f-v!6}u8AcoQOl!+^81HGfWdc>%5hSVsX#RaV` za}a8%lySaByV`hb*}D$zIQ{BO_AOsLqDS(sn|#HeZI1*LqWhIy|_))K?6{~WC=j+COS8R8q9 zKpCW#J!DV+9S8_lnbRKRhyQNH2tzv(t|H|#bgwx6K;K=_h3#08)5qfA6~`216V6_g zecirDJY2NF+eMFa+_Tp6is*=aSz{Tu#G-+21;!9VZr@V1k@F>k_{$6eE-GCCVjteY zxF`~CGn?Ye@6;ST&{|Wp^CpN!nxQhl2sUnujPv=vM4BxHau%!?x;2}?X%GR3NSLDo zTm+)uJEyp&D499+9n2lh^~Y%nX8 zHg361NmadBoFkQsA!lZl<*d7wY4|zV%On1Ib1_i%cK1bN-Qz6D-Ty=4VE`Co=+(i! z_rmE*(kaS?077=?mxQ{_J7Sr#D*bf~qKr?w+QDsW{erw%EGRD}6ZYXi+?~qVgOtz| zV3-N~jaVN_x(36go0lY~-z}mb$WIzxX}21ihaxz2;qy9~`ISRe5p_aXldagWM~A7I zOo%&7Ch_NXi0HGI`+o??I_`_xf|G~D&YFRPPh%+*r7KlFNMK-(@w~}=>YedRRYwbY zNJ`>0;k8u2cHfWd;ef}tx6BGT8Ks|_7_;9Aq89x>E`UNg@HpFWOiRzd%_3#=Cr?9V_$dH z%)8Pn>^0>s>Eh%RDy}V{!W)poFVP3++mo>PZ&~EEa7^Sb&m8~GWs0Si-Mt+*2Q$um zb^Q1hJzvQ0Wgi)eb=!4Tp265A4&&!4cW(9cynaqCx2tuu@0&6Re&ySp-&T0G5q8W^ zD62UZ2>J}laI2ubM@Kuu+}s+*;XRgkp@g<4M`OE3*l`}G6d9cAq%Wc&$vx=WT{btu zq$=M!bX-cCsT4volapbaQxn)Z6nmp}(CS=S%9s ziK3;723q;>GJQ=kQB2-kJLRM2bBpfx0I_nuUyyE1%dl~dwAIt*G|$CBbjb?jt4Hrh+!BDr$qfu{w!f@+uM~&SE%EQO`9y zrL%Eq+r2a`GRj}EcCNb#OV`Wsekax8$jXfNpMG||$A(3;SA<6Jg!h3Ryz-9okwIxt zRN|ofn(K*dbr&PXS4Uaqdj8Z;IWU@3o$CveFdhv2?F$$ky2xGLJFh@`YM3#oU{iO) z#Is|Rv`~EU9MgRjP_{tNEoM@_#)j(lse^Ip;-a3MNf1`#WOIzK^UcnmS}S2$&p;Q@ zWPyJcc^4Xh-lJ6LAY0>A_AUjx@qLC>>@sjaitP2-`qIC=gO-m9HLI5^Uj*KEeAn>g z++Y3z9ZPC^eDpa;9=P2C1mo_R6UuFB-^{#pwAA+A&Sbg>*Yb{NIhvhFy7}knbQ&Ld z>|_IjbHy|{H_91K5D%}*u+A8f3Uh*Y^TT4hdqQdlCP^NR#b*ebwVBFh*KzgMLtIQx zoRgqUDB?K7Z@rr;1CouzLs0_?UmhuYK0nq2ZTIMR^t|GlVHj#37PiJYr z(}$#;v{8|&XBIGd*Ry$S%AQwQPLo`rq=}khzjTYeV?}55?e@>xUsWw>Cs=pW zMJ>Rq>E!gcqe|w6db;tA4+}p%IL-Q%O4-Yv^Wi0VJ5Rj~zmyoJTfJ*R47y+X#RC8s zG$O84@1_t~LfbUCZw)s%jVEuqxzcSaHvV_*Q1&CCM2z)P)KR1EUSIRLOP15~d^{5K z)7)V;(O#-xQ#&F&ue;~u#%6e{4Qi>X-Ln%EfeW*2GzcFqMt{~0L>f~rb`1nu$@75r zT-jU~gzBbxAbEd1F_(^G6OQgR^U8;HBzO2mrSf032_v3FyIHEEU<#CIVYX;l}mG-}c@LUT8!e zbzFUm^p}KasYu2X&t{yvnfo^pGj^Os?(uU=)OcE^Cu5y2|fHEKlLOZ^17O(<+t3nloS* z{&_A|d6(eb!bNR?8EA#ewetD6_K62g57QQAD}=F1E3)y-gD4dYGv`Yyqx8XC&uimF z-NjscL;uAvO?Nt#WRoSHx3R~oj~nTJ1ZYLN9|t<#7F}!z6=fScv&nDJGaU8bJ(!YY z#{+$8mWA^e%R_vhKPN*EtQOGrs!GmQv(&f83+3l)98#G6bVyRIYC?W43!JfI+r)Z4 z`Ct}##yqej!d2?$y%$xv5?%JwuBEKxkc6*feUaYzZ8281b|BzS^Votg@2qd_y&FFd z1rAfjr>{uK%ObQalodH*H_@98B`G(cqNQm}1=+r^tBo>9j$Mztgas{nt0*J(ljqqMP7F44=+oMX`xO*!Y{e+DX+{ zE^poZsc%keBl#JDX#E4kv!pg-77g^3Y_L#CeNo_$L?@9WWpFvi0=(DHbuqjiI*&u7upnDox2I%e}p0y~#e=AD6417~~*qJypd*u-`@%g+6 z+bAF0pWvRVnvmtI@scw4O}-h*5=|A1U{FH!23U_bjf(ZG;5u6ZUhJx@O5>xc2J(U; zl%o(7smOYBWz~t}pGm3zpBEa&W>e`(H-q5O-f*3I$gP()y1h(dYVylmeU(0;25hLouuzVcGn)PoxlRw zpMd?h6hxFat3sQ8aU7RMnG&l400l)~Op!9|UF_Z^Mh_i%7+vhnjB870L!YS=Xun1a!Gg>4}o2UBh92YBY zZ3j?!k>>-|*}M&M)DWS|x|p8cRRS(xrh_)>vhSo8Oc?`MAPA_BB1v7~UehP_;GgV4 zCn3Z(XDbk*2pidificxEi2oCt&$zRf&h+7EX_=ok8QLExZ5IM!%T%K5541Uv-liyR zXU+aruC*DPe5`V-vsu8VkeGIVHEFUq&cLMXsuhpKK?7qryo(t6wEZ*p+fRO>?y|iG zHn4+yrPOk8geB8U+1ZG3T4Yo>LMPQFF^Uq@GyCCpfAx2xW>sQaYRm0EsE)FUiR$0? zGHqW1q9_3Iv{Tc?UH$oTy!rc)#~GgA8g!$a%e1QgStmU3;2{@^!B>=8KT!fC9iO{g zh>mcMlNjt*)qFy)y071+FVA%It-g^{i+5&9VE3E;v^cz6aSqG722WIxqXO^gqr@XO z!5$rHZL{N~$@?dj#x^F&s_>anqb&Me)Y=x~DVur(TN=+x#GW+ohGYi;Km;GG@z z&`+IE*ZC?~MiOM^5-I^D>XjIejYH+VjhFbNv#J+FYB?U`OVP58a-d{l=Jx`!`R{Gj zx*Xe5Ls`2i;DTMdgXDlIJo0O6%R|`n_CtZ%uXbef1-tv}1b^ra^@2E$%tz+9FPbAa zstake_ecA>drc#=C=Y5I&Qy;f4!&lBM@Qsl{CbVDr7q4Sdoo7e#pVn31}{N z4*V6`k<(gM?Je%V@u#RRMDrZ+OA6?2I}~gY{$UiY_*@aU@-pD()Q-eWuFaJwquu5y zs<}9Il62H`bvsC9y!p=R>9)2)&6b&JSwAdhPB`C){v^$B6Xw5tQc)r)JQxnd?3!;S zbssmj=eO&9d_GhKui4vEU7!}U_nf`?B#C8UNYUWJ`>9rJ8K{)Ke=6{6j=7}#bH~6* z|GIsrE~8OfA6GZ&(~};%x_(k6E=zH4NkN})Gnd1`h4ceN9y}_J_R>@hS^e4+WS z#N~Hp+;P=b9`fUX>4|UVmzN)SK7$*dHP3(6woF9^8-H9vV6Pu5Znzi)nu?zc4<#F2 z3v|7VPc_h#-U=+c;(fL6f|BLYpkUaCfsdNxq9c_SDd@Dq`(i-q+!S!W^t!XK@ab54 z&HPi=pA&YCU{w|{YWc(I+%1Dr?;ePqn4_;ekN3PWc+4?)0`c^9&v4GF z(5f)p$qr`;wI9jYk>jDP79(cF;jY9!kqFYT&{N#n8UEZQ9YVC?oL;SnxupV{iJ=M6 zU+_J*MfHw{{J)v?i_a-4oL(&cDA=_U93L+sf<>fjr8V~cXmb?Zwi0j->zPW;U#nOd-qzBG zl6(LC6gsJmEN4Nmb|Pu>muyDW8Bbj~$Km%E;+4Zfdj4f@CYO%Pe}0wmQHtqAR}xZr z7n`=*Z03;|sCQ+%8|>V)9ECTJl|MiQA>&W1W0&)QzwEn3FZMN6$uPU=@X8nO22WOi z(G3#3gS@%VdMXEpzaAk$=OQ}U@mQGl9BMPwA-mXd)5)@lyGP#FUOETW6Y}7R} zKe~MO*`VrSRBj^bgxG1CtR-FhDJF#tHgBNGZn8J)V!#=#S*v`a7x|e7xMH5=R6Sr_ zGPMOPI$c)64nNrOJ}aNS8!mJxukl*`6^-GwCc9hyo~Hb*+ADagNmo%o>Ok_9x2c*L zj?AYJq+RQv3oIc1nwG8qTm?h@~4j4I_{5jv7vjyyNDNXHggG+S;GMUN3!BfeGNakhDEd z?DtN#&WK=OSKx&RB$G#EjIVW;wH>5-UcV(_#q)V?IXb|^aYVE(Ko5J)v@cnl5OrqA z*!X)g6TseN41H|B%s<#q$oki0G*aLCc{Piy9UZ7}xTvboTQENC2G6$;LX&IsDxq=| z1Sv}-`c1luJdw|UkSc_6eyo;K+dsu zAV_g9;$GNmGJ0@y=^ha?&6Xs6DP_9(0%{WAJ^z1szx1yg489LDCBND6QoQWKfJ}c3 zvfuIRnYzWfQLJGFX_rt>8|b$$4E5^9{{E%OMD9DoFgvabe`x3n-l|&{iU{e>oRyCa z=}z~57gE!-z^f2hFkZeu5}6Y%aZcxppJiL1dpH56dXZ(xn98h ziv!j=%8=;7UE_Rfm~F1)bxC=j3iA+-Q-E%7HqA(o4JL=#Kn=wpi`Aou_lQO!B3xo@ zskYp!023DuP}9E;&g&_@gYXBckc2D|UbNyML|!*dC{butkiY+vgQ#c5QpNF7;2zHB zI^d6`z!OtqN^IxWS@}wJQ_OOy52~udH{u+VcAJWGzE^yY{Bd#wtLp61bvHc#N|jDH z*fA82d|>IhEGM?jf8+{(F2LD!Tcz3HVk%vCyi5vZniI5SYKVaTwkkmcmbKc&qfgK? zJcB<}Fmh%$_|Q7`9NJ0A1HQc~qSrl%^`-Um5;c;<;qqJdJGGy3(>x>P{N~3rHI*= zR)~vBGD-pEVwl6MR$F=1DUozUI#!O`u8c-bd@+FpyE~yCy=^{LDXkL=2jZsxY<$O_ z4PK)OSI`du!urPd(?rGF5VG?FLX5!ob7_2E;t0zfM8*`eaHm#S!OQSwl$}}f^>0tQ zwm%`OLf58jJ#9VRFOItACWa1y>u8?`j5M1Tfa)#5UaR5NP1!7?qHNN5kz)G2LD{;l zEkxi}JA13+zWD`9@*sgEXoeK#S4Xj#s9gTHY>(O?W&#=06f)>^qX+*v?dB+f(BzK0 zMUNpQ-t=OnNBRzVP=~X9GG3X-fcOGg z%s?a~g-?pUXJ-a$_knm03qHoJ`+=)jIb)!=2fXXqjJuD_HGs7S{RZJ9{J!(Uyhr9@ zwR;vxA5Pi=i*k>2mo$*ow{M6jpY3bHf|T@4P^mjPFSFcR@BdR|H`+~gN5;$Sz4E{< zPEi2am9>!Vl}vz*r~KnuyIo_WkDhx!KI&V_Y#TEZO>F7m36 z?c4%J1Qs+i{uotel$35_;um9F7n)BHjdm)|8u*IvSZ;?h^%4O`)qX*7+fo%`owNVb z1^J#|h$R-kt1o@(_C&pZjg+zD8J=ip_@`9O*uu?oM-W|D}2_FhEiOdb1WcG5$29

    -&37ax`>z>hul?9!JIBdF-n+ugImf@x*f~Yfwr}*r zNwi|WVUSqt$C_9v=t$~%1m)eG-f>eMbkR6#U$N{#ePXVm*vrQ{Dl0E3m$-r*Xez9l z{NEHmEdHwU>ucYiU8-0zD67&mY*b;@zSzWd~${vk3|WIPiFOz1P^Am|=JcvSg^ zxqbg!VTEZ5oeJFNsp-5_^~~5VUwopkB)|1&P?`yN>#hg<22TmaU_Z~+aVp|JDJC{r znW00wCWaM*7N<_Hi7H!DIAUIDwcF;jY8re-6!QiJ?Vt0g;)QI?_OsGNO5MYLootmS z+I-iJVaaEM3@)|(8}C-5CLRSXGd$3gDml8>U2a0N#E+UjOWfD`X zqU?nPW!yKTebN7DpY=YtjaBa3D-$X^1@q@|MAVnTf$+qH*=}Nyjx>_Sp2lB#siXER zL%(A4^qjTWv(%2)GkYUfR)jbPjEt&h&@gy?}1ayF}5t`=pZ{<<0n za_r8E@6v<Y^I1RY8}j(iqauUj1Mif!fU~m1)@_@gguN5e zYG+H=^U6Z+`pTB%D;4if&dD2C%eMIIQe&T(Q8;)Je$jVa!4i7K&Wkd*2*>g*953$A z5M5zDxO??f>9q+pOu^r?Lu2V8q3S$Ja9VXf0;wO0b6>X&OJ$mQ2>|#fH=eKBc~@Os ze&zSGtoy)qP(d4!yyFnqQlI6}R6;tNHM+hQCMSjkCU4|-`p9PEX$vXHN1IC`IhQ7| zly^7M?!8t#Js(=1nSMB;u8BT3Pxv`cl`DKjm;K4g$7ei)_br(|fm=6sZu3>w+DaZKI*Dqx;HOvs|5=D5f=QM$u5cy?j6C9FO_}uXdxCZ!-l(J z%Pks@6%kuWWJ3I)T(bUmjl^GzmKH2nu0A~{6ARVh&6}ZvlF%0R+eWfgCTKda0LbK- zayj6i+=Ca94qNjS0AJytdav?a1tD7{nD&AU<;W1gA(xN-m2@^}`zj6T+sA{JTvsc`TDULg)F53Bhg;J)!S{J0M@W?{p8 z4n6bJShOzG89zE5^=e_ihOrXvtWSRVsOi~jz?}ZPPPnKc#r!A?{1Tg#OsG=1FnL<8 zCW+{0{?VgsmsM5x8c1CRG7NCXepsp;(0Yx`Ct^e;>qx^2Vh(hr-VR}V-vizObC)Wu z;bpbj46d9+DV4SWg!;;{*$;S8g6XwHeywq%GM4J0DBz!PVP26`zoDUv#nXP~ZyW$r zzjr-W!4i1`zEw0*+-s#Dg^0qjuZzWwM?cT68&Vz$E$F?GVJhA*#dL{fzQ!`>j;?4j z)JsgcPV+FtjK-A0!VsEYU~yS{LogRmlg9GmV%7n5&fO8*i{}t@sCws%je7w#8XLE- z@`fVY1~tNG$~Usi%5DYhWE^0s_x&{i&n(ER%~ZG8B_}F_Y)0kPn}hl@F77%`X=#;@ z$Ww7Zc;0rXIS+@l#Ooy}fq}e?m~*YxHZfAc3&nd#vpuS#ncg1znk~!)!X1BMt6U^y zBp9pM&#C_JuKbt*mG{m4Ec?+_Ow={0>lqq86nFFI<(sGaf)v%1G43z$QfI@>h&m;8 zz(d3&1@L7=3YAu#%aR&5a67S)Ib*>fn8q-aZdB2mNw)!)Uh}F89oqn)0JB3A%Ivs3 zjb3jH)l4U=l@7~}g-#dp2Ek9sCm#AI6)*XES$aI{WN7u42p&?BM6pOjh7)rq+KRYu znSMQwmDa~KNfZ{LhO4GQtx%5DA2&5S*n5Vbi?W7|{|`b-jR~6lR_z<^diVQ#*YuOS zQQDkIx>uSG4=7jnOd^dzRcV@~pCNHo#Q1v^mbQ1|ZGwlSlsXN5rQUgv%i|vPnDvh- zLptoC%9N98ce;^Y>EC}l_u4}~&tuHs|9SYjWH7VxearFb_4#y7RExh3Vklpmf zH!t+)W9JQ1`zwEq6OiZryvrA|_S&j;B`?7qpU7`}YzQBYJG(v3f3cM3BS&1o%JUPq zbNir2Q!UiuJtk`HMt8+VJ7J@JYv4S}Zqk3D=fg=|rrj!Gqi7`TJm##wcEf|zzGaQ~ zuRD*Ii4)#~+2E;`c>flE8%p4L)(7uTQC9V+-jPwpcV_&^wbJM$RC&6*buZHcvL_vZ zF5bP6etN6Z@}iA>D zGz4@p&+w*{0AeiBIP7w7Z;H~-WijNz&6^q~?_b1(RaZHikq6UpTD9fpDFe$m0O+QLzl4ko>q{fCBSAWfb%?<;Df!=^ii!I zSu(=Ns&7epZ??hT8lS(&HAO&Bvd{c~q{Q#Y?*{S5mz@82M6nEK-zI*;w7STsCcp&mh6HoPi& zidcaYmn+AjBIug7R zhfD!edk3P6>gE_Q=#B}6MUP#o{n!G3!K{w`V!9*&kyKDh{OrcNDQNu#IkYNiW>EG}={3%d z)F2-vMWrEty+*|rnC|#``sybB9ZVC~C3(VLtfpVwj}$s7>X4;`(^PA&UzdAtcLV%w zND&haf4|*--jY)rxpXxOYC4qmB^_1n9bSH~5WBS;Z9l6Wx@d|0n@X^yLOzWGX; zwxeStvCZn%;z4Y*W$lZXC}RNeKJ!vxzZR!1t7N_sYzoRZb!7|(tEn8-7YN4}`WnXA zqvp1RHmSikdg3#&tjIs+O4M46>l|AsB1v2d#Onu0W-sRB$NJnzG}b48r}aS>7pKr(k|3`HdlxqN>Nof{W*N#&gVBU zY*~vip(%>A6KPF>Re0Z*wZW=uU*M}W3VsK}gseXwqEq%xolb2MUGc&A8#C2c-)uk8 zb;$i)ImZ+SX?k~39u^dgg?LI})c}KTX@M7q+9&3k3W6l!Qm$>`^&hcX7AEj@>T}i0 z55;MSzzc-tlhu{nTyDUQ7xxOF&vY2R{ORP;%%elzLd{BdU0mjggcUk>8E)thm)tTm zpU3TMb)IG`&6FTZ#$BH@z5Y1)w7<7-bB;O(hD_H2@cCU%aqs=S2otWGY;uajMM^W# zO}3wYLX&Lsw`I+29vfcFb zXD6zbHsi;p6!PuMI?s#ZsF7cIQ&nANj8j+3js-n`&0ZEnLsSzy7-D^K>Zgfy-g_^5Oy<8eqafnU3R*$~S)2@}oHSUC;cL9IL zB5C*I{6dhr(PQTgv3}i9`6nyzx!)}_!{0ejiX8po``AAK$&!4bPrL|#YEk)LMn^65p?Aa)h_{&a?i zG@W<>*4(`M>B*D8{y5VMdd)ieiuicb2K}GS7|3#WHf*t$cjY;-8tZxdJ^Zu{l>%=~qr2?-hx1};&skDF$?ljw| z)u&W3ZkT(kno)iSUX;4Y5-M=G?NT zyvx9#r6-rBQ}dSquNr2bPcyE&4JX_PeP1=fbBvDxdIjrM#cLgCc)ly+gFSwBGJmIP z0q?CNNU9t%-4K76Pq1zV%mShv2lm->>MK6Q~tmgjC8bkJE&76_)+gQ=G9UFZt!iS3Zi zTv9y0Dq%Dt5SX!sr4!&?N^Q^`{x&PFUgD9({D4y=-KWAEH;WAJF0ti=Gt4ZovZOEl zTIeflZl(E+zlQ(IaWq(>Z&k1s@7enrKr8(K3KZwK>RI|{D`36EYzSbvt#ncZHyl~j zF$j5rQ!l-gnca+d;5vWdZwGIc|7%_PXIFNoODwOP*$h5U?Q^)vIW~ywb8ll-CIO?9cBurD?k|H-dc(s9Z-_L zj|Z=hoD;Qctkf}DcyAGsYgc-t_pEREM|E1~vjU5{UUA&hZ7u9%6f{O?CD|?89qL;}@HM{&w0f@%Y8LWR{0qBz1;p z2XlFlpGoXC_2ZvoK*_8rh*CXuq#|13%{C8|JExA z^gq2_TlVly%9Y9c?hevEq4P>@87%pv8I7EDKGT7S zD^S3n+$H=2 zK^KHQLxyIkHDVft6)1L6&m6Nz2}Q2Q7CSOxV0!rfuw3e=kzihmU*HSj^~76APr*^| zB1I^FWBwVztWsU7E?1teLQ6mMq@-@!W%BeI^E|10gIWF(^mtMvU-OxETrHVdz`$Dt zA_pnD|mtEik(oh>7VLdd^SoJ)@uiMKy4l?_BI6>j6Y(=Ey{CBUsuk7AV_)xK>t1~2Zr(YwS~Ms`C}!ZA0wdaKTLH2Wjl zjfLu2hs%;P6rn%Zt}QU=E%8>o%&yddE;70N35tz7Z{8ejND`r)Ydg!bk!U?x2=n^a zM7p--^ummv{Ljt?dk!PkUcP&viaO}n0@7C)ri7F=D@mo8XHw}+>VMwo`Sm%`TU8`1 znTH7wMdQxrCXKfqezP-(Geg@ht~WIX-;Y~rH)5@X|9J&-O9X{ zM4}&EB-aea1w5nM_(+ox)c4On*2ly_D4{bX>1o!cXi-ilyOR8>84o|7@O3ZC+F6uD z+OFnDE58J^*?R13Q?2aJY`o4Ncj&_cPCovQ5178sJpxJ4{kQ5tgo4mgLr)G=LpmDc z;eQ9Ws^^xmP6N4`VRLw(jpEL_iZk`VC@qtkdHKoL{)=tC#=W2tExhT#t^IF_Mb6gU zZqlB^DbWiAcRA)iF6(XbhuK#=zP7`kgH7I`1g$?2+|NyDezfGl)Ex>PUS_HW?}VNUSmt_N|en)6rh|XoL!>7NEBUke?3MHSxriX=OAB!q%#a zd~GVo!HPiJz}>$t+t=O0H%2mb{K_l=?*g|%E04zo+P>=!aE5+zD3$F84p)5n;)$&j zJ<-4ve_fPyJf&Zh11XQ$L|NPeqcr*CremwK%d`dzgEhUc)WU_I$bc)T%P67vZ%Wsg z)~cfx$F2*tjS=Q~%;AYCiMlR>hlhX-W<25g_WC(?vu|BQ%#hmh!?&<>QuqQlJxq6A z*u=rH=?g+njhboc4el=Y)`wlm+H$Li_C8bXP7=`|36Dx!N(%fU_lT&R^ zRphe~-<#F``>|myt9@ks6;ONg1flBBda>Kfz8AR@>gqpIQSshz;$s%6tI<;Dh^IC^gqG-G+?>|;5sqILTK@^&T^=@|U-zSvENDAbA6q|ipskiG$^5nv27SpKc zZmF2XL|A8u6A|$r?)<>$IzzHUVyyP&f@UP_&x1hPYh_olT5bP0#zl(@3k3{s#Qh!q zXU9i&KkO$NgmoP7UcM?%DZ}!sGF=8@7t?}uc%J3J5kKTq0rOC;s(JC7@*@UsF><8y zME=ZCn&_ zuM88__we>&>^TI}zfc8D{^O9;W3>2V@C|CHkO}4SwFCLo#9{HJ$ob3lSG)KAQ4CNF z0bi7~!;rpFu97HZHj6Y3f4OF9^ts%BI~t)A5SZQIurjm$fL3?pm1hU#ji7gzf&1W% z8vRt>97DhGvK5wb&CN|Q%GNVSUPo4q^TnLKZ|p;l{Jsw23#`oG)ky*eL(M6yvQJ!I zT-y`$QT{me_2i&+Ge*Og?SOe@cWqh(7k$uY|#ari`@9DEvCzal3pg&?W2_O8H z!uMpark|}DOMzC^ta7g8^Suwd2Rw6{k8IPPHr-ov`eOarYh9QbFNA%QnOe}-dfGAH zluD~nE9%U-(ZA#)`a!c&D#jMlo$fgn3pV_~b6kD_|31+}HId?>A;fKR@0E%8aiQ=o zbl?$;VJ0WlYax{`k}ud|eVvY3f3WDYQkl)_f&jRvdeoY@_b=6JU13DdXiC&| z=w*jh_|NPQo~BckfyVxW{T3}I&UBw;7s%*H=^I!D*7F`%bk{S9sCMIM%aNdlv<=xH zGfRiTF`kvj#qajU!0Te!d+PC8TNQ_WzF<<}%);c|kYj(DQ1|qD`0<_uUDtNX#HnoX z^e^&JqU&lR@uDKNBkcG3dqh3^xTJ5+3Clryke(ZmFsTS6&O`WC+?J~P-Zt-y%OUtl zy|JslBe1j7{a4JLh^qvUCnvwFw8aL5p_q__yAu<`RB5pgl$llN^4V^p?mjp$gaK-0 zGC%*)eSIja>3o3d4Wk`4Kbt61*DD`n_VAR>$ng0j-zoo+f%tfX7)$^a3Oy3Mko@RmB?` zTDrgEM8PG^#|0MGXeXBZxu5qT35cPjePP-i%y0@J>U>B$4T*0e(6>5c6Ko1s$NrXU zNf%JH6%%&g@lVt<=b?PNQmsLj3OlC?Oo5Q5zFeKEK4fp<>BSH?P~0xVfBrE;!X#~F zgYr3@H=u~tTA^Uqq2S$#Lr#r{YVQ!wB1VM#Sh5Ozp)M1XOJDf?m!Er9*GT*EbwI4< z!CymYcm0)Tft^YgIE6Od^}YrkJA=@2%M_&`?=QJN7JNr<$cHhe(b4y@rMUA!mrToW zRXzottyQwBJ#Q_M(N^{Ed#+BH$*zQ0k(BFBhnLP$c-~rW&4ir1k#Krp!re9*wy$|# zv)%QMUOS^Ca8a)pQjGhbEPlQUc*J}~$+}mJ0x#gy$z7PgHxK0yT6(_!0x(j?|HeIo zV_#X78}&HWLGtIeUiN?s%gR^V0>4;4RnZNO>{cxU$eyo?A&N?B24zJW{f(LqqA8&v zlsW6fS`(6(nI<-6ugw-8oLlX8O)f~lVoASHc-HJg<}E~|&UII6>m3z0Q6tXVVx&cU z^8i(+4s(2(%W(aN1#(rRKce(K?MW=K7J{vXY}D)|?iP3}f6J^y434eQ>ecrQ;OrH4 zgjz)NP*0xE%z|SbK(1B=z+vFh zTf)4K^K}_wN;4|GdZNP(=2y{L_mq$L`JNx-`4sAMp7}VTlV{ZXnbp;RmDU-e<0XgH zB-m7XMAq<{ZJpC^CQKhbwZ1ui`DsXj#@Wv*BT1|Ij3bm&@K?6)3|i$z+9~#6 z7x-Jpm>zT_&}3dZsshLX6Ihq11ySM;2gngvF(H-6acXA?dojRpnCOP$@BUn}Qz|8o zUS~jOfIqO?zQ!2eh%o`!*8gddO_9MHyTTdv@5hTs+rgt>ngS`&3rYK95?$Q%Lir3jq9GZ`c6G<%DNvT(k9J0qz}>L>k#E zBL5wJzEfP3Yh$98Jv$|3l2A5jz;d-^;3#k9BH+1NCl#D4Y=|7(JY#bo=9n;rwv z3xaY1poeV(Hz8E*uoo>GsPfItNNIuI{XUm4p!nOg@D!Is^$Rr47v`urQrnWYQ=G4d zu@nOhz@r*cBda5rBcvKBAEo}st?w_GAOblh9}a63FE5(1+N3-Jb7HJe?s0*4fnG&q zp~D}3B{2uZg=nfdz!~;#&(pV44?kSMOqBl!c;a$bQWW=f2Lc!P6+d-8)V&i*5 ze-Bt%-{g~uR+r*)GZH&<&D$aoe<{3BMkT!(mqksLr{`1=v!zw#!@dH+G$iO>pocSLD zn2a-x-@{&%Pm+Gh;{y7P>FAru!2Zr7Dv|(UK)!7Il*6K=r|enI4+FWEP;)dG#5A#O z9wQe)qLC)sTPPE|-)4r{sB3TtpWhLyw_aS^WvMZHGv7$84g8jKFTQu;**7M+g|{jV zdZldAfCAw12)Ruxw~;0FAh0b1?U4fvPWkvpdgLrKP>z5*tX8O84GSfbuaV5`O&9xj zgK2K@?7Fpq@;F}J&CUQ6x9}#}s#MBG0QGr_Q}S3hO^oq7yrnfpe;&yB(TLxe6s$3R z%1Q`9m;#*0D2>R8g95vSZ}I01wkT~$y~LO|^6J~^Q?HjYgK`x&tB*ThgoZxrsZH#3 zdEQp97%G!ox-3rMB81(!cU`1o5>f~;N95h{VKtIn;wfN>6=dfIY*6e2PlkuQ*{sn1 z?!C{`V8y^Y%8a{)QeT+BQOl1_q?;73@)i_Yc`sha#@VFTv^*>6>$_3!8K)!m(nI9@ z7nb4@gRhk3hFy=QXW4tt{|TtNrzKLmcw$t!59L(?!`EqGBJYEJW2^5QA? z6un&K>Rk8@1EfsjJS>0Bd0IUpg9BRF8?dVs${^De4|DtxE6`7TO7ik5&ReI__z88N z=%q&#BqZ0wIN3qyGGk?1_T*_-k9hk1f&t`HK;PISAB_fEDTiTQ0FAUYg{y7B+a@rX zxBTw`VM7MX*=&-yG>wVH3)p4rIeGeYLh9}~HHh&aU)zJ4ztaHpF6;f%?i+Q_xVBDZ zjF|ba6?JJVZnqkTr(Rpy*WnZL#u{r}MdrkLO+}`5yT!7~Rc5o_0GoQZjc6Bi)QTSU z*SvVJuv^~gAoR@S-Xq)ae+r6NClLbv&@3__`u>zcu3OC!*S(sXuQP1yoWmicjApq9 z?Bl%F4zuEgN;<)odZw{y4zKo%Mz9Yx%VxYKMfe?a_EmfUEP$%ik0NST?a?&v@L^Xa z)(R=jJ#ALHR6pHvxy3$8jNKt?S-FA?^t?GIHz@We!aqlGyjuYu~818&*av=oUrGF2N4p*>OWktLc;_G#jT}_H-(jd ze_IJP?OGj+=Eo7x+F0)?6WV|isZE_Xzb$Ov8J^Vn@H>74eZ~Zcqx(6mdE|yK-*oK0 zLez_eJimPN2>H}Fu3WUrjy$SJmp12Jiv6Q=8rKpRwA95Ehog+HWZ)^5@`O_Ee#e9G2W8F@pSrHv|wnok}sV$My zVI>sQkuBItw107U;@i4s%0i*B<>>#ZB>zT({Bc1$U+YMar=E_nNWdXq;;47e2wWz6 zL_&)*16*%jl!!R@#hSrkMM~lp*pIU6vC@5(%u};xFymBA6l(1hn?RVY2OM3kXxj5 zYFP|DIdw}!)ZQZ`soPp6c<-JaW(K#w8^fOuA4325F3q+wm}zmNX@b9Bu1uHy$8Xj_ zP5-(ZM^$8de^?V*S6F8GVI+QKh7boTO&_HC4fCq=#60?%;@c}*PS5F8m9dNV4C!Oe zWZ}K%r@JN5xb9_<-Nn!Uv88wEd(_C$y44|I++H9jD3NLh!RoTpC%xf?+RhNPisDs$ zjrm<9)PyjiEwez##EqS2Zu0YEGyELKKi|83ywvcQDwloRF9gpa;cTw=scFPQ^B3Ht z+1w$-SAlwx>Cl7pd;IM2YV_?%Xv+O0WEoO0X>WYBHeO<2m2Jh+Vw1|{&gVIsprGNo zCQmd&g7;-wZpFsO*1bXk%v|BQIxJ*#+UJN)M_9$&{A}N$o2E`?Im(BD+ZW6V_iPFZai>;oq`bN@qRA4oZ^R4DY*S*7zIuD11SkLD;)+Gj_0|eS;R>m=?2$W~^Ck9xun%uBR66{jdZA-31X{mm zn-pRJ|CqdD@h%3%A|hikpLMP`2AO4LH+S?72H<{g;pbKzN$j_E*d0P51t;g0VTIV<(-(y zin$96jdo@adL)S1>xMJg(#TjTP7M{e{FZ0TVwv1|Pl*NjF0^)V@BFvDQsYBpTVYiv z0jT`2Y6++8rb&hWToygqjz$_UJ~urJhU&n_uzY1`aW0AaL$v}m=tYvjHLvpWuFE^# z-#edXMesyZINW0KQr<%V*v9%rt4X0a1>0emILB5vvh(bqGv)aecf(swDk zvySt(OF}+fs}6h9IQ^)L-%JvyiJ6NU z=Har&C1RKsxmT#L;;5%xFVIyiy|t^az1^JEQs^IZ7Y86LLpBe11koz7@(smyIXrXeKV$<-TUo}5H=>Qpp< zk6oj5RCF=NLDcPdED=5c18B@i!`T>fmn?F!@&YP>CHjZ(RfT+gWc>HGoM%lUH9N#CzdUxGf(YhY5QLre*k z$p_NYkPznBK~T)Y$NXq5&Yz(0pfh2rOuG&_{YS&kl!7?v3;v8g~)`sHSD_I?Px8t8cBbd39T)5 zc*^w254qUSZ?X+u(a*gGW-Xf5mhZ|ULW7#mk{@*WR4^4p7a!(c6}`6Q5Xiu{5dt-r z@%!*;`tFS7p3_5KH2y)~T{y-vK2^>O1vN~6k*tF~lJ8Pt)ty&i@5y;Ia?~FX{)>aA zss1>D`$0X=NiZ*Yt2vr61`*Q{Q%X=cE?t_QhbFU5&P1G=T#P$tVWo@$f$xFoZE4re zF25gM45j8ka)`daq^k6krW8%MOdNPEQZ!i|^9K{Fe8w5zwBi@bVUY?=+!bHHjCWoK zz0MOYuK0^Kt)l%frRX5YQ@U#WH8`QQLaHy%?Hr!Oe+W)(acf%+RS1c@O;4AGU zbM1gf>C3J#na{X)T`;2kqVt^*czL$iC}NbDAi%7gI+cIbG>vo|v*~rct)f8Ga)L z9zp@ybxA=QzvAtFdnr3dBsdS;$az#?016Zk-JkL5ZW<%5Rc@WT3*RAWjCEQ0j`T2p zcws1yTfW;6{+FvRp?&D<5eGf--QDOa!QKY+=u1eAujoS7T2yXP+eXfsN&&b=5269& z8R-lqiGq1S;dv2upH4x>pitORIyOo)MR*7t1{9@$+VTZgD~CtxzrFTd&YOvzS6%&Ow~8$45!wtgTrBw7du{pzr#>biFc&Be&#+cQbkZdN0tP0 z+%G~qs%m;846Ytq`7T$YGF)cr9Y1f9^L6|2BAmwyaX)!*$ZsP%{M6F#=Fij7Nd?Kq*-h znQr9~zKz>sUaNSw8@E1p3-#qw1<*=XzUN2XkcTm)JT3I#;~^h6X0YvFDol~LD09v& ze<=EnCsUc+Z8l#4)jIwX&Qb8E^90{rHVJ-{z;cfhu_K{+ZB(sX_IfT(*uZB#j3{}Nw)nh!zU!Bi^Edjg%RT^ zqFdZYsz7Tx4dsQQ{nLobLa2`EXmez*hWdHNMSE#88ynog-)rE|?{4Kg%!|CX)Sw5= zJQ?U_n;>p?rwK2e=vjaL)g$GQTP8<$>&msni*Ht3t+L#1{eK+Zxue?HrPFZP>pfU) zeCUkn;Ye#IeC`qM+Y2^gic+Jk|6+-oDYGlr&)7|Z*5=s|cF0a&114!5hWPB?-UzQf z0dKgw)$0#cK26ug%9UQg2C_6_K!kyx)$GiYB{PGZfTMlq>rIl&mSp z`(2=kU`eZ%B!l>%Z2o--YKy1 z2DdouZfZR{NuD$Y1?I;v5PS3|v93eD?-cSw-HMbYgTjA_-_$0V6pgeVZRA~0i-@)N zgmtxPC`<*#G|jx5Ubq>NKX#GQauD5AKV2r>w*W`DzBwr+HF{shA}&7I%xAG^axUC6 z&T~1`lrDNS?G>~a<}~G^ThLlM51{`?OI(wo-BAjf_o=j9tPJjq50vX=93NuY9JVEz zF>z!0b-U6A{4CG+b57hg@@;n;mSkg|?=zlfjVPS6)rhi}lzUA=-|JqI?SliNJ6V=H zq%&0MMi&#B0@N>WoK&8V0QTdGr~dUjjmqFBPN1Zd3rM$_+8vT&c*{9fL1{kjR49h6 zU7;c%jg)q>sVF1r0#bT^(NKnbgU;NucRown*q&rgxactfbbX1fU!;&D4%8op!&%xO zyN@`mOGs6`(jm8rNRRuxcVzHIMPP>+WwOah$KwT1PA;ZzFu@1XY99X2uda6Gb64+h zmy+&Ges|jy=>bv)MtE}tmE5+Et!1_~)Hlif`wpg9DXzD1E63XKnz-~^;=9SRyBEV9 zvBOh(3l0}rGftm2@O$1gtB}*b#9x4}sG%?-kAz1fSFDpzUwwh@TG~YVfP?x+gG8id z4H}GOZse{8ltB@R(|jb*WqQJ{yIZ(%`f2Up>glDf?Zi11ZKe9sks+NQb~o7S9BW&? z!7?3Ml{iWWT*}gx$i^kLoy6^-2R4JXn9+M40;EqTW;V!;re@BZ*p`&y#8q9tnw@Tw^*3 z=`;YtWf23U_V(kL_Zx!7K4#~TED`3gbsLcU&T;v#_0lD~qrcGijX!+oBCe8J^hL`u`sDs>N~JRJ3Gq_$bRyBrSw#SRgY$slII4 zlrDY&6f%A-@Kx62=et7XW*wu4nsQQ=6UkX>R?n}p9(G%MBV`A=>K>b$4yX45Z`3j$ z^7=>NL_R^q+6=rIVDGlf)i}H=1PuX+4*@r&>F0vg@*3U>c&@5QiyM+75w8>APjk)V zIAdCRQ3kJa)}YcAs)qu(^NTFHtYL{Rj+UY;ThP>`pML*j-D5@EK>Yky@yZR@>N3wV z+A&^>!=}QGqTPzloOSH}b~hx~^Tg_I3agGq=#0^rWg-((%%{lBWMBh5%SyGEhfFT5 zCx}}$Mbo^`9oypL+3lqp<0;(&oYwh1+)$$JAf)1d0n9#4pD}M^jy$}#9Ad?Nn!A3W zT(B+Hnl!I9pG6rO8@6BJb`#uNb`+HF6|1Xuy)N7EK(vE42E+AMz4RA%pv7mvr%jS- zj`(Tw@1VMo#hvK0``D7Q<7}^g)%ZL=tNtkNn0fGuz^Mr-ymu-hFcRur&B(lXa=*=} z-uK_wbdNmn1n1P^dEHCt$Xor6h+Ipq(e?XEMw-P|Rw1hO5fnL4OQQl1xgKu_%|BTa zj`?5_1@_x~kbQOz*SLu>Lw$k)V}xph03j>jX_BfRa$HgmLC0oJXd>@Fk01$=!SD3(&xlCp=^S=^XnPr5c@W#s)Kd2-Gk63~X3x zq7F8+{m$}MA}3hdgkZvI3wVzf8!(_R!3%R%bhn9|8?J(6@r}WU5m=Jlp^lsE{cNH4R5hNLNGOc)NMX{CW#-o&m?nx1p% zNZU$xZ3zdBtPekCI#n)8Bg(K><{f${WYMQzQ~kqC`=MPtE=RmzDU z!Nv)9d=%Kx*@7?(Az*F!%Xtt398HwP=q}i@1`%@ZggIDCwO-u}-tIlneQ8*gQ)dW@ zqGy9884o5~{WfjG997xWrD-Ma>zkMV7zk+7NXr&HU8p8K``cLx*Q>Xdh2}&ol*RWD4)ENEvq%{>N>;tL2DJLMMEW>g2Pq}HfBII7k55wr^Q-@$B0fW{;^>ctnY`Q zwu?N(cQjNrpo=06e|Nblc_NCRZ$!mNc0tw2|Lw(nF^Ka@72%dzXLS8QuME3B)!nfAx&x+zDCC4laBB;Jd?LxU;|?S$HB)As9?>3Df3IX60xN46pRF_^p+GnXKkr(*5gz zqheO1I+)cus(x}PMAbzoX3OfJ(4c+-%+Xclm0`l6)@7`w+!#T6*933bgo5&V9K3=p zKp6u$xBezlN_Ghucpk(A$eOop;=he)B;41;dZD;{Lwz@ec2w-&eG%a#Er1`uk#DW&*;j9mz@i z{1jY}CH-p7U)LeWTMMKx22#u9jdYL-M7&uNiMd=&yvH>0?Xa3IMt(@qwa*oHvZNtj zR(v-K{EEri+HIVpW~fX*vF52K>VrtkF5{m%@nPPs+0zJ2gMJLdZoT#c2sFU+En}Wg zHZi|X$uxaIPCYyM@Ch5EIht-K%7HR12IewBUQU7(^RdxS`VX*ZoDdq>z- zWV_U`3qQ)W-!RZDs%gsrIaowIB0?xA6ND-9NPf7(8 z3h=79r&Q9D(X!d#_cl^&WFfqOo-gw2*GcU!zT+O1Je}!m3er!!@Xo#e*zj|@>n4N+ z5TwOcb2@y!(+aS;Z^GlJ_w?a{@2275s0}$=NxYdMHGBWI_2pFipzl+E{++wmlTNMF zf7u=lOROA8Oh-#cD2B-*=_wtD;ATbj@MXLK7rhX?zdQGr^7-~f^N2z_{^&}bknZv> zPn-@YIpLNE6>O(c-kBnimKz3N<5J$C)wiO9a^E=XI03<>myvwHK`omFZ%i8(1p2Y6 z@S+|)xK%A*|M{mZ40&gz=bVxBLsK`Vhe}LrgS2K=Y2S8&q~z{B5PntebPr4H8F^XQ zQERkI;(<+eRiU#7kKi|$%r1vImeQH5N3ybNNbwp}06R%r!~BJDO{mm5YfQVJBGtbW z!(u3+el%D|`T*HzQKL&wdu$#h?Gw;AqiF4DSys)Gv1U||ORgpe2O0fVMCKB3$waw| zk}4hPJY_XsOfBHK$K3X*bFlQ3hp@YnsU9Y3QQimJsFFLd_wxVw*sGsns`aBUmY3kcVcx;oULaeIumM%NnYz0r%?`1yq-KQ&) zX_t_IeKmDBFcFAzNkV;j2_SlVH$dAoa1Jstl>QO21HPt43sT*iOh-&T!RH+ay3-Z@>>8X(uLO=? zd>j`|)&P1rU~?TmF556-Lq;qB4ceX}KuUrYn&d$u|0`tK%waTl64%B#Zed_O0$wXW`dz_2{> zn5YAK;;d?nAMx^ZStYurZIp{)Y)8dJU{n?nvMiFQ_(&)11v=AvQ0bzq+ouiHRTthFqmX~qd*Dp z%WGvisD60e>8v806Zego32PtNg4jLCij%5!))cCIEEbZDKqLQzs9CEth` zD48G?3MzaIbQSCx5n(RdfUgzW%0HO@cP5*D*I@3vRsNFH&HyR8+Yoc^PsoKYZSgK^ z0`da^?vkO9%FXwCVA$15adVH*pKIV|Zuq#>36qH&b*|IB5saC03qO zJO5%s*qL3>cD+Ngop!C|>Xuk@syrTH5VGn3?3L!@b!@r>#?oIh4tNDA2ag?b z0Ki%wUG^J}`~Y5anFcl{dgxu6Ya-Q{M*C!=3RWWa3+{NzY(TfJ64zRY+T0(r94i8~ zD~Cl)K3Km=Ky=@h;B)>G$Q;Hh8p9O>d}NRK@>O_%7Mm)9{O-wEKBHWe650FCc)23- zQ}Kehw`zv?+rG3c$iid}H!-%8L*-3<&R(j*6qf>+0u&jcKuY%l1G~P2QSugK@K4TX z%T(~B0c%EYv8fx`x*CNw@jqpezSIHVna+Ldb^};^sTuKtO_$9JU|5&2OFYZwBiO2O z4%Aa?cnnCPfh*;<7I1jV1VZn*#23x$jdGEjDN`lc*y$%1LC$-k4=dtd;0;Ck&=38C z*xmY8y-jYu*|cV*xwXq>co$trQf7N~PP%3tpQgEOm2o2rVd7tXlw++U0kfeyp{&23uLRTdF zVmct*T^70T6o3A;qyD1d1&%ku!bpOcIWTjZBm%(hSb+v$YL94O#UJT^?3|nKCAn0; z?Fs^^GulHMNz1q)eG%!2fU(b@TrC~xuZFRy@!aKlH(%m@c-(7d8qL|9D3&iXlJ=W{ zR9hRPC-=PDtRz)Ky&W4pG}tk1b^3)hZ6RLeN1o`&fZ8OOnxku3Z)tQno(b2aq|1I) zu0?Rl-u-_TVCZY)o3!2o?n;CR!Tq*4sic(2P(`!j=(`DcRI?;I!ZqVKFYF$@xla1!#O0z9@_{aH!|RZ6~E8b>RvaoNX~G+inH~OQH2Z$%B68Or_{UGv?q~2)+s*5W(!}Vm8Xv!%>2&SU=PWf@Z<<#a zy-A+bwyz<2@@4WdUPo`g{dFH}5i;nK1)Dnh4$o#uGb43e70==)K;9m0(`>dFBzO3& zXOBK}^Qz3NLNCgrIeXb7^T;?LiI~h99oJ$%gKF!xB{CF_J8f}X({L5f) z*8=hF|Iu{TVNJeo8@B^Qq-B6ejz(Y-qm&pMFp!oO$%*uk1{LWXU1I{HOS(ZsT8Ysm zl4GPajC%L|9mo6c_Ro$T&vRebeVym^IrC%1QQ8oCLA+{XhhL6}rpme~I(T1;k=v2F zk`g9Z!J;&cXnx#4MTbi<(1<@S;(6*WpChULjInfOkQe8o@9y%%PH75w92i|-{lYZ* z(8MLia#_wA^bRr1k9-(eR$3+1J(`$=a#Z#uq!co=wjJ+%iz2P(29Sc|1Loc5wn&Nd zL+*3)!npG{6Yi{QjoYNyWB;m+M*gK!AZe*x$8=(D%6;yXM57>mhlB2)lx}CWd+;b|0~kMVrwZ?N`jEZXcU>53ah*IzX8dJKEvH(A z#9qbIi*BfQJ~luAu@xII;VztnL}T$Vq5$kz)mvx6oq=uYFs@Y{XP`!ufsq2Wld}s* zanYPG^J>*IuQ;=de`$?~@AWV0V@qWGS>gSmBPaSyiXiGSg=&GQaAzh>BL;sGW_QZk zQKnhHvtv>aHW?O*2h0noDr#DqIo!+RplYpR1xYf(hOW8ImQpGW6C?{%GE^W1k*{!B zG%Nbi9TU=NPp(0~cDmRY`gVyDbS00OEpK3aFT`gsUWI{~`x)^GThOIJY@_Io$;hFC zU%|SU)!sL?&9lo1u8T%a62F2DmMKigB|$4(5?7f(uS0BAz5OQKjpJHjxQS!Gt8u+F zJk;A@!W}bqd@<8h<`ah%9{xvpKcHE4A06jkv(d;vO4;sS6%t(XaZS;kJpV&hMI%C! zxLO5gcA%phLVTkLGvPrpn>a^u3z+;vm>97Y&J0#U&xR~sPuWH_Px)&L^!gB`&wh%= z6ex?B_;6IF!}IwBDJyoqLYQLv>vt*%o_t?^RXmOTX3+=Nz-OWGDIzT0 zQI@D3=d#yB@r^gs zd^mhsP(JE`7IHMlgC&`;j*U~fO4mE3pl%R}lM^?3e4+CE{T%BEq%bnUs?&R3(7@hL zJN_#7I-s>J?@Gm6C4demDO_G92Qw-N=u^h^N57My83=p7o2oc>G4`MKm5Xxiy+rkW zy&*hm9?*b1++DK=JRe6)#rdyc@7N}i$J${otQfnWtGl&kjjV+`@xfc&vUcI&(x`HU zw=jA15N#oM`RpQ`vTWVD3D-+B@y~|D-0%MQP-sjS-zkJ$KMK_q7Tf2Yn^lp`Di}&n_cM!3H((lFO%mZ@Podoc@#D+K8$iw#a8@! z6`e`yzTGFvTlbH31@{*(p_E9E16;%}3R}s+&bsX>*5i;XJ@D6>GfNg6t>9zcU)Tt) zIgU~$=805jZ-kZF#SU`aaV^)@0pUsY8o;9s)KS3&SOZ&3*5y_nMnw!$eQB$@u)N4W z1FluF$`)^TdMp}7M{xu_D=DAVzN$hu&P$vnr{_P3hy>SivFKk_F%+Juc(9v}ch6s| zZ3nFTt6U*vYtCdTvN&;Hbi8-0afvg4W2gx*N9$PP;O}}4E()*jh3-b!se3s+ zAG{l_c8t;Yam+>djgIwm&H?-i*R&Afmv}%x{AcKd?km8{x(TnC65@2YoUFW|hU?Xj z{m2_)81olUmA@4Q-#_7rp}{rrewLij7kl=_ZK+tt#LJFp`zd>DKuGZTlc+NlgTai| zY`VHOUU=rJSM?p9+E0VY*egXGKUa(I;jt>k%uU=gga;ygl|M83?OkX6k%b==qO*ji=d$i23J9G8|K=w6Tm%0*!r|jdf#{8cnN8l6vf*3MdON zpkEi>#?lx=)0>~4z5L>zdbxb5;hn*&#$ifML7D+e796i>0eA-a-tJFI_PtHZ@s1H1 zhbA`84FIw3=;8_@QHR7qugGgVP`(y_Fd%vNqDjc$irBBWQ8~hu`&=^haw^&Gyi*o@ zAAD)j?bcFyr7i0`L1z>r`M5W>(I*&-NhtHJBFg(z1t+VtLVW~d)&$c@MgJ)wl>{a7 znLYc6B@t^bf%+42tGg7Wj~3U7iU4uf0I$T=5zZDhoNc+dD~5+K$YmNBHJh(SjERdj zU}{)077x(C<=X@3ZFw>a{v3z#P_yi(F}c%u^oshS5mk{OZM_C{+gm^7oELWGjSRWZ zAe>O^Jk;#?0c+sn8^#2NPQN^JyU)*nermd@w6FoxSpu!G`{z#bsYMFYy)~>T^__^HT&hiFE*Q$myU=C&1~e({fmckSQ&SC8d;>)-QHoh5{Co=f+r zVd1*HK}o@hOchV0qp2veq7-Xh{;DRVTrOyZ4CD9I1w9Tv_-0Za9{Wu$;z+9xyMkw=HFWl+Usxt?eUzKvxmmg;){t&5|- zo^xdcBQ?B63)b?__#4%(0#}xMR4f+o}8lLlXbgMsG&v%T|&6zR3{LWCI3i;tX#epfkw2M5K^Go}rp-jMlY)|ZUJ z2?r3E1k^hMOKB%rrFj|>_osAWbbyrD8I5)F^MwD79l@xTYSJ^r&?PcO|2%XpMFIvf{cqyBX3yl@9g^k3erFZVfq~!@EXPEb!|Fo|jF1m^7+0E@Gs`~^ zf0>WHoKg~TAet$wmLzw-Jyp{O?HQ-BuagBem_ba0x~=g|9s;F%Cc!gG2fvRR%o$;N z(b=NsoAKQdORoBsoSm)K2`X&VwybKAH)cN_0whF+=k?fqirY_vq#{JwZOCDwv(5%X4`fnD-rrZ>AXMORy zuwp%Jsiy(9^R&k_>RVC&S($Dc2IVnM8&Smt7e;j3=573)1z(j^{{gt2v5I{QQ8;wR}3ccbGIj!@gX&t@rd&7UR!lHEaT85e@4+UvfdCB!GWTt zVB^5PXWAM5NOM~s2ym?$L%!I<(;5A$-5WVA@;-(Agjyz`-l{5x)DMg@k)6d3Na6cY zI&`JhKP>_~<$%vQXZsDrtPWDVI~r3$F09U=bW!)UPwEs z{L!7%Jim7}Y#g*?TlaE6Wd_o{EfT|Lj|j#xQ@wR7?mlkgBZ7f%g{Ct=@+|yIMcp*UmakW3(2MV&o-4hS)_UDLbglH?X zGnx*uRTJC6d})IC9M@kBK*jv;mqzlgrS}kn45vnMD1o+_EGyb?b^oa^vLaDdYWItS z;I|AIjppl6>U}>5Cgo8l%*TX#q0Mu7ATwP7@U@URx3RW~^sX45*oe&2uv`0&-yX$u zQ@XjKn)7FxOD%HH(cx|@M^=7Mn6jTvEIFs=E62IH&zw+N!a6;(Tohv#YDa9WDnotf zh*hMEFmrNxSCZR`|Bwg`+}7_FU*rSqZnqg9ILdGN$@PtAw|g5n4wY28Yn@FbF{hD4 z_^bG>k_XQ)r{&XkmrUGRsJ=fV`^&mvdCEwrEIrSB^E0k??Z=QbNvKrYI0yp%ASJsh z@c+u&om}>6_}g<~4ebp|p}oUU)4!~+^4andey^MGxXWPeSMZm%khIZj{cbH)Cj(K2 zt~&%f8tY-L`iGhC76KX_RT%Z=s{{tDt=~@x4?gF3fO|!{pl+ha4~IXFu%ViM*8&r< z1<3dQuU_Z!;k zIPtc12YMu!@_cDV4E!i-xQ%t5pUg&0CjnL{X^H@eHe<3p_L7?=x-mPjk)W>qZH?{# z3ENZ|s`i3*g&b&3*KIVYSDhoK|F!{Rl#mJ( z+D{6~Ti=A%wQ$UWH#2&?%RVrrm_v0w6-Oqewq}2zHmRSxzisjXqK|9*V?ZQ`SDH6` zsQN`8blCHs+*SCbAPBkSXCyOn6{#O|l_Zu1m=-*|vX^MCsZ(Ooz-#iY+?RF!Mq*wR z(2DbgrL{m~HpFFZRzM~mIGxf*y9LC2mXW_8*O$XDAGJr_+x5B-w(}Oxyuh+yIgA*m zmhxkhBO+ z%}%sU&+wq~8hI(Gb!WyEw5N{~Wo9hho8AJ3PDQCMv=qVjPcq#aBR4XdZtvwjTV%sI zj{O#aUEqn;a#p67%iciGx6*OfU%zXttt{0$JJujQf|}M9@6{Uhy!U^n0Sp0jcIR>GxwGU)`aRcXvS*B zfgf|SlCC4U#ADMPix#3&%Zm+^g3v#&S=J%y7%h??DdI)2prP zcEYHFG6#hNVICPq#Iq^}#I>q%hALkq=nGmuQbE$Wg;aTBZ?U8$ zrmkMSMy0<<`ukthJ)Vr~Qo3nu>gt$ld~Jc%ND9wvet3`Ye924zMX*@nl#Fuab1f+J z65iOCFcjBj+Q|eglg`Ul6g2l=q9XLx8uEv%TZOosxO1kYkSbpY#h}mgi&8!IC6;rS zT}MhUGau4TDn3t{;@g((sNe9}^VWTt2Aw=jBfGykBe z&JKLn?BDE~jiDlAvhM*0SXwPp9Hr@c9EdcZC_a;r-Odk$S5xF5a}Ek94*~dRIqcy6 zEDSPxes3GoAt_?2`sJ#7b=`c3&Yd$E9$V>}aW{IccB3g9qi!%-*ns>^b%+PUkF{tC zj|D$vOFL^{^lB(tDTY9PW>k-=6P3J+?yH8>Xvtf7~?Lw~Aq#Ax$L0f;cVfwJaLCBuU>$N=kH5jGO zS}&5`>|_0^Ub226h1^!+ASGfh3kjfHH7_78B=M##%hpP1$!ys8^yD@LD4pM@r3XCt zI^T&wQJk6_*{WEA+#e3g-kBPIF%#D{!J#&CW$<-VNiKl+yb~t>in6%o%}+nb#=fGh zP=bhdh@#gyUF9tn`m(`>J3qJPYu>ap*zlH}@kNzOI%;KWIEgsdtKW21DO(h)*7}uSCg!yrTdNVhp7XTd#rL=w zjHOnsT`-4$AeVhGp^&kx7>3%3j*MjNVmHq*V;5Cs{HGXqifaCf^6;5Ki{0$(cb8S*}F64$0LV*Crut zSzbL|)B%K@EBp7df#E830AqMnX>+pHmyrf_fMqmkHUxTZ1NkWx?5|<_+uwE`*7D6v zNEH+JPD<(c)5Gs~Vtn62l*$Z-uV!D#l@LCcXAF^ITIJk%Iq33MMBXHIRFth|&eo4K zQA+&@`+ycgC$Rh!#gTbItFW2R8m-MM<#hCrs+)@A1poS|(L`pZdL$&b;?0K8GXytw=pX6*__nD&anJ2i2WxHtM*FRZ^e-^(qm&`|94HFn1`ZK>!tISf@E^2)E`{$^nctC|Y+{#E(ApC^#Y zgAQi2Blfn8^LoULXpF5;l`CZ1XXQ-+|NTtYl1c9QoE!^U4C*C++~wr|D$hd^{+kI1 zQDjN1W2Xp^8m{beiIpF17q`6!Wk2I>OamtTwQU`_CM<0kMBx9{FZT^FS%WulI`4D65%)f<%Gw$UQ_pXfkU0^ zltDHUJQCS63mnioG#-??8&)5`jT%1$Pr#KoDlRTHfT+LSarSHko-)LZpmERINC#_! zBA+pjiT2it%f2VSIWMe-qe&w4(3(M?ZqQe;Ql`iJ^iggANj4TL%tp;_-&Nf5^L`Rl zs)A%~I=Du4eP_x!zhZ?w%c7Vb9=!MC^`qY+l-5iE53FfWRSzzylhD*rsOs&nqTy;k z2X@(awlybS+M+Ks`&OQ2x@C=^@soJsx>$ZZBBG`f(ov0kthfAPPJ32U@mGzh z@;dKnB$X=Un%;9jA#2Ily+P4J1CiIRWAJpq$j{hk`R z`7d|hs&l|O<1M74{Dhh#wNq*p=6k)svR7GsTOYi^$}u7=`G}a!km}Y~h-Da?BxO`U zblps%UE-kUphLazbfO!KHf=bX;hV&L8U*!Jleu^t$aQLwQSe5$@ZU-m0gRBP15?(pY^Rp3dp=vEtX&+QR3wE z-*ePf{26LTe|#dK2%VpSOExrk@r|h(%z0FQ-_veqNMl#b7PG_n=lE{rzZgwF4Mwl7~UyLTO@dEcXq9;-S#&f(Dh>4ZOBz*9m{ zp4L5-Bi;6lr|LL-ab%HO$y5M9IXVEsyg9;NhCY@l8+oN?xmGJ+ z;DvY-uWIFEDA)g07j&x}@l>kTk%NV+@I}&!?59yf2v9&i#{?pTrOrL9u%&u#aqzUQ+}>zL z3HDCP#G>myM$dI2Ht=Y%JkkhvT}ZP?;(3+Xk%|kP3s~c

    x-p2dBTZT)WFUkNZa& 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 literal 36584 zcmXt;2Q(bt`~MTEgoub>wdghK>Xw8ktFx=OXkqoI}V0g&9fb&CwF@<#X8t=ms;%I6R7 z-yDk{(aqnS?t03Dp$~7ipocb5H`l~&Dn_2SZauoG_~_|v%zVhjty?c{f#1A_`sHjP z1M6)j%@$8V#i&BvIfG)8<()V4ybg*loh)OWp7j#-{`vM z0@8hVrJ3*UXJpX!ymk6WN!p#*M-=(ii9=$DgsmrP@6NZMENM@{ueS~3#&v^;kK>On z+&3x+l8a~CtxYvAOdZdf^sCCH?BqfM@r#5u-&}yPW2>qGj>inqtDtqZ{qFBgsp6na z%Ydv;@4pA`qk0M+@M?@+z?|23qA8-n3(hERCd&5zU(xtqwLOTV^QIcc2#ilY_?#SK zjB;7Op~1*pZsrkMQ^^y)<#Bz z4JDCwyD4EZCuYtgE&XDO@>32F$yb#{4@?|G18E{$Qx9-e4F=@hZWTrN^n*ZAKtU)! zPTsMKtb11^*?ijgeA<#`fgd+(;)v%vbHa!_uU2UFAD%PHGNnCFKAObqW%H)?Z+<>J zrmD7U5m!CS@@6U;&$39L??&3rsY%)A%$j;vBu!vi+Zx2uakf}~6n_Aff17{cW5tAZk5wSa~qIS$-SKhKkQ zXd{;R!DxnvrA4sR$W5QTb3@s1zX64rkBwALK}I#HJ_R~7HS@as=gfMxTrW%yOsAkh zX_qy_AvGcUkUe?ZNi5W#0P^?=}#@TG^KKT0n_>P6eY`Pay^AO}zp`0bOnCwac~Z@;x37niORe{BEEFPQ51*bS+RF&kgmH*cN)n2w@6Z;c7u z@+{B@t218gKMPtESfE<9w>K>o21<6em9r+s)|z5Rzg9utmep+O9VqpFpY%@`TUE-M zXf?LmA2{Oe#UABGX9D6#wJ|2jHm zzwF?erAq;^t+~oAG|^HiW?tkut3jTvp#2k;i)*)GrXo+*tf*Hph6YLRiYp@vQWx{; zrW$*YUf0vge@luL6xq53`G9~Vykiy8Ir#LSAZdw-BlV;Ns&`@%pYHW|99>;=Sna#c z$sVj?Ew$?eMvwcvu99!v2sWYB^^WUO4|^N3w4Na!=qBa1M}* z>_HwiH8c!I6+$dE^t^s@3C<>APr4fatRxrP$Mi%637^#~qumd5C19p?c|nzK0%Rj0 zYpshFdv&e}ovKCw7b5bu2P?vVhhHA!5@)jI=u?(o#YI_YRCVvwlf_GaBbCY3_qV?|YL3jI^H0mGpVI+-X;Ve<!BM z3>Ni>?Hilbf84#>l6+NPl+P5g6byi5bn@Y5*)E3#NkcU;ohb)T!46fy_B0Vp7#htj z@Yy5h8Ne9;?3&~iSJc!rvG6^&A?%j8ai|tFUl z%QbF-EoUvvTbtSc>gHGO9KSFjZr5K)@A+BwjSW;8Vl(NfjiZ;51@x=aJ-yICMHO`k zJywX_3K-&#D~i^E+BR3`JdRZ{c9fepKChpcajt5xYnsR#H4apE+}3s6CU2UMEo?aQ zuWHcxGPLMWH9uz@sN}fK>2|qh?3h1p+%{|+IR0}>hjtW_Gf{Lg%XcI)VO#ZSyeL1h zo)vleu`%%U`=xJ_fJqZrc9c>LGw6VCL#zw@lqy5wbCm9h3f0?QGBkAhAhFBl_MSn3 z$wQm-+X+qwqSRRL^Ux6GR;*WQnXKA2U0$V5Ca<-~^+LzC)F73U+(zai#Gyvw&Vqj^ zBW;LJn^r)tQGG8%{O_&9KQ)VdI3?#|mFeF2j)F^T4Z_TwQiS_9x;(8d*3U<~I!0bb zTsn*Hk5hX4%&Q}oreB)E4l8TF-o`6E$YVX-{<25k*Q6Sdro^r#(1dZEImWq?S#aVQ z=L)?$*>Fm@ets1>uDIK};jh&{R%UCdb$X<8FqgB$uTE9(jQUuL)J!@Y{2_9^3r2n` z0kW)-D~E#P%`u+Y>t&>3ZB7wrr#fB12}{t^&n#MnSB(<9{d zHIwP&iv>bt><{T=7EUEG+rDaNmSBr>6VDghP3Zw9g|j~@+81V>RjglW886Yyej0;X z@5FR5*&psat-k zb94F!!c@Y$6hqbY(~QMRWQ%iC=&43Xb1`{M+{3~&l9Ji+bn;MTYhVWMQQU@Z>paCQ zy!!A>?}c(;bOJQ+P;VU>yLrB+J4XoA`r{d>ktOgDE`7UoW%Y#zo8p&dfE^WulVgf! z=9=SUVRe{Oxs)DV^u0IC+MuXgJ}?4$LLVyigf7e>*t4p+k<%@Ah;Q}%0JC1ZM(z>5ZskFV$z+s=B4F~Zteg{PpF=s+IKKl~a6*HISjn-zp# zm=-KPzZ$S5{}(w~4rMtXz*D`~A2bkE9%lyWBJP50tE*4BI^YEl?&=383(!TClPk8V zd(Qj9BWyy;a&S@mp5#-NSlRO=F;**OamgOWiR7MI-;d2}>Is^?Q;BT0e{zm>zmdlf zJuD^8=lvk4ljyT|`Q^{Ds%~y<`F)fS$d@I`J)xX{vVg{Dxj=N2MHI8fp( zn%2oPCnu5z6MEqlOBT%yVukyZ!SEo?NEQE8Za<{dgn2{XCN|8nRxZ25wBCHjRM7+^ z__7~5@&G<-ZEMUmS0m$v?iLxVW{Gxg9u%{-WN}jsv2RzQda_8z2{Yl!cU+W)<*f34 z$vci-%ZbJBM85wH^i54Y1@6WMVRqZL8LvAfy#~mLKU9-6ix^Go(mvlSuLQkr88D)> zv6XPKdYnx`^m^2(X`hsSQB2!YnXs2q5^Gq#IG;#;3|DQz6kG0zGS#AloYWwH?7}a< z@x|3mO0CsPUFF{&aLihMasT^EE1SDLjz;mFnJlmJC_ej_Vnh-of37h&qjLQ10zrjY zu&2F=UQg(UORSw#_--M?u|j*KH8>5IaZ?II#?S2%HG5x-#;N7->zuO&_AyezL52bGELa)Pgorlz!e=Lz3tkW<`bLQ zFc&Y(22-k1Sh@8#5J1&mlyLQEQ7?7-FeU!mja9We+`$RUc%>1NhD4hFl80T>tKXPw zM)}YAFUL)b0ytkLZQruvMl=R{#IQIS<3_f5sC|}X?zLm#C_-Y1YcfjtFubngGH2x&1v;Uj{ywhd zWAC=Q(#W!zMwN5aI!(S)a99yq*BQw$1E^0vOZr^+fhQEbj)=5}l+tjo%6sbg8P}^K zo~@SJ(83O$p9ub74_{SnJS~;D8WQ@peKEHwE|fsO+?ev4R^v%!r&{^LDQ*a?gOC_#1gUyOj8dHH*T?|Oa%01LDH*jD=Dt2oeD`k7}ZSKpR@ZsRe zvRAJUUmFve6AucLueK<+qb__MFRI9HOTh970bc{(mO-^lBTh_*ouQVuX63c{odi|} z8XprRXWwNyqpG;nHfZUGDC3+3T8*9`r-&z5Di?}K6a;7#N%lYvO$MzM$J-BoSW10z z2!=2RMl?){_3MUg8#cy$xSvi?+c(WOUTpg$+;^^vsq3k{%4=FLjaY%aXb@um^5^$L zZ^f~6I;lZjoMNga2!iJ}q&gbu?<2IG?+pMrOBV#kVk*$q1D_#XeIfVIhm^Z{2xn`)qYe+15T;ys0i)KpjtS zg4jj+1UgGwsdP}by)}{4!n}JtUy&ay03>hVEi~L4JQC4!N2N>j<%z*}1W$v9xF^4K zS()0&nIj*FsAVg4dqOVL9O$?lU(Li9HbtzYSfdVYr(=tg(|P|J$xknE#P39Z0(tc8 zx6X66P;^d?+2+i!GMqU3I8AvJLVnLEa#fd0gb4gBy7$`(VF$Rlt;PLYDe2C6qE!5aaj{Oi8J><~-u8c|sry%6 zgO>8@Pk%V4d-AN}GebPCj@)agx!ZC&4Ni#HS|bY%zYa38(`)x}&AtmnmY%$o>WN^> zzxVoU*P3_7xhJ+6n(RPfR1*ViyzTBHewujJQ?@^JWlC)E@6~h&)rZ~hcd1;RSZA@^ z24y{V_NgafO6gknYEDWf4}BYTEV&t7tMvd%lX!-^{bR-Z`z_T*oSRu53zTw}*)e$7 z`#_w9?U*5Y%{o9vZP`D&a70Lqt=Qq?%M5j8%xv2L_aOD>?Gcf)16J;CSk-LXYeE$3 z%TBrc$%}8=Pj$bDP>=QU|2d977$cOE-H!X(8&c;`n9YojD;J6%_)ZPz#VeRk`(RJR z9rLVQSX~XU87DjT`)nO{MleQ2cFp4T$b^WM9GjJH(IJbC)@##F#kE$vo*ds+)k|(6 z$}+J}D@`6KMpuE~AbJLCh2%VI<3#D1HiXEUsKr6>Ag8sKan7Xj%(hPTSHz5T%_x@m zr~GMNfN_m;&F7=?CjkX$7yQV@AMbmls+a}`IdOaF(85u}Js)McD@TE-z-Uk<#kGhu zh9OKWygVwl!+ZE*O1yveVJvEN;ebu!nv>P}s>@q9@u-Uvc7{}0%`9}TQ z)+jlfVsj(rD6GPl*@O__F#SCbpj6KT%vCs+l0zfK39XkaUv&H1KXkqwY*U$fg4XN#23?w1rY*5szXk*+p!Wg zdY8V5K%T3CT9A`k77HgM(ypy?+3nK9PMxbwLSTEbL<5~$l4{VpGiea8p0zMdK7a;M z7YP`uc6z0swK*47)-y?$EG67@wJ#rrsMBb5ZPr;%8C2(P!q{hMs-D5QO1L%;JGpS= zpb^c+t4GeVuNPJnt2B+U@;a{@;T2r)mw4i1F70Sbx1V!%L}4KF{Vb|hA~y0ze^xbB zR>yUt%;HOU>K4s^DYDvqtF!a-Qz{fL0$r8M)|vjJ_ZNVCq1SpNZ8q?E6UbMJOQadimA8pqkM`IxX<=NmLLgY9j7Te7kc5&$PgW^VfnZusAD!3%oDyE`YW; zh`O&b(;>ZdPRp)s83c+`(>mq7SHuG!JT>eVr zW7m~ALR4>>FZ78XW9M1}$nKX`d176KlTUt*Fm?OI{+#HZk+7n^8ajh3Vl~O}l%|vRjx#Z2j^mw9| zlCo6a-RAI-r)IEEBWy`n*WzbIAor829Icb;c86jwr+ge)A?4(1AqR+DFB_ue zKkFvkIQdyKkYqq;w+&`6TKGJfTq%i)9X+et7WRHwHkd?_4fdwIU6PZV`=!7l?{Fn5 ztnMWYGHvQ>GL_q2ryfznc)rkjd2uXep{2?f4g>G!CEe=HBT^4pr=8YvF-UoOyl-e) zqnp7~`}ahI#M-Od9=^~Ka}qG7rl_vxr4*@nRZ(h_{S?xXVpk0z!s|gZH-itj*d%4J zV~=uq6H;R!iuW)a!x{RSdF=P5yaPhR|Ag;PKj9Ui;y_v|DL9GTD`>j&`v?L4#;;79 z3?DX$fm>P!RxUe&zRfK5QBQK`|LD1pt8vc_FjNR|Cp1OvpVHitMO53Vw>S?r@(dJ3 z3h21>F%`l0%xqFx|cIb^# zIKzY=i;3m^g*dpjf@eePMfZ1IXPFYs-Sj>03D&5?(;PxCVwHaA*NGL&@-^EXuJ?In zG3l(iJJ$za8Z`(=8Vpdzt({!WZ;N6~G?xQ-`fLPuVEKqWm1{A8zrF8V(OyQ-$KRQo zH$fT~%!N38W|v0H<(=)#23pV)SNB5;s`_Y%4K@;q!ktm+!G zd(1vxc*>$r{>xvx+aRR9IelBL)9&ORZk~E_QWz;1Mv(n;j z?SqWszUIf*Utpe9pxJx!Y9>E3_*@ZkJSR+HuaP;Jnyb$*uZ!%1}{No{j@Qj#r*G z6;#sG6xt6tvRnE?SxsBuFY~}sCDU9l*v~xUpWgznmWATyW5?Kc^oo0S#L`)=kTx;^ zbckUzY|B-kns-Of<6oGOSjV_b3j@;{`dJuZkcrwHgO$pd*gw9vhVY%MYUxf=DkQr@ zXg5J|=gZ)E=i)g%>wh$U z37$J<9iL}%#P`1y?p=qFjLqqNq1di9edq^U`&xu6OqHt;W@j%1O02`>~2fk4LS- zs{Zjkp1-y83F(Gv30l=!O3X+hq04ft2%g>ElomD=Cueuv28dH}%_A?ij!m-3u=g-G zWAI_I|Lr#S(emF{4-e1ex@veKN!_&1em}bZ#D$b=*5ohy;7=e)%cek~48CM?pVznM zV%qY+yhIlMYgy%v1+gfol^cRU{nc~qmVIik*{y|Y(7Kak%jYV&xHUQ1w?^cByek>) zsIN#?Ju0pL!$l9=)I;nT5;mHR_{0wi`?Q$T7r*bX-n9G>NP*DF$(aTT15? zGJa7hOoTavr?_8vRMD>L3&UsIxyAK9b!{RWHZD;zHgRho`i+%3>Ukfg%R9UdmolXF$oghoCT<`tH{=${SfNQ+%7_U{YU z6{%CFc$CDU-`jIqMVn5sTm4-9i`OdwqxMFYA{v8S-N(EF^CBLM>3G|XpZ4tBlb^;? z(t#V2N3lnbReQ->7yna99<>$U%(Cu&S~wJ>#8RVER%{GV{q`SZ^hnZSYO6@kMQQu44%O*J*}I%FH>vUn2oBB z+>h3>x%(|{5>=?Z8(_{s-Kh#Gzak90X(0TQ<+=D|UEd}2uhd6QrV%&*?-J21kIguL zo0Y|>HLAkaVI%A3B(s*aT2U%SRv+yL1q`A7+L#?>2d(&4ds27DDRR>ntP~imMJN3r(}J$B2WhSiML@gcjV-i zT?AGJDTN40$df4q<2*H~v(8M)=Y3Md$kbzD&TnMDh}iePFJFsmBVQX2+2R>i#2{k_0t}zm z7-1>f#Th^>k~eB$XH4c-8aC!tp^gTLP)ZobOU_RDbz)PB$teL@yX@yv8(^2RPgv)g zW)6)Ken~MN5pwY9f$h;|E2DLT39k|%pZK!P~EhBh2xPGn^eoQr#sG9Y05h4-4l-%=s zU>m7UHpNkc_+EZCz(C4KsMh@cZnmE*rRTeyihn}P&YBZcDb`T;%IgDuT&y-axU4jP zMRJ#B+Q+3ve{w2PPDFH2_;jc{91OfLe?&(BdKu=|HK`suOREZirO)z?Gy=*;=~v)?6oRW|qxA*>!NB|IZZ>e|t}mmv(8eu;8_ zTwz~e*Gx4jEX9(5BL>OEwmS_U0WUi~9R|MQKL5&h&{NKpO>jg(y8Y$I^v0FYPqMfQ zV>Xe0#Cr?Anx<97QlERw7cwNt_0WKIML#@$m6!Q~!)lJrbNSgV?2+C=cG@`ietyg>pOBbEqmmy$O%+-M>a zNV|8>!i)-EsigdX!aha6e?Iy=;xklgDQlKf&yH(m>H;AdZTP>u+!MQ?6h@gSyp57{?r>Txer z{M+ZeFF#4ax-6gK-8Yi%7YGY-XQz*g(^PIc!ngPuxY2!gP7h}o;vQ2b1=SRx1*)$F zsv6cRE%1p&mNa?HIQHb5!y|U&P0lwGyvU8St!gk~n-?Zk7=Nd2>wWw$i>g|x<_G@y z)Iq%w|7K$O9ZT>~H1F%T^E{$uy5fyV6rX{_4EIu;4H%<(KHleokF4pW=~!f?)>4<7 zaAR&8N|x=myc?fOZYqjJ&1tcVsM|?IkYw)~zmvHqb{6)MHb#613PY)uw5FvSD*@Shzs(@i6axoW0h7ljOR_(nicoPaocWk z^(v`|+7&-d@}11@>kpkLn9+Ab`9wyyKO9JeXyGk_haUcb-geoUbspUW6CPIVV?o-& zAH*m6fxm6(^GY}i-_v&fZG1WUZ6W?yoC#0-zkq+zzo`FEx~I|8tsO1d&mLm-nk|$J zKXawX-T9MGwdEK9ppS!EaZ$zp3~8h&9N91rhm5>BB=y_(w>|I^Og6YlTVLJ4EHb3s z-kXl%Dy`JEH+)6gYfNx+$l}?|?KiK5+$o~U*JOjO*o$*yu)XS!8oA8^f=DcnbSz1* zX3f3190})Nj-u#>OMi|2dWXtm7KM**LnT9s<9Nqmsr9(|z@Rh0cQ~rl0C%r9S*8{} z_p|W!QZsDbZ>Tp_sRD4Ux@_T6>|RcKmzDW={Ii$jka>)9W+}#MLm?ajl8r5*R%3eO zns_j2;^=&X=A<1Qvmr0s-D_XpP&%+pbf*@^vmST2MdA5@yA(N`V-xf3&uGFxI<*7J^i@L_eA5MK_x0O;!`w`?7Lu3QuE zBzrMUc;O77j5r1PtE^gQrP-wlWBP$numu19hs|9UhK)CiTCE(dT)d>K%yr6r7P1Sp z!wmCf=%bLw%E~b}sq*XZ8s|N($p>?XYv=5HeZTA`Cj%y%hI!e756=#bYQJ6~kB$)~ z=25j}T*+Q_Gw1)!O6x%u4#!EJnCZGKItm!%#CJ?~l3b+mi?&evNn5gJS+I`miQx?N zF9?SvU<7ufWFTy##(U;&=B=0Q*kzp{^U>f*$1YhP?f3{wGkgOzuva}pb{ls8mMpqm z|E<+ufk#c*6oq60YhBw|Q(cN&SwR3Q>Z4>RfXiZy*B?Fhg7wjnhArpx2pdQ8{j5!U zRy|s0f;qz9<#W$~r{i)utdU{L8Q{IO3h>^s_cBxvewgtGKoGnn26x_IMq2E_(}JX0 zH*Tf9N4dGPsp05-QDlUr-wq(?QY3l7$4{)J{n9bgHCfi3sk$W5|0{lScPn!2fu_cz zs=R%7T*r;MQv4d**&R(Nf6n*_u?Z?&+BRzJGCM+8wD5sag7lNRjF}gZob!Fl%VO^i z792zJeB;DMSpzKJ@F#q8<;joxVdFQmd0(TG*@~o@cC{W&ThDz$>w^ck>Tmn*aguG# zu1@5;%2pluqTejW1Z;j^IF>#{9VLj;@&oL6cI3BD*MMgdXsw}4nDX{%ll`cKXKY^Q zBa9l_f$=9Miq)ZI?_-ZbH0m_nTv9kyy;n6nf5RxN%dwCs$3r6b{EcYO|fvFYT zt+q3c{eCTpCU0CUfpnWC4}mDO8jG1JI@D&#qVaW_S~?<~je`29d`bTfgW2J-49WPd zHj=6)?s47h&?#HS^2FI-XhghoTX2ATfMsJkOjXgPpO9+O5Z#bbdZ1?kd!p;2>+avk zq?ZRlFexwB0j z|FHmBOc!I)%b5uI6q(TxZN0O)g}2LAc6JZAJ>KM@4E=dK)UqYtO%!N5XUkYU=^=k; zu44%qp1yw$$DZ1UM{DCgSj#9$z9YzgunK-eNfmd$QWz!nim`4@UZ+D?DKM+%Hd&Hy zzCRFAH6iLUK}KtuUo}`4#J;y(uzWJ3^=z_tS&@=XMf?FxwDv{xWkq zSk`R&kgVh}r>JsGx_)|Q%z z1v<06qKxm$8`tr~=pk89*u6N&p2> zVX90s+;Z>rLJYS`#0(IFMNaaczUV9)<5MV9Qv7O_qy_l3mA`o=SUu`zVCUVu6FWzv z;ntSZ!&X?TUg4K(ZMR78s|(=N{U@PZXieG}^7bRA)X0p&4zks^MdY!heg0`dP2cADy}ARG%$4qM1Xg*~w<3 zH8T%(F+tR3aH0|kD-NUa2t-2WLztGXX4_v+Xgx`_Mm%UzCZxI8s^j|9589_)cWSp_ z)j7nk^mU%EaU+?1y=cC>FO-Kl=a2`Sh8L^&PzdBb9XhD{n);oGVdcWjDa|52)3G;7 zjJw8@H1-#U*`{^VL;c)yPB}s4Ms8X%IvT?+5_HYc?TabCs>_TW_dYA^Jd0Oe2?mCcxd~HsZA(%5MwCg-fXM)@HJeh5j;!rtlzrZ&X@)VG5aPK2G$B$ zzpasyKf(C<^oJsu#qp1`j__(-3_QYQ2fpB;lYNtwDQ@j%3RVeN`6||Q&X+OzxOcaD z@rNn<3!JP{UZjCo9Bf#4rtjrqFxlcPP@KleQMB!7Y;lix5Z<6lm!4cbemr-$`ZGI@ zgvqp>H&?R4uF+z`l%j=WRAym}G4W~)w_ZbJ=sV`pY3`ZR)9!zhQhFPZ9HRSYmZ|-V zE6nu=s56kC!^swiEvdJB%d|Y=Rd;}Sltmer6nCiFx~%W)V!%m$o^|za^(Kb%b3$4# z%my55$nzJ7RJfr2Q8B{oSlKUWD{3?e! z6f1fESnZCA)_ivek6_NCrzz<%LAqC!HR=7kj|E%2Yd$8~k`^nI&H*odfT8l&-CRvE z0e3}sP5*cqkLvhThiUf`RxB!4f;=mw3xE3eM|vf?$aG#lxa?mNVVggABh7MsdyqOU z^>eBO2{Kx{@#&TGc8PmI7oRBTxchk8_oz3-ETXrP+YqM0BbcTttOeRQ#nG1YS*%V+ z2SZIp;5s(a@Fz7u1L6H3NtF9QOaQF@kMCh!l$VTTLZ3B&lso|8EFvXI^rvTuWEP=3po$}?cs1NkrH0*6+w8XO=IV8kq*j7rbHd=Q^<$zPJH^J zfkHgAax{gC@GoRw%_XRYMQoqh)HgFW#_$FO*BX0RPB~d{VQa$enn~o2l&FbSO3Bb= zin{?43Z4=G_b{m+b-8`ep6BL@(8_R!0xMwGx##4)x?ggdxMY7jvRI^SdsQw7?|MQuE57_yfp(Vvp!?czf zJYs3vYNt3<`XhCy>Ol<0%Vp47R(t}5j+Hc6FJS8^-bMZ9Lzs2kDiVj^Fk3DNIFme> zO%wa6Pvq3mLm<*CS~|PZOlYBVb}JA$D?59UkMyb}nlQCPNM1u{%-{To`t8kw#=6_C zU{BX*UsSXAzE-Tj#{Z}umDkN%o$5XB9c92yT=?zc0P~YV=J@{3;9meEsUIWPw z-tuJ^h*32OKP}=Just8>9~6M6ECBZ&Hf5d=6^7sCNU?urxDd2@6ePN)9_|$Dv#Z*z z&cgq@o|#N8S4BxZmcx^5w7Hm%%>wpULc5Ze0EJYc=MiKiuf%u+(pJQkXNUvg8=z;5>@+5X`L!2kxKnqNd&@5RTB zyg6b{t}CMS!UCdf4~!7!9-D+9|crHWc?ZF7@Z~OFfx5l;H=;#o8&L zRDNAT<${Vl=SNR|VMe7|dE`1$d%R+OokQF&<34H>U@fHd<&&1|c^v<7B0Y*pEqG(Y zx@LJ(q^Vj)mjn8G8=(<@%>WNzqlSW1tmM3d=-iV)fGVt7@E2KtwdTe9{Ahtyz;vlf zHmAQNHIRejp9rmvP)w!I=}|qmGF)U`v77BEcf^UP&8d(ma8OO)A2=+%2Us||vPz6} zv}X0t-3E!nTrxEX+E6AI|%9yBSIC5bk9hPNhT+h8vJ3eYyxFs^!nvo554^}zE8hgRepv0G;j}NnSb{2 zko7$igK(AzXD*D;_~-DaFYh(O-cTJ*N30b;;5SGzFSf>D0a7!}`o9lSPt+#LVq2q? z*nAsQw!&~zluw;Belm17FZo{+Pv)$-e%%(J4S|k+$aONv;s`eAT;mO;3jRh)?d)4F zrq(pT*<^l<*lY-icY_lRxW@+0z~T~G>vk#YG9T$l<0A~3dt0)eVehnRjzU&&(Ulqc z@eD{ayLxV~XDH(IW{5a!=lf~xl98$u!snbe)pktb-du`T;Y_y6h>bQ)LlQL@-S%SM z$2^;aYhbB$=h2YE)p;q2n<@HG4ade$WechvKg%b*s3SqMvdSx!M6=s6>@R$lUx#v0 z!XfbDNZGY&Tl9N@dRP&;)(ttQ(vXg{$fk&3y`#BfmenqbBm?!zV>l7wi&dv0TG7OA z-vw0VR;`cKH1cYqVr4^`ycXw$7?l)wC0m=_PiW)N3QLb~Z>slLHlLeopf%k?TNI^u z2JAM?2b(};MZBrVN&$?5eLqS5)E`}p?R@nE;3a!xJ@Ffhkgecmf;f;?5FmH#%<2d3 zHV~`VajvUA4?uGwjv=Qq>A>MlS=pa>VlI(?i6Iw(7Vm{}UomjQD=(u8uP?unVz)tS z2rNz617KF~47vYZ8 zZq~^xG{m0g&ZjV4I0pLaZNL_zifSS+j4s(cxamjH7pURgxE!iniOAXFF3KFWppTb! zauxQxz2C^bYz<~gwGY#=r`X*{;531?gK)MN5{x8gnr9&tD#to$^UL96j|U ziwbRtLloOpVXFaTvwhy#VnhCZgNtZ~ppRE}vLk}Yq~D_zwB3&WNl_*FuXkV{N%TUo z-olmDL!1)2V1>kO;qvl*m=%@({AG*lj{3LQ*%jKv;IWd|e@~8e(zsb5e1W^juQ@gD z9T^L3`R99iE0BE5#asGG&Ny0#sFE@E16mA@^=ym{h&9b<)uXwymX2p+Dy-o_JlUaC zf5)@Yg3UUU4$Vu_`R;G3Jd!ZZtGnB~{_}Cd|Kque1}_8%^8BfI5wc|LbxK#%J6dl( z8E6QMQoNLOoZWffekMB5T7|v0s|ycl`AZu(eLtUmh9(;t*tS*j-(CVHCEM zbZnh5fnMKeM=0#1rKV=WLK7%#RlA217v7YA0FrnIWSVEOrY<4p^q7C>D+*&)grdQM zs0`~Dgx>?}J=X3gW|lluxI7b{fb9c`rHo`lwgpz+)>Z~y+g9`VEv?KDekar#@HgQ(?Ho1R3@e|4IeK%KrAt&v68awGY(*P{ec9~;Qx%!J z=8=UItTXd2fI@LxNA3wzI>l6Qq3=OC!>Pt@SIuhgRJA9zRambS*L0RdSJ>fMLAJkg zn;){K0(~mJ%J_dBq6Y!oU3)Xi=Mwx|#>ks0=rJiSw_nueg?`z-63(~HpPmRAtC+FQ z()AbQd8y!ctQhn`x#u+R6;JrW;q$C~>^5;-{j|W^kK^2#?}KbE{stynPAT_4_e|N^ zd)XV7dxcFs>4jRV0JY5@U0o^yQk^_42o?YXo%`nn9|}AuYryT?tL(WPv#XbUn^#Y> zTRo(DD2NrR4%rs`%#Z8W>}B`h!qsDWxCcy}2-`)SKpgEHn(OYt#3M|8=a+ykTot0u z* z7bbrzxQ0w}E_P}IOI;O=6~Ds2Q||1^hOTD_cMG}2aaqUqWXw#L=Dq@zK)l4b1!9RH z3lg%&3d^~*`90bvIov@~g8R!y2}(C}gpEog=e%c=3w?;WsE?4=od^p*E|hJmJpZi*r}$48H=BsjflhU`0LfHVXbA3GZ;FLwF zTdLwls-SZU=feAjbEZBsCG+j(;F98!n{w(j(4FwLRF1Gjm@Vdp1K(m(VK7F9Z7Sx7}m5L9b8Qcf*f)p!+Gre175lwQC`{entL zVe{E7SU}Nj5dTj#l6atjYT$UkdliqP`E*(h`|ifv!m)s(i(uvM7O&?X+dnqiB&dWQ zpf3+20=Fz$X=VIOMmb87SH`TO-rZcHp)f773;QCO04xUyEq^h#(Qx`Z;ryo@=0EqLhA_fUNtaH}%DXR-V(NEz6j!{{HQr_s`o>bG;_#r- z8JeVY$}BYdD4UhG9-Hmk@%AbpfCyk1zx?8T@`C|&t_QAX2$;tM{8$#V%A`vy}d9Q>+({{Anm% z`EA=`J0Qz*$1#sli7q-ggTCyk#GrSdy*0&Q#X}(oRlF$cx3E}-UN7L;GeI`08`6U_ zp7J->k4HI5Y%c{jPdccNKVkFuHg)}InFVzP^ZPf~ruJq8K<5$^(*Tw~Wz95O6IkBT=+EZv7HHXymKr1CC4uaxVxFh`j=Oo@y zy$*=1M5q{l*#U3`i0x>KHTdTq;toot`8jGx?9J7E6R5li&48&Cw_qI-IqN*ODo@}m zX9o-BT$6*^W?7FYsLD3-b(ACa&u1>eULG%pYoYVs=GMb*Q5~v4-FU0DhKhxJo^_SJ z{5gUUi<k?PqfRaxQ-cm!=~=DQ10fGH|$hVY8lh!JgLTsAv4D_f@yXT-0%fE=PPl z-6Fx9id~zN=T0)Ly1$ryHnA#Z|Au**N_6`woS@mwGI%dVH6Nvj%1NBZP)4CI+1mZ(yT)DpV_`8hv#yhPc8$;^kJ29fYN3uLx;LltQcl zt8i?I8SEG3BG`0b8+yOK%PJ$@c5I(_#)}AEqIJin<3erW*Gu8;#-GbU!>|^9+qw1( zSAaUY@A9XsQqmaJzI<3C-EsVXPEio>*01kL2g$YJQ0m97Rty_3{lnf@LDa5Q ziMVfIW~+9oUqV+P*i+Fu>(%QNEJ+GUpX3*9i;3cb!?~Pc85ymd_Yq;tUiVm9%~wV1 zG(t<E!{8xv-=_9wK2+8s{&_$$6c_1dt+R-+B?p&CMDI z+>QP~(QCQ!CP4$A1EYly0Zvu>JV=2=IchxCM426VJ^#nmTeii~wb8affCRVT8r-#U zcXxLP?$Wpu0t9!r0F7I4cY?chaCdiy-Oszv`EbrZSXWiAURCoRb5!!Rc*jq(l>HrL zUNzOQYfrJPQ&kOO*&JN-$Z`TZi6-1u%yWS=rsfZ35F1P=s zmZ2y}Ps4_pB!1cLC>qIzD8>OS=NO#nj8SBO(CM&mxLqF)1w=sW2ewY( z=cthV1e7Q0E*CvCuJb>Syd|;4CZLbava1K#xCx4wuon_<-`ie}*)iq(uAx3!o5~f( zgNxEqd!_zjccmczV;nz_|<>Lx&JRp&Ver_>Do zR-%;I`ub7Hp)c_-->2v5+?fDFvw%mu-9uAe#$$CGrhRzUT3yT zR$GZbn?&<^8`=WMAMAjg9l7vh%GR$52Wy#5k`&~D_I7Xhi9*GS_EC@X%Q7sGVyn>T zMICQ3@lggY$oTPhtWVt?q*jP#jhKaXYcAJY8fu}S%N-+uiOnAxlkerz99c<=Y)nU4 zvCaQ7X^=G-*^bc)*IB6Qm8X?lgB&*oDgpJ%i2or4&jqzHew4*obTqa8UEZnBEFlWf zs6k3eg{LV@0yJd6XV7|!|YSLexDpU)fN_LP6U zCY9j*>dC*5-wOEZ7!|1{$*6%|jKDZ{SFb=WlpnL;Z@pZ!5OCK)3fe+JHAG) z3FRGj(Q5etFg9ZV32XCX&t`L{-955b4Rema-|)Ts-n!qg(y)^7Xv81+^S0_R+Q4N& z3yJQjSp$T^7Yteqig2a5ssDe#ijY5ESRP*3RvN_1alncU-deW{Gi|ZM3qwQezw~Z- z&o;#q;z910hD?{=w*D15pASB02y7EJtac50F1oC|=7S?j#YOM=W6*mA)^X2i!V=ei z{SXNmxFN);4u|L&gz1qeNPLWc3};VuG)F(LK4CuZ{gc^WItoddIn$7$zrx?9HV9wk zoAi{5ufEWx$6k>QF~S$|acb&!8{1i#v&KL+;+OcQY{8+4B@$dWJI(K$Rig)BK~71&v;JwlORIC7Z2C3;ELT~(&~S{U6BUW$ z6}6^kETnx%km5n1xF|85ddlan65w|sG{Sux%_%+(kKFH+3s3AuJox?HvSFyM?9mOD zNdLQBZhdmxsA}t5h;z4no<$S>1l*|k*V%qORB6affDEQ(pBr0VAs&>i=NsYV+wHr9 z|Hl+k)#wX&hram#P%Ie7Zl!%B?CfQg)+va4?;QZ`L=Bm(+_@kCZSksP{)3WfA$a`d zC;>+`Y?NxXeyFHc&*u3;?>oI8wXCB!(uM=(T5qGrmY~~W zgPYER=m=F9^+|wv#yu;!;_JXgG>?E0f0hD8qHr;KJFU3)s7HlM0!=>AUZ|NO#o$*? zi!yej@RGvsl*)EhhRLAC}fSVq^nyF5ZbFV1g56LF;^iFoDvVmh)FOw0tq z^n&@$Z77HnMb;d_0^KF(yU+~HF6a*GD)ii;T)`ZObL?FuY~Q;XI;@_>KE6fWz!)N{*~PEWfo&&j-_ z2sO0^QvL&%r?3npHPHd}J&PNCg1fTu%P)>IUgfhI-We&NdLQeL;+SU&mjX|a-K6~W z4R=J+V`&?WU!#ymUJ(9D(e!$0D@~ConO6K0YXtmcE_Dj4y0Db8hK!FG{XeA!)6qFl zS^Vs3&-5RDzHOI4FvaGH4~gCW$58|Vre1Kyxp}0@8Di0v73GM=KR?&#PKN`H!_%le zdZF2;8I}E12ecuXelNU2l_GQLLI@=dfyc5_LGH`fwRd+fR5{|U^(S_nC;EpI1g0q$ z$+t$b@+eaQB0Ir34b$(Ze_Jb0a6WV!xy_jwkHCg`a$T8ex=8c>o_Vtd=@s)9_T6h& zlndT|#a7&v%Eq~ouGlS}A?w8)nP!Bu0-U;LWZ-P=m-Q@27)g}S@}3L2nSGhE>r+vC zD&d`0XSO!zN-36!0S-4D=w=G%4bUO0BMJ^Wb&e%qgah8V=uf6aEwmIt~LOXggv*kO~oN7V_elJYdB0z6b>?b6D)-A$EeyAy7uWIqm`-~LCl zR2mlt(jOI_Oc{SWa%g$CfY@fd@xpEhw68i(ZV&Py^jSN+@dxs;+hGN`CQaTac2LxK zeqSr6lN!!Tdp3Mwh?7w#4Wdw)v*|N>=UeCJ?~uN6P(-AKUKB)edi%BCQw-2Xw7D%! z19W^qLQy-#+b$&8heLVy8m?Zm@83=W0^SP3gkOU8f8?5Ey>!s7Ng-48n?-LWg!#m7 z@_3jKAf;hE4*v<5_=x+%(yU$;GQZAkohi+L5L32iqI`BCgs_7%NE+$>2KTmbABG3~ zakKMKEFJ9jr(@%EAh(00X&*%v$8pvL){VcO zN5Z`!K)PRx@FW$=IO@4KGnUSTFK^d6pLRPnl43W_C|i6@wwa9(F7ITr!;gFtiWt$@ zBKDrsr0dif*+p+Ll7zJ9NJ@hmSYc5Ho4MaDLMe%Ia{1qiHg)j+DP5b&LB$)TMVhc= zdAFT76KTNGL#MQ{oA0va8RVIbyBzQjfybIFl6&P6rGACgHlGs#Vd8g}!swd=8OoER zhsIiq9EGe6=2|tAZw|aSSBru@1#Ou5>7T2j=_1%OFs9Fx8z`<@@p3O=Q)I?N@c)8_ zFsiLe9ps&QO=J{|T-(zTO-DNb6q&HtSWuu6^1<)9CC;8CM(v6W%Gk4(ltU#uNy3B~ zl}WD&t~9@FzFffsKsC4;#FMke2>nMH16%u9vb? z;_4b+q9&1#x>5EEcAq18s?l<7lxNoFHaY$zRiNdKzH{=IZEO^zW4f51pSphndBPA^ z%)Yvs5oPrBbkX$IP9dr<{H*e4@TV%n89Wi5d%Ca}RaYMho*)(TXm zpw6$cz=YAEWC#r}RWQ51>>|{`OvL>H>epDMn9_7>!rgcp4k;u|HglB042?eXF2t*x>Z5IRQpn4pq_~YLs1A|JxVxQQ+)E9CbF|oVBQfbMA+s)vm=pZyS`~j zgZQvOn`eXWP14anY$OSE37(16&rK+$dW9aGHwJ~g0eLp76BRKr-m>q!CFkK%83Sy$ z^D#Qo#Z}c=UI-_aONcn7$5sP=ZsM-vy^GmUKY)FmB)|1S>nn{H#-_6+BthuKS1!6f z-N^EDGHq3nR!x$*4Dku7B8y|ce%x5KRX(LBD&Oak=w}lC%Kl7%Z3E<{KGAj{^;oy& zab3p*kKQRMNae6A0LfcF)gZXDoShUZ=V6lqBssYrk@ff+y2(Q-A1&-U$lhm2-&QE*p^TnaJOf)!6WVoHZnXYf#{=Fl+b-~y(s z-MB}uUEuL~XV@OyY_=U4yXS9rMqZr?=nZcLwBgAQlJBsvWUZvbHH%n`=KgOHU7_9e zE4$x2i|zX-Iw=HZ23gOeK$0#gpsB(ihYlgXF>!)G@pO2~&a>*UW)2hsTjp0Fy4}-X zoMBk#qNg8u3wA5q1*F@ApcJB7u%z% zW_YJqjaP$NRo#`7DVtZ~gc@EDw_<|W%a=Sa;X7_+-9c}skM-`~!z%t5ch!b@A{K6@ zqqL^d&viGMHNt}I*dJ0c;dmTWjX$78y57X1xl_LGv=0VGCF)=eHCJ5GzR^v9X$qs= zLGC-DEklQ?Qjc0O%GWh&2BTmUg22hkpMPaQt=yHc|H`$>5){ZKo6&oa?GIR~mkPYULfh_Ixq9%IrGXUG4*n~sK`ZB& zq1JS2`kc{lz88`WnYg-n6*jbJEr0M5V^i=BhV3d%xCE_#*98Bn(@y@a9yX6pP(GJ> zqNP78R5bFpLZlfnn}doqQ$nc1wUzkjx|KNNNNUn9b)t2+jyG=X(V#KOE<2Y$#xyi% z*DqcGji!MY;=%J>+?8;M>TKL?r)1-(ThIEL|QHycC6_8OOpY^2^5L#VP&{1IUovADu z`>;9cIwLHjC9B^xz+425pm@5t55b*R8>B!bTdAL7Dv^#_z)lXq3^j`rqxbI%vxhF8 z%m=iKG_$2AyPwi$yC^>n{ucx)!Ss?HTnxg}$H}s?&0!%n8Anvp zcpXlm6`~Zpi}|y3!1X#5SzYO@Ho>i#m2iLOUq|?+l0g@I@Yg6#&QkQi3<@VxWX`a| zSHX9Ny0hqj8AT_SA%+~A13UO8^N2L21^}JunD*Lc?|%Q&Mx}VD@4>;u9WIRdvLN_G zG8F;&Mo-GC^LeaP`go-KBBR;J+>aH~UKTSc9}UEMvci-7w(o93l3R>U6UjVZWRh6= zSg9Nool8a6E5__2MRLSTE28!9YtyKmuCff}k_Ru2Iy0)|t~X(_rWHAxTTceiuab2l#V8@_ ze-|rOxWK#HTlHe}bCiXd$Y%I1add{6^&NGizw{T4Iih&nWMlr;tzg_x_u(1-H9fJO zEl}~5SA95Ig*HkvQgzGUH&YmI6wLlt*1LRm6!w}!4ssN4rb|;6)0-;^Z>M~(rPewOh_D54_LI{7$qFged^7r|M zRG2rndPOu2uQq@$oAhS%cF>&zMK&(iD?)t^w&$UcQP7PqCR<%x8OAV z83^$-gh^!j&L%yd-#16T3@A3d`{@;OPSN%cMBD}EXrSIZDQ^pdl(v*s`{dLGCA*F( zuopE<>CgM$I1Gv~WRN2S%)PoKa$p~3?e@AqiuxYNi{89yt2D$2hSo}Vt^tpf(p<0S zTy&oS&P3r2yvDqrHIL){sk%Q)LNcIY-R#0-?A=o*1NAEkyx!Jhp3euD{<~u-%xjo)Z)Oalb&;97i z5S-8hr>HzwQviP*P+u%9<4W^WYJ5-G2GeUw)iLlsx&naTmr`71cysPKB}x#xeq_*W zXW>adu*R}Y5v|Zday#l+aZsh5`5|;d`N-(i|T5<6o|eIe(>L_#ggL zy-oM(V4HVXAU#aypLwJ6l7GO{mrUfo-LvIZj^*0`{MKkYaBiSd(w5@t0KX^=rD4Ur za5lq!6haR`mmc~WF zD+^wwU$dbxeaDj5|A;*;%qyE2cIc-Y1RVJ;bK8+TQNgkjls+^G=Z`pB66{{k+@9a3 zWCq+jLxwYaOXZK_7e{A`bgRBD!ZYWUc@iw~4wm{~HS+Y_-gZM_WW>!xt7lW*tas|D zotX<+7^L^y>(-23G?pF6)>8IY)}^?pdwAt?*B~hUhm+#62EC2iy&vF*%Ho~l{B0IP z)!0o#*;ozWefU~Dv&LrcSLHw&V8rH5W-MjU`bN7U;tV9fi`{Ju^p?dps2<}xmN)!1 zm6{b!C3q3xA@MG_dk4-Nr{gT7bWFW-&>-%;5O5J-Ho zXIG=BtdCuBewElbW*?gReg@G)D;W*PMf6Rvom;DA1LPuxXoU{+s8|*{Rvtk>wy9`m zOj5a!4DdgAaFXBo_B#w%0iSr*+R~@0VBJ+dL(cMsuREy)Rholxh^KLj{7!^EY(B&B zAL0Y`pX&Ar>$j=1DvJv-UdN_m~$o|x(N$f z(aY>KM8A?(i>w7NzdQ}z)Bj<8KKwYdLe3kdg^wIQcx$-7lDxxPmQdd|AYS%;RzrW#LZ_ACv> z%)R=@kv91|7fd!5!FD-ngc-*9fzE^(qOFvoVJ%502KhqZjCD{qp#a1v2!6fYr-Juo~Q@9 zO`K>2Vn%zv(uR}sLZhZE9>f^gro2tYo9{O7p9GkX>Cd(CJ_}m=*fojf&PM6V>V(}@ zJe>tsF)KT_V9u@;DE&2)3aZW$(8%Rg2Y~nV*ljIrQ@zkrQjTISur`K;33iS&)Cj0X zJ*ANMBkWXpmu&snZGpb0A6HqyW<&|`O?zRt#YYb6bVr>AVHk-0w(qLI&`=c-{91FL zWW>CdUdVWed-R1d+&Y&pV zxTsH0bs}!;vi_h^EjD`F`cdG5W`2l4t(Vx}MVr{RBag_HLamN{J{qqL z6FO_2?7IFBUR^RNB@8|iI8r)5=ER~ldgYAruSC?5Fv*QM`knqXs$=ib2H;s3T_8ZQ zLho8flptJ#Rl|07B|sBr05%9A(w=Go_3rtO&d(e{&TiyxrLxW&>WRXi3X)QMbJYoM z9&b!=u}6Oqj`$rHimwj_^jekd^nQNzkfM#S0KpLQ>)Jlk3H9=o=#!Mdu|ZE!o$EiI zQdJPc*;JRtwmk}9SX3&MxGVb(n%(WE`sZdrbgQ&$5B!Z~*$5qHWu0f) zQlIv&ET1_-kI|Z}Y+gH+;U1T0D~H~E2!~<6VJ+a2s8p7{n+;MmS4|ZtT#FR8M!I0w z7YEn72$Z!Z+z6oiQGJoSUcK%bGN98f4xW8wB}KvYo@kvc&F?ezDxDY%liKL0>!dFL zTnx-Loi$BgC6r&_YD}GM{qME03{E)ELhc)|)i4H)tt;Bcpy7#YZ-emN*TE6Hjii~I ze-txkDP1-_$y8|*H{+}9X*jk1ljju9}6;#QDTK|AWnX4C6#@nE*q7Z z8!^IEH=8VR$y1=Ik5i}u2D~oa)e$`@JSFD_p#^eLIjYj(jIn>-qtrCP?thOC`spLv zew6`VS+0(c5jMUWOR?XpVahUENBSN5Yae2R+soJeu@(;)cRUx$DUHklB6h0MpE<8B z0_yOROR#KDPX6{Aey4T;0^OM$X=ZYg*|Oya968u094PY6DRy?-T*5EEk?SW6ZXC*@ zT&e-&%tPJ*et07g@r@5%Frc|K!d2TyZCOA%{=v6QW>2xg+AIrK+eNq#kD$;mHKLQO z@XH1Tnnrvismoc*@q9^Sb1+dUpP)U4)s*p7yl{o!c7mbIctenH2Ic%rm&Ej;|kiXviez3 z*YW;Ho@kc4e0$%DHL-t3uT1Fz*;L4X>5>b2Q%?S07C@6EFAQRfyYF>aKNW5kTvJB; zmN(xuajtCx^+KU?7SQrZq~A(BDZl=NHTmEPHBC0S3RSS^+t;o+S|5hYn?bj~{?|e; z!?!7ASVM=&JaZzcXLKvnLAv~`fs-DLQ4l2=jKz!UzGyphMADs?AOVD&lsFD=k>#a3 z%2^@_4M~?vk@Ma%Y(msFY(^~ebS-NXe}0nD>OG)6bxer%hYn#oZYD5?9yb#!OMD zz{G$YDMkCFj|2X{00P39?v#c|nxM5SJsCUDQMn^V`Mi{p6x-O~)IX+dbWUYbM*q&KSIvo7HJDnHx6{ zJ0Fpm#cyBWH-i#!RlmuGl0FT3s)GYJ5qv6|z~oS)=j=BsV;fosQzy`v|GSz}P&`Xa z1s|j2(=A?#>5&6fTaHHZZE6`{mqMMk`3c|JGa42xhRt<2shXjKdJeKHl6g2q zX~PJl%0^9S8<=kxe}GTKF`u&>V{<$H1ylj(Cv7GuegeGOOZx-c%`*S0WSccj7h{z5 zc?T9JT7JnJ%?k@nheJU+NR8|l5{MnY;-KIB#3F0gSwEG24x#GSJr7+QW{KNKS)8A>-5*u{g;Hi>&T5$~r(QMw zBXJp30m$!vu306qYHjUbU7_ZO?Ixz-bNA9sR8Lqna`y2w4WLdg`-Z>V? za^`Q{UIEM{g_Q@R0~*6`|NcB43af+Y*HVhrtBNI)t@3swR8zh4>-HvdBQXA|%{{)Y zIRMu^!2TOSzSyyK`+H~`FnmT#aXCk8-WPnzge3m&Z@J|JFPp z*Ld=>@K!|5>Le8DhX{?(##aX=W6)Ns1h{OBKjtoDP9PZ%K3YaW(3Z4t!PABb^~Ri6 zc>B4et`vQ=+C8P=;^m<9Ozc582>(rlFcp{@!g2Qzb__p%U)FPm`0 zkivYxFXgubdAt*~*|~;S9&fYm+?A{4yw~oHNY`j&PAAW9n`BXfxae!}b-<3~<^Q!M zzFt~|TWi2ij-g!oobIoSx(%|WX+mR)Gd+dvmmcquIk-dv4hGa}9c)x8#K2yfp z<-c!nC3=ss?PY>$tAj=qJatkZC9%H)V_k**2^}oW+ogedFFFmeV{48}B1ivmp@_LN zJ;^;Co6_JXfRKy&C$7?!<6a=TLsU=^cbYB5cO)Z(uoRI@7NfZG$Z_KIkr=@DH zTLcFb*qLS{9xd<5q{VpD1i8oY_(rI+|g;I~pe|a@*iR1Sp6jMcvJ0x__ zkecUI^ej(U(eahs&4>2)k5&%|Lx)Gfc1MmC21ZDgyFt&|+6g#VJ5%DlFGg=0=K|zx zd@??ig6XVMjZN7pth@a>=WgSCEhN57Wt3YVT}|{>Yq+i~l1Z{=p`K9Mk|OHb8qG8E zsZ;1GULoYGL(AC!h3o3+#zxsdQ~~nPDIcsohve0&MnYUu^q!jEfe$9_B>Re2=YPy| z1YQ3;=+*<@h{l3PfA3Oo{CA(EfzVt=xseorNFR+*Mu1%WRjx-Zn0Ip3MW%3&uXr@w z%1vw!pp1V9+8RzCesDcgyIOPP3)djWqNoKS3Y)Zd0xINW>zLBoK@$hn)R%M%7&@Wh z=;l+0Or9HfycYcD{4vWZb32hT5R3$(ML~nuPP!nzi}tSjqkh)c0aoO0i28y*+_VLC z&zJ+b-w+~2@xlw6;&1uPBJrK_JsT!hic*kOxTc_TOkYO*ayDtUy!~SJjx5f=Eo=)v z!r4Bc^v{qB%pJq~S~w{!NxEvnKTCCBbXp7Lu~kr2r{AK>^A_=dyLd6{+kwTSjfA zIPOMojaei;yD7&iK~Mj)g~WGnyE6{TPWf3oN{Hh{pQ=-0=W3oM`8LcH4>bZ+T}C#g zpoH6_RfEJw(pN03wRI;RDf#vE@0i1tLS!D=78m|`F}XUgAQ!kh`WivXmGLMPQ+wnW zBX%TwBH6*@2YCHyNY6v_;jMn8^Ox11;M%L{$@qVRA*ayA%ySSC1wD4ej#@||7x{F- zEEi=tQKp!6Z$pCpeCo1l!mr5q5Es2+G>oXGpTFamTXZ-zk>O8~W6#W~%Yt2YdReJB zQp5KJ+g^rR#~ysUtj=x%wlet74QJ>0t@7T?&N{*G)ug_8K>Q{wvQ0-h2J~~NEv-lf z^kyQ#?%2E=?5D!m!rQ<&u$hLPR@!H9W4DYEUTp2qNy9}Iko6Cnh_mMswAhfo_xSP( zi36^ToZ8SrkF*t-)FL2r^R8#euF9@)G5lx}U_2UT4RgBN_1uhC&{BAVXwZ-FRic*k(CJY`3@sr$RNq(+zxH?*?`wG3C0{T0A>F`^r1ny|80>gw zX|{qW^SO+$(wj)2V1o%f!9?X*!EUla1X(k^voGCVuG*-+l?}gLl{A!XRUCVuxC8Db z3f;>vW0fc$D@{Aa?6ZQjIA0+$e4h(m*|zKHw?NT1XdWvxaoi!r zdjzLa&uRaCwCAK6C?2fpHQytopZdHrQcxPZV=%u=nFd%EYoBTDg=10@ z1N&ZcVsCEU8Y{zO1)YW5@k(!V;77U(`9{8^4L+2q)imf`a6X)(&bo>zgvLzl-F3 zu=O@nH;~5w&hhhIBTHt=g7RS*PLX`pY4Q63(jm*>Cg*Zy%nz4z|88?M0{N?z6l^%>$8LN zhTH9K2!HpEfl5f_S~m)e%2&Gc8lwLb@^W%=cv0E<{mje%wHsmS270BT1Hv!g30`C4of*ti%aPX~r+T=dyt z{J4MtFX(m0&!=SDqs+qbH8z~KDiOGal^<8ryKAj1tN=1gy8?3E;Kf{TBl(7+N}y7|A^%Be^BeUkd`Z# zGvTGtCTGu#-bqYRvgfC%nnojjq^5U1XZ)Px4b;;zgik=SnGw&+pnLMMpux}6WpHGA zc^mEM?Xv5cyEtTC?QJ}(r;ZLbmJThN@v8G>S3kzLFZmqui=M16Ds95!id^w@!Y8u_U4J1*CENT4z@PRYCez7P(ax!3;24wFR1kF7P6J6z zRTrfDl5TZ(V@)wz)| zBU(DgyqURf4X@j?LXwFMtTw%osX>xVeQz9>C>`K#(|~$rygN2-!?{7Ba_SOxsBCxD zCi&YR*`ZvZtg+DDJnCQLMLJcu;9T4M_nQuqd5ET4^+Xw3?PSE@09iz@!}4J?yu=|6 z2T#VNly@y~;Cvw^cuOp3>!-JV)uYI2dqrWC#FOjCDks79I4&*nRKWm{dt%!aOr)=V8X| z-{WvVd@Y9YJwpr56Ya6c;)GmXp{zo<02>zg1-OYSgkfmQMwc@eB$|gTf74?GorPSx zYepbb!D;#t;cKIxt3Qc@QsS-k$QKyM4 zJ=MvYrbelCY2lc1ho@B=GVK*Z3!Wjw@5?N45jHDKLJdX-OtZwa>5 zWQx%CLgX&h?!oE`#hQURa8BG{NV0esr^ux&*DH;~GS68r_+Z%^EP;EgyQ*1JEX;bY z>}k=Z`!JK^ty0e&m7a%^c4~$yRDI;$=fOT7fX6c0{IYodV*9i?6iPMP=bX^a3HnG; zUdzAy3-k7F9<{*qtueLkZ^?OBtZB3=0~h*J9oyu0JT_DsMy6%W*}o(m)}0wIm>r=V zjjPRAiONHg*qR=UWXGP(%2gx>!ozC>o-g?<@?BEwyw?6m-e!Ssda zeNa8!x(BuM3F}8K;zPf|ie=}5TVXTFH-+naquQmbLXov}9# zFpBXx{_p3_*k}0b!c)05n2L{W$#G=`OXdNh&EqViK0nj)MPfaqJNK)SBJ8>l!Zdk$BMSf5#nmNLEmd0%&|b-b=!kKGQr+BNhX$lRJ&yj+S_tz{txzhxZE z38<#o4gcn3DBL|)ZMuO*)wpRmjZeOxxEO*G@pdQaG!D3^%^1g?dG!Gqa=PPu85%t_ ztt?f)X&);#j(3_+_Be+fBkagke9#k>r=C|+ZMI;nMu#e1{FSGTC`5BBJc#nfLfnp8`CH9U695>9StP8jA(qli;-U-JNo9{xy!o+Sysr?B;-> zmeS!|EfcFnIdV2xr#PC)y)>Xk$IYf{*n+f#IOXfH;(P1CRa5g*55i1^Nc_))0>|kM zKk;{Ju)o{`Vh|+TGr|^H!kZ6%C&s8pi{7uEM7Z!Pkq#$obPfKuc zwiC>tBKg2Z-|5#O__{&D#2R1OoQ0lj6NsIu15m$~{JA^F_oGgB^muw?_HTZlAWq2i zLG_I0jujHt*g?nVkNgGfuf$&SjiRHpP8F%fOkdCv2Rj$fb_zOdS)1U#_?$gV#@#Ch z&z=Y*>;f4~HQy@~c!x`~6)7jy#POH|h>hX&Qt0*^1QG2dsz~38x-QTlOMne^pV1TH zqoap9$#A_IpO}5DNm_@=vt~FRH^>>M)coeWrDazn`D_;?`fa!RtpEk?%bIsY-TCrQ z?1EIeOOiXq5nQJh`{c(drF%;m#$8iBLQgY`Mqx6X^*rjS62G0|}t{!dr;hTR!J_~wgxBDi_zEF4K z5cd3@^8?dd!MOt2oa?J++YU#WTU zKYO<72Lm(Pcl(8RE3jjZ`77VwRdarNz6aDzrZj~beUW?z^Yef)_jNpn4PKv78BT$5 zI3c0siX+yqv1AWX94PZJSaEJvy^Ig~W}@YP8k&ykZaIDT^$5ad0*$8;zmO0{wl(^t zuQB`K>sSV~-E+)xK4$95s!k5g46)3vwy9`SR>F94kOwy15#JpxmcTPn#JxMgX>nBG zJUjS|Q{?&zhd99{FFw*;+UA&D*X;T^`M-DuGhyaE60fRm^a;phs(x7&3e)2+{O2?N zv)_<9MmX9=htUaV98px2f&BQ=%9iAFcNLq;v?{twfZ3MCfoNU8Q6m`R?1))*zstM> z-eOt(WWjCCCnx?>^bLE8FjZh`D=Rb7QX@V26qZ1P5yEsw#;h}#=DN{f16jhr#_|aa zEE%#14j!O+ z2j&HAqo2B=3<2v+PgYa@RPnt*V=PP(QhBV)WyR;C-%kEKI`mF7c-Q3)*5elB4=h#3V%KHG9_wGf4sIjAuc8gvyd5OY`LGw=4e_)#3Ka!Hu`A6tF_zH+&l#P9 z4j1D_SRlXGGLHo(&8F8)tjnFxheHtA%KoR0mRHX(p;p`SSkzSiaoo^%p%|pCrPr&7 zZnC{KD%FP_KOv0``7YY$>Sg1KjUZ#5jpx(NnYRyx&al>?@`|lx2gJNpiU&vN(v=oO z-1FM^$M4eT5A3-6$d6{hf9VV^;`R~VJy~D*eB`5Yt^627dCH@J zjd>5!+r-suf4M`W?tAO+<$d-GJa=yYK0h3WgsAyN1X|p)Iej2Y!uXN$y$`y_D7Ew6Q^Hzp_(h$|kVk$JJw(X!g>d@|EGhOh};P4|(wRdCrH zzV$FFziCXWa6NhRlj|dEPbq9M-e`;mC2Y1TiTCZk7tBgZ*cjU|85`Gr{B8=jR1moC z*rJbXHNM1(>Y@22$RpjWVMczeRITFV$CdN<;06nd^e#`bQ#`IzI=9r={3yhV^<&w$ zcIL`@9_#ke?~I+)UIn(!@WN}B;)M?mO7a+dl*V`RmI%}PG@%i)6ey{L*5;$%#f6{~A!YSJpgf*xyqPRw~Pl%Sx@>gSrzPptfgV!`f#qJm;q=5#r zVSlz{PNZq5d}$Wd6@Ej{begevZ(Jlr8XK#)zr|`lRx;O8h6i+&rZ{n4bjDSeVUrDh z*T?@=>RaBc=&ntXr%yDQHnpLn?^07+b{M6fdcOUbUcPb?v|o!AcrM`3z%sKg^;JI$ z@|65zRnP|di>u)NyE!OI+OYJu&Y%1lLG%)&0_@JXwgfBs0VWjU`DL+tj}DflrTA3I z-zEU+;RG6f-%YbL=;jcm*M~aQb=>wTU-;u=A6r9RbWUKfnW@j)`McDUPIQI>p9Qd5 zmk-CwfB# zRIU>yKo$QWoA1rio(%LL6WZq?wg)z#Ds}4OvcTmvlWUJhn$yjH&wEJ!<~W3P=h)-% z;4hcoYZk%R;FN-@N+ImW)Q!O8CuPPqGO<8YpY|)`A?o@}H$OeCp?{`LGU53}J1g@u z-HZ868h9`i_PI>bZm4-Cy0mX-{UJr zjvbwfI_ITa4<$XO@;wQjA!4zS*j^Sqd zC;f}bfzG(BQBO-MhqbEUPS7@+b?gP6xUFz-8J0oua@O@u?T;#jE=&C^`JW* z8=uGLJw^dF%GU$uYjOzJW=~ghF{+D9wTCCQ2?D*!E$Yj~fnhyW;m82;nzSgF`_TQ( zMCc#IFFeOEGs2Y$@aI)MAGT#Ne{JeEZ7f5diQrfd4H)tg z&TIcvg^a*_lKnDnAWsAl*zevESrF%dA8GauGMqkIgAPSWHbx?bjBVeX(`c=Q1?)CX^>9O)F#OlXUVY2-n(fl**7E5*YvvW={P^(###{Cx z5BY_duyhO)?ij@wofw&US??(GR3Co&5t+7Z);*?wQUdWi>FT-zIRh=R#ksXI;EF$J z+-RKLvxxx|9~N#m<<}=JiFB8)j{^Z=TE8CLaWBgAEb&g337B}|&6BdvTo1QOux{i2 zP(0PA4{K9873;RW1nRF3zy9j7%jilq_MXhsX_p%vGkrX7E~;F_e#=Byy*Ta!W6wkD zbv_Y2!w5Ha%q;58XVt~whf86pWSr&;c|ik3Co4no*Z$xN5gK=BYg=3AFMKwZ^OWe^ zu{yVeo$BpJyqiqZ>#pO|4!-gF)0Mlm?d}O(ys^wAEL(6>3Vjrt_k7naLF#tbZP0Bm zTvK|L+7=hr)ZJ%wtSq;Z5moR|{smxof!3=$@OdId`tz;RHKbPN%HRvxtTg(pPf`s14$Hq&CXc_jVZf zna$)wDv-T$$Kht$^ne?QB{6EZ7O11*B6@}D<=vNVua7_luIQIt=2uii^|6w@x@Y#$ zO6r5S6LHfg9r_8wNEj(izQG64#E-HSMYBpj`4cR$EY>S^`&<8U$t^? zk`0}5|Mw39WwBp?+M=u`FCugO*!a?W?ljo>xwp=>>$m>CR=xCiR4?YJLjT_>;e|1|H-N6l_1oVaA6;TIHBd z8ur$`UgX$}NG|V98W+1c^-Rb{{EU^+uJNFdaXUUwk;k38HPA*yw8(>CeoqPXAoULi zewmjKgn~lVla&zFQ27$^StEx%W<&2(FRsLjACZY^Z|9I;4l)X4ht9}CIHWnI-RZBj63P=vk0RKb!Xs+_9dNEyd|;r6#y5C2XX+&CfR^)@jzf_Q3h zyiSXVGWUu3hwV2M1q)TD&lqntWUPbY_p2)rp&1ClSrGj_PG34<;uYwwohs=shTBzH zO8%Zeckxj>qb})CSJcU38uPJp4f`1TO7E{{0E@?mqCD{TO;;mMF)3*7HfGqR*j$g< zfSO+#PL|lVuU(!s_Xq9p~Wit{}1Z7){Pj4pFz! z)!fCb2FjxVQt&%4$!uAKsbCRWz*?UWU!<&Yn%(=&DW+?>oeAom1XbKSuw=YUZa;;KF^(KeY$#fm&gH$j9@l)scah=V@t3pG-g0mAP8+U*G1< z7S0%`wm`=ZoO%4l$%DkLAYkOl-g6lXLaH0(e1z+ky^X9^r@Nuq97cVSmVIsBsTJ&W zi!RF(eT%#vV^Za&O3q_!EpTh~xn)&mahBL}-@aqAz(C>?bYgaZMn55!1r>oq|I_ki zLOcP^=Kb}3mY$sxm~u0Y717GK$zkW-_aZxduEUb-MYCTp#1H z@)&aYM6q%t1#r{m>P7UwwzP zpY=`Yi1j7U`{DA_Suivk(^mY$`E8AJw(YIET3(mt zSua)v{rS^+*Rv?J{`hG4F}ha?paaQAcp4s&hg|EEq_rkIp0y(C8xb1l2R&Qb9r|B& zALBQurLiNwTQcg;Ys^G>)G>1q(M6dZ({^6m>e09c!bf7k3@nDM9_(3YQ5}2V_8sHb z@3R=11Av3OgPVScIg=OXDYKOIHIHlyAKLPf%|Vp)cV?8FSFJz5BYyMw2-|&mZ-HGK z4K(Tk8Kamue-&K;L}M#1Kw~>IY=DP|A;9_qA3U^N6kmu6B4d2F0?W`}l&+E0#mlsR zW+6?M}^E!xV-5yU;-c-(%-&TxGU6gDd+~sU3 zvW&khfbL_l{q64s1`=3bXj;LfEO_ap1Dy$3q_rl$6|Yf^p&B{>!ZlXQ?{#gimPe-9 z)vfS&jOS~)1`~$uX7>tu@%F6N9Sca)CzeO~iG`PqkuSzEa+gWVw=7T3ANMV*R@0QU zk0BE}Ck_s4R;~r`%KJuWOs?1H?@F!*vKyxb2NKA^0XCS|e)Ud|WJ7yyicc$C%cSg%7B zfy=;HFh8R)_gfW-K5MycnIakE-=AkzNKkwc@0jFs3x4yo;6UOXJCnX}js-TMZ?sFd>VjhCFl=l9e7kh5z~U(h?4Z~tY!VGN?aL*X%%EGD3JC}j&$18n}$ z9_J^Ed1#y@^Yu3pH}dxM1Ze~kl`<=5Lff6vR}f(SDaa6P@0Tx(G0SYsmC$lJt{M<^ zP<9}n+PzX(3+s`)EUmY?ofK?afncPrF-4duolLQ)o4LyTN5-ERX=CGbQh}tD@(kdE zz>fhh1>RIjxhT)AT5L98uRcI`@WCg{1#~x@vnP3`bpz~}9p3WqoBH*H?%=%DeX^ z1A{TmO!7?Y&Roz{dma>Ha<4pF&o%Rx>fDMWc?S7OtO_Gr6n&1ecfpz|h6`eYzo-wexHH;myZ7ew%R? zy8QocAN;cew72OrX0wz20lIjuRu0l%kL7s#&{=t{U$_VO65Yv9UDPpWIc8C zFY;))mp(XPWwbvVv67V5vogL4oW039b2`~TvJ3cz+#jZ!rG!@LCIi}R`W9SvKe7Lc z?o;wl{e@7gkbHsR1ZRHdQ7$hZroZ4-h>r2(f`9Wt=8Mz)d()DKokt}tw-Y|S8?JhU zAsDD1J>?mXzL@`e<+I_wFZa^teUC9);m^PG5}x_IKVm*!x_Fi69elH1#<}HAYd0CI zS6{}q3hd(H`oo-8ew%f*>_z)K`}jxhq(824 z;&XM@--F$6DjoWaw4;k&`3U~jQ+iV#E&s#PS~LdWi$N##WNRtq?*KnmYyFwo{hNVH zYpp+L`6^uZ6mqhe?X)q zDdqP|DfgCAzBo&JektX)Qpz8eQvPcx<++moJ*AX`rIZItDOa32&WBV=xuukHq?B?% z(l*_fQpzhzDFK3;2GtF=B19He=s=HyeY z_4C00w&YFqrIhkQ;LKXAo!zkUSmeRkhYv0Ivmpwv=)?9k?hxoub=M zr@nj$xS-a03GgW0w?0oxDy2LJ_yq7zXO_uRE`y5%B#!_;DEGT(X{Qas&A!~2_1<1YOVFR zX30wT=hMCI^~ICQ^!ilj#|<{smzf#;XQh-&ODP5T`%>mqQ?GBc1s3$Tf%|9I zr(55C1$dy=`b(1b)X&?gj-XrA`AWJ-^FiR+Q_asNc|V_Sr|Dig0J(OSz61E|tY5bQ z&yzCmp^KD12wZWh`(XX~4d8zP{|ERw@DG9KZ?-RVuLOT}HmARIs{1w4w~x`ihJ7EM zHM#S2>l^SY;Cmv6Uzx3`P0QeB`?frgwxlI3Y1_0&uFaB`w4~FNmO!$kB`s;&v;>kR zEon*HrX`RpX-P}kHZ6f)DU%@qAw4dOB)U6buvq0DwwEU0ELhAQ}e%2r|h? z@UOhMwkmt$}lh{z6tQYZ|U;g|UcWAbSwqsdreS;k$cN{Fj%irz> z9jcE}r=YgJB5PZ5hqOPv~Oqqq^zQ9bE$3Wdy$<+@#Oo|wE;Hc;&Zo7H# zJkq(d477vJcke$hoi}xP0Of!DziY%9Q$?!x;=fmAc|lHN_J1#Sx&%Wb!~b4Z+21z5 z{Lj)d)HnO@Pk9j=u35zQKMxarq2Z?TKkL!s!m@(@Ufs%E<9GjOCIA0!X8T5jkgj-V z(3gUTF8W`oEG?Y)0w)MgNdSp93}E?t zNIt;DgTO(+t_HyW7BVuI#Hu7c;>UlhA=@(lZA1fLw*!T~A6Fv-NHc-9zB5@ewlDti zk1C4E!F_E2U*n&T=E0?YCO?n=Px^P+70rWHN1gOU3kL)jNkXe!02ZPJet`cZ2$!u0 zPW}FWy6kup;Wc@CcTJ*K+^1Y<^+kg5ze?XGxmR)0P+RZ6ZlF529Pa40Oqz4 zUSHtHcUM9r|MLl4dv7HOe93#X%vwp2ltCuvtN&5(B$d?^PU0ls&Kh7Y!Ewv1uVTIi zb>$jx;SKJaC)|DF3N8Km<3Ib@TLj2gJ(C%?eff{gw*~Yumw3U%fj*>xYb!L1asU)y zu6tyjY(e9!|NO;|fd6rhZMhP-1VIxCva7m8jqvm!_q;Uj>K~ha1>aaG(3AN;`y#?= zkL9hlB8BP*J&6IM+;TJY2etqY5cHZ58BKKh65PiJXu3I@vYAhG+Lx?k@M2!~ABEmi z`y@<~&pV|0uPb#3^Ss^Rcz?Mx9BVy&eW{#z^%al-DZSJN_f-RY?+0cQ?mhxoSeE*& z^ko(Pf1Jru@J*?o6k%^tDSVK0_rgAcv;c~C+AqK857fbZE_m0G=)9;DT6Gch(YkvV z0a&9JKPev|#*1qzUQ}9MF!bWr+|G~E`7R+N!)@U!H7G`c0bE9Knn`f6*2|)&(joA@ z@vm~2ZvB0?UIo|5PP)=d{1YhJ=nuS5Xi6wXp&E5{pY3{#{-E<}Cpbp|@5MUcK2`?s z&2poE!=lKLtWDbW{P(Dat3Yz%Ho#M$EqVEG5g6T;J0f(zcp@7yOR zconu%ED$0w>xP>yfY#b>GJNI~pu$Ps)_YM2t&bA;#SK8xyC?vnpW8fBp$ESLWY8>N z)=}1SOzDiLE<+fv*Dsv)3b6C|(DI40GNA#W&?gLFe^TUiu+F%DIQ)2kixl+2Ir*=d zU*av26dgdiAP$c33Aqpi__u*@6B*L;lnZeLvZElMX!x-L;FJI`DB3A&KehPE@I9*= zuoQ0uIkl)#k5evJ@$01_72@&&Nn_J-e)zF--`%@1H=r1NsvRWUl?C_t0Az0=CG1ur zg`x>|nF0QtARH;@mKwnKc3{A}h%;pu~qKsX%~;w>D#u5Xpf2S^{6QR(tuP z(gdFjPKHrN{}!W4$<35a{Kokru33a&i;d$XSMe|Z-%1Y=S|tatP%ZcX znouBIC`>j7|Ci5t|5mGxKmY30=#~Y|0^hKG>KPm+n~3+we?uGZVo!qqjjr)GrI#Q> zVKe6rz1h|irp_dq8@p0~If{kOm8d+tds_-RQ!Ic1O=BS39FPSl93eCx?tuBj4XCG? zy(c;EP`;ED`6VFI0RT3LK$^&Nfwcc<)=P@mSXlJxqK1Kn5q)--KfX*aGwK}Q+qaPga6o?mc{gN3H zJWgKN`~6kE)OJpDId&fQwa%SYfns6t!MN^_HhN~nk0n*0VI!{WL?sG$fIAtF(rCoF zcGblQYiFV=T#VkuIRw3=bn&Ir9{mFv{ga5BM?A3pbWg25oaBCe$UQ3b)hQtrO7d5K z%S?>8ydwc%V(3r3;B>mh`w_+(&;DwQK;3`=Sj@gz0H9)10n)tK^qEH6qNM{q+z_JY zBUPWYXW+IJWskESyt4OQb;*$Dt$Vj(+Dtj(Kb_woZ=%0u>AKAtM|>4<03UtiZxOkx z@Z)m$8X_Xyl9V%y+o#FAEZ>b^^PS__0R>zGG5hm@ZMRXjLs9+;X6OCdK5EN#&R-bo zQPmUS!|z_+jfHizA7G{dip5@?%ImK_3KY>_CGumQ z7%&51F}+e3M|yK}UbOs~% ziX{;5-I4%-XG3*>)8|l3E4J5HEYO4K)Dj=*@Sm@i|C9oDxz-hV*A|Fpdk4t_O>i}L zrA2(d{FE)Pxqu>z2y}EC!7j~$V==8@cb#5S4l0&d@W~Y*w@>V*V{!iSM^l!axRXdo zvd#6a-85Ffw$P9{5&EvvLA{UId&U#g!ki?DiR-X}N;D<)qG4nzI{yRF~lTo_a>r1<_?MQvPFVeL@y@<8*AzcPhuR(3hfKF5&%2 zOn$4NhI<1rvo?Rq>55u?6cBSV`14AiX~}n=MS6L5rpBwQ`udK=QJU_ngYqoqsXuqU zxbv1wj%vN?dqeh^7Jc{4ZvxaX+M@Pfp`|KHHEy~GHi_s;ipz3gAO@}loN!pb>dEJ;)~G|;QMq_iSKB$;!$aic zy7qp1DWr+%IL#^Wpp5Oqo+Ey5^-w{~4wR(OQEf4E<5J!WZoZRXR%s0n`#o>8RA{e9 zCzq)|rho9c%u+4Q1C@+`eWZcxawV%6Zx>Y^BVFlEl-X-(heA_|oEwDA#$aj&bE&0I&sjc4n#d(d9MoO%Cj2YsY+5m3f z{l?4$A#^%jfh^sug;jcfodm4!$EwPMedVJ8En+1`X5)_EM4Y7pEw z01I>GLbeqd@ox5K=$Mf~2@z@oM0f9jEUClbX@hc+QmscMi5g8)6pi0@+atfk+VK{T zM*$fZ0&v<*Tk*73B7GbspsQKv&rT{ex1@o+xSvP!N|4%VQkT4OzlXc``iUtMD|}kZ>GLL?{v8#)epjanUoV!0Qa*gOzACO6~z(H_9 zvbALdkflHx;HvO1WIl?*M-09o>F&t@T9Pj>J$;YXvRq8gzuX9MUoWV=im6!3`EGgb zEWGq6e(bPWMN6^*agSA{Ls312jHlAPpZ)*<7$n}ki$cRrtXu9O86$;sD^M+H`U4)< zpXw|&rI({EeG&wx{NTPi5OhAl4StuS#`Yt2;_lthV7mBlB{$}i5K4PSk(+ydi|p00 zOVr1oFIhV>2~Mk?$>D)FfiFuSH@^I7RL$K$0_v&2@N;ojT=%PgD1}qh`dsJX zO>&ynOM|a9F5`OznnhoOzHN>SnWI+gO9-A-AFI{P-~m1)*J><{$0;^d3l?|Jp*PNo_h3wE?tD(Z5) z)pmmrp-a8&<3@K~#@y=6F&dvc^~n@IvYF?%t!0@Mz5ILhAOMuNKkOedlS%xQm>r-% z$vlOtdvXaKjZIK`NJ+Oqlvz8D;|ix24^&wW6S_ikwP?YL?-KwyvlAy-$DaU zZ|ST4^myn9QuvEG zBNTdvXxHyXh|AEVwaIlu_q_hsKk^ZE&N}_1Lk*Uhcj&cLIx;K=d}b4Br)HvU*ktdv zrEuHq%tr{EuF=*P*t(;>v$|@aLj(2WKyu7D&r8$#OPHo~tys6dh z#~l4Nk{`+p1yWta69x|8dkd*cbjkt66yt=ihv^UW z0SYz|XWoFW_1csAr6N@#`)Lwwm(Ml_j~}};b-bGfn-?i{;`5gy2QAN2VgcS^osO!4 z+7^6RXFBJ~veOYa`BnWrffKo9+yvX0m<&M&>=EQAaI@mB6E1dA}7Gz0Wan zowJMVxn|9Exmrf9lU;5L(`~fR+h1)PJQ0z7YV=D(=4?pEW}4 zk5q_MZwXm+u#_~|F}z7=4(EWZ5&B5@m^pt&Ua}Z%n@%I)Y%7ptIyPP+ z5!}Z?Y?+$ZhfJZ%^M!4;&v|3Gkq!FL!=G3?KfB`;wB1}N6t;FY$0+5#!u*hYy5^_M zzTF?Ce~y+{01Y>Xz6K8ciJRI9SD*G9q*(m_Q`+=m%{6-4jkMM~L&Ak3+YRbx)N2fK9`i#uHDPrBy1@Xf=cZpfqwSUAv-0YW zFHLtMqCL)TEVMAQ%@jkCFM_5I0gTHz*(4mG_74T=QRfcl%bsGb!IHg%sxU(kVnSb zTS?&_hV1h0?YK4Pe3s^_@H?>^ZuJSVW%meU2OjSh)Arb1F^~~Vn0RQ007n0!a3+?1 zmwrI#1Dc(={mbk>ybCFw#3NOXN5Il$;?MzH17zuz@8j=XRs#Z|#rLRQ6fj!9=<+o8 z=pV@EOp_N~Z{rQUrN!#B*UqJt(bmq7lFTjY6*?0Vm=Ut8LPaTm_p4rRac*Z{^BK8{ zzA%p&vo#m*^b94dRUHcTHzl9lbQO#Mwc zq%vAPbWYB7r0yQZpFF!Cm*WS)461~gM%$l_aeT`d^#D*|{hsmFd8w`2pV*DN0n1h3+*g=6V1rY$4oM7+Aohh_%2=q<>bhoe*}SKIVdAST`Y5U@vNY7^ZdP|_hA;%y!2-<-eQ zo73q!%X)C>IKgS(KcZVHH23ZX6P%e`(k`@X;C7?iE3Au&acN^^pF{q$is~=LMDiVF zv5;8f6Dw~xVOgeYYax}FTV|!5m@eP*JU{DrY4;mx>FZW0MWaiit3w7{-WQ=7n{-|{oTE2%( z&6(KTt@3A|{iqWbC-`w88!=#jJT-4lr&@h17BKJF&E0QO-5B{n>-nQqDru8ebAqjV z_2GLOPwi1x9%ZTB$l*gR@%`)aU0mL48>C;Ldi$+gig&8 zV-nMBxOW!Ik2;%7H>>WXZEbJ6uS&dd2Grk0UW#nK$P_JSJPlXOo38t?kzhb~Ee;Y+pI`KwSJORAD->k_+ZTu%ak;yvhoBbf*^glR^Yi^tox*o`Y=V>K96uu=sq!mYZV>g* zn)X=9yD#DuU|cE_%>c-TP0LT={A!NylnnqIx-sM0cX87M*vuJ3qFcT2SS&EZv~Cz@ zAhG+{mk=CHXq9 zT_VIdG_1-{9nwz!&K$ZeqV~ZVvdzjS(pM-{uDSW$sIf|rl?M1 zcu%bcj83=%nM)K;GGt8ICe2<+U{Jn%$Xf`1G~6AxGMbbbpN(xU?z8HP<9S zDl|ia+*DOyBhv~ys{I!x3I{q8;n@dPf`zZ8a6#2niK}TP$c$gWa-@@?0g7!*b8gq;xzVsg9|%EkFL+bUY*TG(>$fu#Q8G?Jhipy^oL+p7 z{PL+?N!H83&P=~BdWe^ALYJevM#eo;{zfW{CU!B{ZMfxJCxN7gca+wdI@U5$ebl`X ztdLB7+a+UdbHvsEN&4tHttHG}1C!G!8_v~cHdPa7mF2FqdCIf`^1&CG&zq-BL#DIF zwDQKMdmo;9H`vtEC%U{S$+PB$q{$wD)v~2{J%--3Jg97m!X|fxAE6!%11E76rLA|7 zTYw9~!24BACIDZGz#YVc!69*E$Gr&fukj zR!RQ#f#m(&r#}--k!MM%FQ~53c6Es<-yi_G@f5!CC@qhPT5NgUMlw{bkNkl*2lO)>u0k6;_)EQj1yC-^ztO97QwO@anye z*w@+uG*Wu-D8w7}te*8O*D!7ZIr2YD2}9F!j}@0eM49V(WL~Mm!ZrLU19C&1mp#kI z2d_p=eJp`_PD2WowY$D1VLbW4BL92OC5xCP2AMia+FV)jXb> z*W+; z-Zm)Bg`)sQMWlD98-fjT(SD>|l1g74SSNWpyw5v2c*hTo$xLfo@-sU+C&`}JS&N|}n_{cVP^C_#;Qd5v6pX{ z*nAJ=?alpOsD zX9X(exNYlD@5MTjBuZ4nPut&nRwhUKZ7=)M_DpkK@jtTwIf!0HM3(l1NF+6 zE($pT0$RYekOj3{| zVX3RE+<5u%aAmszUp}2(q;I(~I_Y8P$M`*Q(Ie0&G@jjx3~oB;X!i5%nM$5&AZgu)jDMeL@$?Ns>> zgTmGWM)x3losmj#Uv_W$;c}Y1!Cr z)F#5us!>@_XfEoNg!@H{bB7j5@WO#USwFo@@R)-FBfPY?o;qR3x%(tsNcO z!eu#YDMl>l(%y*pzIelw$ih)uLxO8!dj?QHmpLyx&HlFu8MZYMWTJoXrHtgq9*yGF z#?po$JhC6V=SLG0R>M7*uSt})o)-%-3LqC|Udm2Km`fXGvUUml9=QdE<<`t-Y~3O_ z&NYyc%;_LiU_>)LYBA_`BSUja_8*LYg`~3I0dqMtmCgSAmMO*^=Y~q{`o=Nnn=Z!H zN1KIO_)4e~F4kPC!A!IeHfF}JQXt}lyKGeWGLb*wjtBvwvDG4}25ipjSCG z2^Z1;pCs@H#pe+s7;UG0rKvy*Jl3XgErv;^jk;K!SEay48Wu`sVSM z+>OVzy3NOt`JxxZChW`3oN~$oTpmuL11JxVdP=)Z)N9A%YI6cr^rw{lSXHU0pd2li zmyGnMdTsJS*w;rb?fzhVt9`KMC|FN{32E~h3Ts4D;r$A@%YVo9OH8!ZeXgk`x3PFV z8TDWgMb*=I$KUg={cuC`kIHjO#vhGk+G)3MdG)g;HCRcj66gr^v1Mntq@#(IC=^LF zQiNc=RMiXA@@^o;&{qz!2-#A`SKqmmWFL(JsNSO-!m6hy7ywafUCfK}`HfDWq5{h& zwd!d2W!(Eqrz-b1P)5`!Nks(1t}}(@wg`>pk`xQ%$AWpEVQZVGB39#<_mMNIj%G7?SKrp zz+t_avn;x1#nMKyv#1V-l@K6#>Jr25TYiiC%2~aq=F>YIWGYSmuYyP&c)@+80G6Pi z3TKOWDw?RC4k?3Ye;e)L8Pp5i^e!eASRE*aUHWqT;kf)MnUnLlccb6E&$WJucWj@i z?BF@eS?d z=QL6hIk85ovp9`l7z%fTd4$|6e%^qk+TV*zHHJ3}ttv1=iuw7S9$4u19}LCXeTlo* z%Ygp!MPJbE!Lm^!5IW*-&eOs2JZW+8$>@7-Qw5>Ef2xfcJ` zjp!t|gT0fEAAWgN#PJz9X^JS}ZnN2Nn( z|0BR@L<>_R_`&0gCNuk5$#vQS_*s*1x?&7CtXg?_!_zhc+Lb#znETr`%y6_(DrVcJ z&MJ-nKssj9;s$MiXlvjeBbbiV>D3V*U1;Z4^`Xp zVD`@k;oV$qTnQB?LFagmzio%J<*36FcMV*SRGpkP`NfL^a*eTlq(V0M5hbYc0Szkb0Mn~x()aAt7YgbjI5##PEF*CXL-XrDiY)Q zS6@Hok3Lv)Mwmt>5~e}0^KItihCX@i=myVBEyK+WWswF9@tU!Oc9QV{5Ji|!$qzS# zIejlPDwAYV_c2DS&{6z;so`$x!>?JuVT!cB?xt?=@=#(ycz1o<$a0wMPldUi2|)`X zEcRWwqq@Ahd~4@n{A~wb4O!`DJKPPma}x^De7~}8V@$s>vrmG2gf@>%wWiI&!REAu z(AGickyaT_RT9!=xk7`J;>3lP$NYAu)GF8VcbHfT2b`sNR5Ly=-Cg*4+#jo0;Kf|X zTzHu~{6?5O%Ik<>2C_xxS83mH7x7{)%VZ{pG|$~_{~o-$Vs^0JT_xzyQ;+}9AP z?9`@k60f;k*FnPH`zhfj?^5_v&AbhFkm$&X1WSC4C*{ zpa)E z5g%?>$~4$p*{1K)^j=_9E2S56_PbWK#zozo;wNehnn}xC#L=bRAUob@)tYW*Q*=ab zWvNXr%snQn%|44vav2&-GD&k((Wk|e;4J8Kydy|mcYo_S47QE_6i1*p+hRa2W;D(T z7Z6W+O|G{er&OX8A|R#^q6g&^^>~$b(u<=p15(Exn~^?^foOWVj6q5Vq^tNr4l8Vv zWrC4bMBcl?DRmIaZ@~KPdjsRPIyqcv(cPkAMO~aD5^^l~a~fg&GVL7W($P7g8ec^C z2an3OuLv0!%Fw_qg;eT?v9OcIKyW?^pDx_G?Oe$!tn=T-T%ArC0kM9 zPod?Mi9u)XHFMh$vGob@OC8HmMf?0`MKI+OUf*D}T4N!l)Mbv+*SS^^qJOm`$MgYE zhjg^%staddevL~d;U>y+m}kgx7u=Uu)V4Sl>^(A3q^Q*K^E~T;s+JLFMRAQb*wr{* z=%?fBV&cuvp|Vj{4ve>0xIgP>WDIXZ;((vPA}CO}^a=`O zQuu}HJ2x_2h-K&H#;}-6FfXlQIQn@vgldP^NXoQd0j+aB=qD$MpE(O?>ZBPsO|S47 zSW+FuJeuCUrLnfmK;M#js{v)WH6)gxpWrop?h)tTnzm$B)yV)rN9y7Ggayqd5QgZv z(v@M|%&pT!AtbPC9H+@;q$W{q%Kk@UeeJtGk=}6*OSh0NkZsIYTinsnMBOa(k0amJ z+k3(vDn-yzc+KXWiM7Y9>&dXO3pRKmbi>uxVl3ybYM<&?d?GfX0p&ILAGo&6r7SUV ze<$dz*X*CrKe#Niw&c&zXiuRIMR?Ft6x7nE$M+V6@OGrSAUY9h18Bk1;6^lyVHt zscu6`Ba}sz1m=|Fbe`l>)F}J%|x;VPdG@GIW2%pnb-0G*|M&`hGPEd3?GGMh zs-Y*9p3aH&k$l$-Zwiri@YM+-5j}BCc|-@zH{PE>DeCYhv*fQ8jw@DZF!J@C9=V5ezugBMX_`?Tdj`Et9w=6Rojemoq z>iX6$Eg=b7Dr__RsbVQ-uP2Y{+0!M}q)Ox*|2JkdiwKe*cHM%O3VbgbQ-XmG{8OoW&%UE!i!GPk0yuipdcSlK4-?3oIu7YTnQ_KwnTwzG--(1HcA zPo%oGm)5zjsc59$=+QWv<=jd~$4w2kK6xJos0-u)Nar!% zIQi5cLw!c?&~Ubq7XOASMw3CcTE8BV9X@O38r7%`ddqIN2s?hWXv0U!{$iH><>^tn zI2MC&H||Ggy*9U@RPoU{HI<<`ZWGR)Inp({Vo%-Tc(OEg(R;;X3_QPC2A0U+IYnpt zJnKsO(({ijZ9ENZB4F%eyjIc)>IdSh-yo6dYOyA6nuQ`OPgMQAFBSFU?t8S32h*!`@b+6B#ui^t$Z8jA_`UN$PLnyx zu{`(c7x8SS?)-yXXqI>xAM2|M$h1%yy5@;s7Y^Uq(uJdDe!_PwsVm*>wOTWuR<629 zzM>E4YLn@3WraSBH6C@~^>XiOd1%dmr$d-R)r!E#@9@rSA0$|Y?OrwO^ zGSZ-XXyuljxx}gp=es^3kr`g)6xMPHViWFB74<{VjGPp~RoCGAZ`vWO?$;>OUu`D} zm)8-W5*mDdK-<(xAiKhVIQ7LJy>=+uSNz*w>VrJ)KUgEtiS`oRxZAw#DYe{h zeaj=~d21G|pIi2aYHQTo35y`*J(%4Gena8MC1~s~S*WD~(*klzc!|Ja{ktC_P#3A}>f0L0JUK=lrMzbfmp^!dJTJ&V}(7h*idawieIAw>)_D5ZP3`F3(v3Qujq^bB$u z14BoE$diiw2gQcGUv2k3RiMsk`04$J0*fE{tz0!e5@f-5 zwrx=o&dV;Bs3`dQJTP1Jx{N2Bqg&IJtk4S712(b#ob3Y)M(69`MwEi3U!CP;3Mq@h zwAK}rseo{#%v@RKZ?ACjH^@8a1VP!^!Bca!4Gh^kmI~siJzZ( zdrFj8qVee7E|kUM#4di71J&fq67|yNX{<5yHWFOB_@VwuqS224Rdqg_$P0pEXlYo z^|sr<26j}1$T3B1KzG_%)ajW!(T;$+2e}8VIY*^Cd3OxGhaU;E0?d;vI0NJfk@roY z7JWVViK}S9X`jELBVacdKRgFGaNuZ< z2flDLZcY4D)AM5iRkq7mGrMlLduqKdObe#ZPFKn^`1Db8MQYgHubpQy(4qqm^+S6a zj>RmQr$e_L@OQ&Jsrr?TCf%*s82 z1f%-dJQf^j47DBl)euzfDeBZuW%`v6d$SUu9pyxZ?>GM2L)q5?_jM6^-U!Sj+HD5N zlP%E2-jje^vOa83aER5)FBlcj=4fjO2H7EGCNw@g36D%R*5RcSiAvjVN)y!nsG7YR zvqAr-B!Ly<9b52*XrEzQC@Zb;?ZJn%f^))*v(3(eKeW$}Zf^~rsBR9+`j_e>Ev|HmvD%B1_jQ5Euu_PjRmUJ$4J;jctsn4thG1FFYBJ&xK^9`kRO5=bf&lN}$ zyjP+)4DI?c2&i<1UT@E#Y(k2Xk9t2OG_$w*rvcdIA=;GjC1@2F$l@9?V;VJ@Mv;CE)Dw$(|zPU``#bM+~6=w06Cdn6<`M8bz z@li%%XJ93j4ucK23oK!*k=*ey$?ACRLYQW`O@eI^oENfi#KbJ=Fn*;KnJ8nXDS-ca`LAGNv)#w(Sl6DS+PyXwPmGqp zL(R_3rP`FA%Z=khgk)3ZTp=Y`EN+d z>Zcz>rf>85O}-c)o_Fb#fVV4SDqCEvU|lxt48J>GF;39=Po!j z>ogtCDCrc$A#rw#ac`R0v6s0-87G2X*Eq(HL<)iXfB;z%=B%r?P|R0~h%!r)?#iPZ z-J*d{+@zIb5H))#o42Hnj~1cxM?2^bUew>TDW_`h$fS-42*#PH0prlIG5A27ZRzm$ zBL=-FKRe~TzjupZ)mljzKT*Kym4C!TKyw>9A@MzKT~!^1Ui{)wV8*(*x@@X+B42?u zYn4bK_x9L*xonPNs9dev{if+g?qi{GMEzzOXBaKt_SntH_dOPWz{UDr6w=wTY8H&i ztJBbIJik}Os9)#>!j`yi_X7F{-O{Ji?i&l1e%rVed)z>wvBouSCn35~XLMNWIP2j_^4-J)AGM!Wa=nE@RN z;f$VSjpOz6)C&lL3nc)4z*G_3XMn#6RNwdWCFesMZMP@M*j|BL9Vl@_aop-X>@8q{ zm~iP-ud%RpH2BW8p=IAZfp2f2FXzleNHACYhFGu3=SP0e-y5p>PmBL<2eJ32_?(=2 zj2T z1}|;Q$_9Yg?2Hf-PkP+gLW<^q*dwB8&rPT9Bmo}#t`zRMBii0 z;BPA-drl|aeHt?CSIihOi^R{)BZE>U6UHFkeG?{*28B8`k{(TW>zC}8Y7hgt--ey` zlmkXVxY5f!e8VV!5?MV|3NMqqvrFzCsRj0B0p<~?IUI~ZBDD^xo-v)FzTftrpuSx0 zk^&ax9Ot%Z#z6|34riAOMv(DZc!KyzEJP>U?@a!q9L$)=0Oo`z#m-y|*YAvE)UCWS zaxW4`h%?uy|DndC`B-3y5+-U`cSOSVoBXqq+@mq3LyIQxvH5%OAU?6DJpRq=RzO+5 zN=?nxJP%_?D%U3h|9R5jig5RAjMmF97(0AhN0rkT?9x6^3wtIGPa# zxm^wmhHw&TiQRYOe^$v|h}ODv(jA0e7Qtrfgxk93uEMaQr@9bPDl1X@y$A2Hzr?Hquz+Bd7lk>bPHS3jkA#xLWZ6j8oqPWI) zAO<=?!E`9*6wS0^UGE**T@(D9)A6l((NWIL{je$-6033P5aUsQ#dgpZV^SmZKx~4| zQkyMyUDi@=){QgRB`vJ|JZ!GW_k{Xts!BIBcea(UP#&;+!Le2}7FeY3p~Rq-BEK!v zkT{{)rE(s{Ha4wSs1)Y)U44a12@91$-R(CjX*J9sZEQ6g>}1KDMMVE$O3 z-lh0(BB`v-T~IW2-m#s3v)g$z)x!(6!FG;!^)9Lu^C0XP1Y%Muk{2yu9Bl|KXRLSB zhI358t|cca@OLNi6XpcFdr!7v0aq8aA%?MEO-*(-|0byK#S#zW)?#qt3i;N)Rv=(B z+ZZ)%7WI^HVM%#YbVdHH-I&Mx z*;P1-wF#$>-rB&}LU^C|=j>_PR??dNlt`O=d4e(GU)-f%$X(iP(Vv$eZ;|6OxO%2= z`53MmDE1N0ax!q@FPJH6KWBBw&60ESC7GQ!mz_$8kO)|Gf;0p-uA_`A@huHG9}{RH zGrl4-NfMT+QnAKC1!?D_3vhJ`!l!$-Cj2dBDWtqh4hxKRJ28x&U!NByevBW!{w?+- zl*Ia729Z7fBHoQ%vYXf2p^RYsy)1mo0)J)E8PIAM;dLVrmStja>FVn9%4nO?7g_|r z52Q&Zv2sg^gCKRkA$*e;&Nn~!ET!&__W&=YY?bF%q;ej2W$m|+W5-_?Ctlz@Gw{3h>2W|4X=`YE(%%^xp4LGReanoJLjeLE$96 z_hJ)ZD|3h8cOsb^M3_G^0d)}TFefj_ZN{w@(OWS=APm=MOpc`rI z$C4SnMIiikWha)67K@*;jqRK{5-e|yQi+h}=N*MW^Sh2XBhdNfA<(L5w=m^V^#uWY zjSq|6KWX*+rq(h&->vI}Ivt zeTcu+F`kO|pQ+Ckw51JBgJxiDobyIoy({A0k|p*#Z`Vu)o@XeeDa=ed&UGP|vI4P> zJYz~Gxd?8wMtm4D`Te`W!8-s3r6pi7(d#jJd7)L+2qroo$eQTOQak#`d{ z9r!LDoR6G&N*=u2G&57`zb))v89XQPNpK~!XRj&gK7ch#;Lj$8V>owgQwp<9+3q%F zFwU@krN*E9bQdK4_1gO2TV9j}E$PUKt_8 z=b~H%jg`=3_k z`HkY(LY{T8=S8WObWJE+wdO~C5}TVRdg7EEt%c9lK=jDJ1i)gf9Yh=MxaeOtEwQ{{ zrQg1DOS5>4387j5MoDReplyQTwff}n!>ZfcpKfnvZ@S)0HdidwamJx~Y%S)?ZtqhK zvlwo@3EmA3y_9mfW-)EeZ%4;M?EQ|C)XSg$2=aiWzg6g}+$Pac*zn$J`*4jHy?)J~ z&v!Ry>F(!=otDBxShwiY80~O;Y0fTcFavVFE-H_O6!ynF#yr#}JZO=a|MbjVid-;D zt7|OsMP;r#`1_P2Yb;43$EZt%XqNjzJ42X3sb6~vopULZJ>O?zMCH(hbK})@UXd$L z;Ohu!X1dGN{DvJ4Qp~FS!>!^CBYrWH+1C3Vc+ttTrnc`WQoT3a3@I1`sN#=gFYQ7b z9v=zZw#$4GAvA*@b=(pa4AmpudUR`(2R{!mF7q-=;C7CdG|f+=IapoKdNIA#I7s;q zQGixn=+Yt!RL#nJ^NJr4MAHVjbXfSdpE1O&RJ(9?$l1;;Gd~GcHs=3CGZym3OR*W=J^zuiUbTe442}vD z6J%sx(Eootoo6_kZ`j7ombPYf*hNt)l-jdKTf~e}Vzot!*cv-%OO4uls}TgDLG0C5 z?NLP3-c-yYV)uRi?{U2E_k76xJokOw*ErALljCvmZQPO%@0y)`4|c-lIlhtnXTDbK z9%9L1_7_RFx=nuORXAXp<#_SY_$+?wNQp|2GM*zlTHOexE?lcq>62stOs{rk+*%Ny ze5dLjH3#;F%7b(COv=^Q8;hnUg6JXBzk0msY46N-2t_#QLUK0e_L|)i@#b+h(zAcX zC(EZ$x~>mFR`T8>Z6|dW4|QfcvWU7IBTA@=KR3$xfPFq}ndT78@V4rq=$%HUR;#8s z9iR1A_3lqhTWx3BrPwtNWSPbz&~A=n26OuF5JmMY`LU5$=8qf_Xk_1q>S|ta`B0SV?~+jHY>bYh!9#Lj$nn9?$>G$-nU2 zT&UtGPwkTjVNKWdykkmnPb}T5T}pAN^rn^M=8s-@`Jc=LM+FZt4sliUHD;&z(~S!3 zm>gABNy*BfVTo6yG(!c`*bv0&D8e~z_M2Fb-4s>sbk1Ddx?M1#p|z}J8Wx7P$Xm2K zkN_lG!}=B#Q`ggP*x+3n0 zMQx1inb{|u@XF^#t?wUc#Xbd6vbyCR1Z(INA`kjYqKsZa(=L_!pc-P`LpKwwX#E@{ zG)iBsP_Oe6%mjnle8jgmn{q!p8T3UE2`rCfo`w0X>b6Ez1NGnFgmJjEnmz$glb zYeSiL7P=P#OpGMxqU&)>o8?whwaq|gW#P8{fW#Vmc5XdrjWv_G(*$i5gH>26+kXm6&58z`+>BgTvTCH`UqI|1@dG zJH|XZ+Xt7ALF23YO-pTi;5RV%zPN+$t_wixve@V~i0SQyQd-iI4()jlKB0YB~EK zn2c=7*rfv6uZPN~=?t6u3}Wc01L(CIL)}L0eD-LQ^VEOP-RrVz0>flNr_uS|cA3Rb zpa0v@@=k`*jgCM762xoOY(H1)w-bRYjrW0^*-|Lhq=X+U_hwc?N#8IZ+r;x)B<6j+ zMW#V`kB2a1e4}zG=pl~nj}Ir*jdODjgc_IYWV`!tw6c;)uR?uiAs_pT8B@GmuzE~l z`hX|>j+ybhp_AfER!AIYf6Ynoo!I{00jS`(a>R=H@jGFu1^C&TihvfDYhBlb!02g0 zkaJyP){fs0wQ?2Ih(I9z+*bv`NjR_vgx*XOHozLVi2H(1lmzt7qUcL8z{Xm*AZ_SkFlNi%^5SL#i{Xhj~yS za=mT1*ZDZ~uEcguc zLXxW?eZ}t|^BFAmKeW`_$Y=R^^L`+)~oCzd##$ld_l&elC8PFNootc5_$ z=FZE?oT!I!S+e_0f#CE)7O?B0Xk5MS=C6I_rDfJDc%SzRWo9!3tIx}&A4zPWM?j`vdY_$e(1u2 z0U~W$-U=%ZfA&!LhyoN)*PTMD%F^Q>OLST4%qR{&C8i+rc$T!Q%;nph)p9S^PZWKb;!WVX%kUX5kF+f=tS4g5x`01g_gOsxtgC2ap> zAyg*qy^Yn*N!(R=$nK zT{yuJ+71l+c}_5Ja*;L{eDUr*)p^l;(M5vQcU|kubh2V6Y(1Th$)TC={rQ*i#V zJuOrGm$H0@lO1wHn~882nXxvOb~Cp!1~#@+XVnI72=3-6Vcs;bE}gNg&eBd#gT6(p z3E~IKws-hEvtn!@Nc-#Prnbzc_hSoo@6gyHQ-+l$3yaxGS8r9FY-lU1J4Vbt3SeB- z-Qb$h=N*%rEfMfpKLHvP>wGwfMc|F|DM<&rK=x31`)r<0<}NFqF`hjl&g*Mu=D`=R z?4e6dt!E}wDOuO&Y8q}6(wVtVZd9$i=tbuPPvgbEZZ0ee;@-U6#5TMBmowPtLUft( zA(Wb?C`2Eo2mk%q~sQ7_#9CU#X^Os*vs?zY?bX3SNsV|UEzHIb(J1ZD+v<2^GZCi+4^D`D5&}i<4j*Ts9xf4kF1?wH~$P z*G@#yzuJ7%B}oRftX}|T?+yhr#d+wNdYV-6fBKplKJt{z9q=ri$rRP>X^YHEbjh8A zw?|Kt>>EE&dH@DBED!b6s@7^z+C7_TubH+x{5aHo`EVVttoG!7ALr(&Oai~^?3YGx zZL0LQWHWv1B{t`X{SeHiOx(GyRonZGIow;sJ&8)w`oi|Vweyp`;+aIc3O#c5@S4K` zc;peu{ivxx5iiU3^KL|W((_`3w6I3?>{|!46gMTOnA>OTxKNxF9_Yg)9QWVD4VDcG zB%Wyl*UV5Fxg(u-nG?_*dhhtojT^Hww0h58=zV|De3brToK>No$CY)?>4m#*$0+P* zTvP_K1aF7v5(L?RetE+szz2~hv!PoUCR60#aH;5Vwi|tRw0M%=Y79U#L)lu&% zAEwhSjBkm4*6Bq9A7ESK8P<2LS1q-D1R=|k_P2u9_~H9j#rnt3Bq)-$*}Cjr_$(K% zzDGG(eK7Oc)-!==S0KGDmHhRl3x44oBh%M?HM*8K1cfoyGIXXc!HAfjuf+_2RUb3$ zp~$T5&t}*Z^i=W!4XxJvTZYPT!>C-xay5OFf&1}6DrSu4DTC2Sf3fgA`NT= zdW%&e;YrwVV&*I<_Wqbl-7(%g`$-(_j|JwSx=CocnEHfi^Lyj(P>f*1o%)534gc;V zSjf}fCpo4SBfA+b@+NRIM7&~7oz__~;uMe&*kl@{8K5{JGYKStE*wUI;A zRAig%YMYOs3j_jg0(K5GuY?a|3Os@f1>murNw{EmZzwWa6Pxy%Rlttg%f)80> zx%k?01@_DnIB0Z+1W9s@%)YR^i6nBJT$va5emcb!Lt$`_e- zE8l?7z_-9pqAVIxRo-&K-@TN0saNb5Ccl1(3R`h}P&ws@VVItL;x z%N4A#=RK~|Q{K#gV%r`?MJbt-AT<|0(#DvS%cQx7t{S8eqCiikn*E8 zQC|zMiP6Y*Y>IR4ZbHO$F-0BDN-18hI0C8}Q4Ia~vLBmvGvbU;Nn!sw(!DZqFw)CG z@fyZ@w;y@8dVeLMU2&Ve(dRaEw!ujtF9(hRy9j4ICaQ%HD&cZ zYPy5QurbNG*hAK3k6VyBb&bG=Vp$0gvO95^pN7cnlw((3k0I5nYr*A(3EufypA2ji z#k>{J#=nR|EMP{MkZ;CH!O%2W@wM8O9S~}|HgN0l=k^I$`|fW~X3?UE zAg9rVh&`__J~bjcPZnPTTzkRdH6)S$B$yeT8H}44ZMt_1N#d$U<+zzvg|2Oda09T} z=r()Av%Vc@ai=C4O9`Jx0%oKU~NcN?I&+`Ua_2{ANeJT&LFm_ukw|ESMx zqRJ?C0WU8SZE4|A5GyCpyBp#Uv`US}2`)?oKq5V*4V(XvgcON9q~3_4eVM9W;b)b{ z?pw-f-kUnpdO)M>h#GkEmEa0bq2w%tq?*p5A#I6IKJYpZ;v!-oPW za%do0#Hh>3AtL)-6mG}NYa1UfVI2%=M1Wl!L!mpiKKO3;PDTPt3e@R2?<~Y>oBufn z2?zxIv)DBE1Ns>K|AN52C!>=Xo=!1YboGu!mW%YVu}!k{cjA*T_25z=bUNZP!$L)P&&`oAo-b_23HoRsS+=@cqdWQ*hZ~!$Y6ep>&a)e%W6egDH4aqzCD?UdRn?(UHn9y%fD%Dw8Zyhj%l|;Ay zhW%C2nm9cr&}E8eT$$+)Y!)BTLw^!{nNgRTSw60Zv?f(u5#>E8cn=1skq;u+Wp7RB zpT(E!l_WZ%b)r5fg&V9VZlu>~qYLTZKPR(sa)IN_t|j~dZWtGbNP& zdV$c@s*ZaChE-zcL)PerXip$tmRo=GK+tuI-EI`e01jiCyoJ2Oc7$5!>?A|!?ed@#j0u$rv)fsCZUzr?HLGiKq4F<~c*3dmv)2=bMkLG%9H;z!px@K^ zqhz>dppa({RN%0g4mHrC6MMZuqtAAsRXKQ}TKDGQ@mx_+db^In2a&wE35XZgUv}34 zUSAxr*uj76R#*aCk)TGl?T3hwAlu&BL-P*?-SLjw3Vnu6>x=|u?b*6WVt%6Iy%>Wt zV*>6XSxEaPtTAry)XByIf{;;u+42eMxv_RZeo6MGZ8Op)jUR~gy$iD3 z>kHCkyJUO8N@<{MH;OUO8OcL<;THpnj&nC9byuT-*O2I*4iO99n`NnO;k7kSAB z^T;62802I$)Sn*c@I$7irR!8H!0{Va_ebf07)e{iy!pFM4X~dE$$H>%PC^dmJ>wS8 zw}ZFbxsOBDgpYj?hMo5w0^Kaix;bcoScu!^KW~cWzsVxB^~&;C`meMGSDxH3Skrt* zBP5J977!fuiR#xC3Jt;ug-%VRUP8o&w*!m?z5;0q3k^{qF0fd5oPT_+5xAo#Mguoc z_JO}#CoKWdW^VJP{B?PZtEPtg`aUSZLAw?Zd#{ApPYGJVwnrzjj&8rZ+V3X~+cviJ zE2>0Yc_*>S2TU=GkrIiBK7L#ymF(NmW{m)7miU6`g4aj|eyNF|E;u6I!-GRoadTsG zQ$fpDM44Q;|68SFJ4~p_HzLrBS`lb6Eqw<5)BlRR0U7hFM-#iEk0#x>I&Q7X2?HvF zTyUumInN7;JoXGz(}#uBf?3N)bbmrmArwgn&-^-8B2 z+f>`k{9m4>Jx%z>8%Tfmiz`i6*Se@VJ`x6QIW(Sq)!r^IPsu4aaJw%43Ch>c^Mf0L zLi!hg8{VooxxJK#G*IXi9*1TgY8e8}BHTtJl|r)2)pOF|S;9>FY~#w>;8>9~;^M4} z_qBF~%uV@n0abLWv7mC`oCK6_CzAfFEh2l$Qq4OTVQ(5q26YT zhn-ortylc-(r^SZ;s+r4^ooEBAEjs*i8OwiB5`Hz$7ZTkfceI$vnTrb@gX+wSdWv` z2>6XjYurUM!0S}E2nIw;w+4t=L$61#_8X(PfQbM~7%rSY2Tc4GK64$sX8QbFbD@SJ ziQGsnr`)*vr4aA7QOSDz22%5#j!Ghwv!)JeRAt+P4gKR!iRmhv)mf93*@G`rB%@ii z@RZ46%8gN=#-!br1o(ej>mAAEoNm=9mR}A1luX})l-gI4=xUvs%DumI%ZawRPVb)r z{()IPr&P66h>|xc^{9BQd(3sZ_v5{%$ke{=0{QL7wU}or-fN0D*MaE9V~Q18owb-l z5R=o(%sRS>Z5Kv@75u7?CarPTFh3wS3WFh7RG(Lf;q3(cXI(#}%6;E_(sU%o$t98e12J_>P@_H(>AjT*fDeCGM4qDq_5)%0fGu}U-WMn=B{(PapFdViw;0Sikp5>50;DZO4sp@NnQiuXTCDmZ-hAhA zid~xLxafFpRa~;fG^7l9`8oyAyaM_^7Zd~f28jItQ9)M0Zuupk*Ssn#6548d11lyW zYx8)J_BehXyYTg3mUh?Bq-k&0>*QSzm)V8w%@m)D(kYT>%jZpucX7z!}`^s3h zC%bq(gZyAU;hGB&OaE7e zIxa9CwOP;dMP!9wrG`9u^@0Z8muiUtW+S2CRWICra)+Ij03U7?Z_b}gU`aM^LrP<7 zEhP}F+VBWV*k<{+AtSsg%wDb2KWwM%`|)KGj*z~MEs~gmI*IRvN z+2t-+VTpT_cVl$Ijh$kR!{p!U@G}-d#E=G6ziu1;3>@iDhgBq=>x%0Np4 zakR*;1x&CjM?o@yL;cu?){B>s!KG98cL_7>o{n+7))(~%&KhGueii<^=8h6d@m=TM zN0AHNW#glA49QoHZ~cjv*9|TQV(|->-Z7T0bU}7oYvzOO@TRjd`~k z3Bj)PJgKf0fPkiIJ8(T(oZ*!{7w|iK+X1VtbP}s=(A-@w*qpuaUPF+ACVAh3*CvGD z+<_wbJJy1q+F2Te-n)DxvGd|M#5YkttGVjkGE-aNrXn7o3)Jd}ip#+H-P}VUkZCFE zr*)-Xvr&LF=Sxiapb&X&hv|XyShCrRI@e#7S%XuTb?{EJQx3QCTNZ0Kx@EgD5Fc#L z6ML_J6zYeQ4{Qhe?j95ZC}IGXywiVPAil=eXT5c4JK=Ic-RNd}8G@lJ$dj0iG4fOo z%_OBck?O*b6NcRn5SU$wY{uAqO&yNh;tOQKy8v;-@hLr4TpI>Gid6^-KV)(mv`DJE z=`X1Jx2uOP^-h#2*GFa&!ioL-WVteUFxSHWbWbOlaO0@$Y+CzEHMPryDDQe~>;I`Q zh3x@W@I0k-R&FllJdbKmlFa7X0wr0{?G86GUkRauhh(mld&Xql|8a-&D2|19|FAXl z^cxyjw%bxByJWtye{D?Qa9}7;H=j%9KAyR%T{fL%Ed3NsZ{6GtR3XuafIKYO76hWk zT>OkyWq+;%bq>hi9Jt^jL+IAjdCMDr;_hw;e%|;lV1InSzifQ*<(r-Qx-SW{bD2(g zF-_DRC1l4zWK~!9UXrQMEj%U5HF)_hJT#|{2&%N76xu*47jb~?6ozu3^{+fOoB9)C znVt46I~(4YJiwC`m~0vk@O0-l$t`QM>PJh^b(W9qS3hsh|9qk1X)le8vr^Mb{)+*W zL8Q!La65aZUhw=7pUVRotAN)3_`$MfFdK>mezKR*;@X(UfD{GH+LeBl%vT_!3Sb_# z=$}E!+yD;bH|Uv@?LZ;Gs0ischyAM+JJ2Ny>c4w{1_&z~FL17wP0!7)rx83Zy!WUd zctQ1D83Fg8MfuGG_rFS=by{h2!omNi1t>+hbTK;3gZ29cF7In*c5gRthBhF&pPk}I z)tub71phM&@c@I!Zbrgg39Bit(IZKcD^xVha!lXG4@4)T@@^Z#zLo1d0h%)TSiCsx zgseixPQJb_d&B2ZUQ9JUh%Cot5|As$kXhSDpE$s_r|YGEaduZupI-0bdXd>0UgtS zP-m?86@DsF?xM&K$=g_m4spLfqu7zvk=IO}An)X;m|2p_z{b=jVj>@AM!C2v9d1ea>O;=;yy-@~n{o5^ z->)OQ-9g0YCw9$h#YXw4-R8PA`A@zF^NGpNdk-W}Ny%o-K_Ov+|1o5gR?flkgn8BV zIpS?H?&}NT9^@Shg*`z4)pUr2Ahk3zIAEU8o@ijfj8)e1H`7GX0OF+99 z2!iW`NT70zR|cfRqhIR0b47``sk~`rRiS^X8RNIO*roOE>LYh&q(1%@7BJ1;K!qLx?T6X=}-Om=n;CSi9P7LoP~4i zeyq&0{*LeU%0-F^cXF}@Qe_tF9Sq0LvC=~9Ja@?~TtA~OM*JaJd#v8Ai%$}0Yfj5L zbnr<{@O423MNXvB{?YU0o36pNW^*!f9M!7IX|CL!CQh-5-oEUeQ{&{{CvKNRn=x>g z;?|~Az{ipw!}ns59%~V$)9r87rJoq8sA6xMsaCqaQ_2@<$9(KK+aXjglYAj|muzz?MRM z=rm)x)_*eZn5l^*{7F8Yx~t|W6zXrG4KLG1Bf%^3T|X6`WyBiRBQY^O@a5Thw!1-h zP^$eiC$?_ERJp!qKis1a29?ME5wSjt3S6Y94r)7IKKI`3ys-&e7# z=3NIZ)fMI*?*XcB*%!rNjiKC+W@@_uVtJ2uT$&>Fd-u)!^my>2cC1RlOWO=TgMH4P zJMV|g){tJa2YmXe1$5a8$pasR_#A2d{aX8qAiA0i~$KzJpC_?4IA!x7}M4|@8Y zQf45mUh!p45yU4ZP6b(O+{_LhK-$`{x@5PBuQ3vSD{C`5Ya!^-S!)+3G}13hY$skE z)CJnE#YZUU3OY%V8KSTJ+2sK_WTehvv0)%-?b^qb|3|`@fAP}z1=n;P(G`s5IL3>0 zPjS1L8}&#j-tyWGh-LSE@k{{!WDYyx!)|kdBV}5>JE1=GNVzwSxk$M`CQeRfH9JG* z+vw!g$2AQ-l@?&UZ<3X?>H+1zcrU<;PcHFR8N|!qXVfnWL1BO)iWC<}^$8@&GMv}+tm99V7hq7b*yqKaWa@8st`+=e%`sQYoef;A%fJj_vRrl{KQu*S} z2pW85M`jZvT0l_v#rpf-$JPo(_9xdDsLAvIDBE9>xeD+d8q0SHPsC2E=M%-P$qYU! zSD5ZINO~(_EtU0=^xs|xuFzW(zNLLmS5mYkRpFo?3ZaPy+Z&4Tie#pE;EQUuim3b3TXULs& zq>}+0OcAD)9p8K3Jny@y00M+VG+>Xcn3TIv*$#X;`V)cb=kx2i2uf1Udp{iGuzaIK zh8PUZAWJk^|P{Nn79JKE7hcQOg8R^wENH-fF_ z6WJP7MzdM_m7pC8^%~UM9=jSd;}-j(^|~)#>G(U)J2Ui7pH^qq+KV=Gk8~R9 z_8X1i;dravYVE;*p|f$R!(A@@ zx4YwEHVco;bHGN`7lb#KlPrl}b=8;%u$=?xPntfCt38rp{ku8Ius*9Z(0B>~=7?le zPb^toiomir4|4`)OPdrss&xET;xPOD82#*@@(s!I>+p+O%eEX1v+NpE+Zny{rWmVS zxoeGGgRtrO)FOJ#zK~*w*L|15RrS(9QH-7;VD=+&z~$@mI3V1V+yKSIyR`j_Jclg4 z>mD&*m2dUDIo7xwH3Dx3Fk6wops`~t_w+xx z)_CQ-NF~Lgd-)~@3ELZSs>GXtrHgS@8l5q=7Tb6Re%Wi7y z*@hXm4y&v^POzj+9YspgLfsz?RU>B@P zZsO7HR$8oe!h^Qv{`C9lhT20SAv6o9ot1Of>V;!IPVOHz}4{Y;L?H1{VksB>>s`&iia(R=Tm4lT| z?l{W=@zmbtc5aPn3V`Xo3A~x|T(vF{7Gjg-;Qmj&1L z1JsqhFN$gDF?+=l&&B6QkJxxl^0eN(ybO^zR1*}$-JHkrAq^g@cns!2ArVUV69R^r zCKCN;8nnk9LAtOwb{nnSiLGfuza`q^?KLi@~wchZ)ghp>qC-Xlg!_8>)x6Ku4-j4Ym2g`OFg~r zX%p}ai;K1MxW@#e&-B!ZDNM=macsFSv}bmi!P`6KVR862SH!DRUhHO-oFLvYk9}%s zO%r={g;(&cy}{=R}9pt`D!MbNErFkybW_WM^Wj(8gl9 z<7}iNNS5un;ttD3I6{J1-Z?EgTkzpONBCKMsh;kb-I4vghR#pbu%Pjx6}|Z7#zbuXsdra~ zUJI$G+isqS=0r+8bkkYhmwfuW95PYb%dd?s5hK*3>g7v6$>`3WA?TxtFq3|i{1xo! zrF*v7virIoSYQF=k1$Dc2DVY*^K7irS7sYP~?rX^ibOj_W{ zobeS6o5EUOSFxw%z!aaCV;hS)|4k>o*$~?u8`Y~crEGdVh#Jq_N9e7`Z7dO1S2CK` zUqfH`RK*z2Us3$5&JgK($Dn|L+=gw+4i`}Uy70YzPwlruiygbu38QYKp)wla^AR-e z3~+y4Z7g2wc{KKkJ@&%WHooh7EKEk6JT5DOEmHZ-P3KB$${fK-I(D{#m23hgH%=$u z)BzPp`eeUdnBfQxE&KEmY#ZO_iSX-7zO-?g@X8HB7Y~Eb+)ABLc1oF8Q@f@VVRXVG zMknC);P^7`jgUJl@=e~R%K-v5!-2YTE@NBT8IZAe=#-|IT0``$4{ygj<%iI_HIq7}x2NYTO#h|IgePnaewpwqaH!I*LO1a$B}{XXH&+W3M?(-OabB)}DUccm2ZoQ zt;-3kk=JeQ-y1Klh0oASQJEiDu#V9)Tv#f!d^3SKTxSve_vKK|{JyzPy9Ec*1X7%8 zw(gkt!5Um(ff@thoZ|YNT|UCP3ydwMlKMRCQSvjs%s1V)2b}a-_V{xRe{epMTwwiC z*VsmGyE4Um;NU1)sGn83sjh9oj3qVP9%Ns*_}ZwYv9$T+r?OjvX1Be8tFw6gKrNT^eH!R>%#CzLK& zE>1r0=Go-2cg^E+@+{ip#;s)E?o)Q@8D2%Zspj97XNWP|v5LbU5w|ao85G}qn_`^> z7w92HUm&sKj(}edWW13`tk%ysGDnyP7Oo?H<6aNmPz2fX;N_%!s*W1uAgw=IPp&NK zw91XST~qpyjMkmR8xv*@r<*#yriTO+lzLv`ZjQNCsbFRFg^koI4r(FTChB}w)ncWC zd<_UlV?wQtAIUZufOaWIHBvb#ieJ16gbOUl{SEqXfWRNj^exlNN~e23w+dZ+Ex$4o z5(}{{7Xb!@s?6`rx$(I?rink9oU0h>sF5q>M|Z^-pd^#c66f9SHwA8vh03kgDRoCr z^E;iV3KS_@ph|8(ZZ|~p;ydItCz;uw0~Zx6d($n}nDpeF+<)LF|JW}0$^)szkxpHZ|sNH?JyFN>YbC}9Vfkz9dUJtYuMgK-^@pify;-H@4wVagT7Y5>{K>dY|8z& z9kYbNSet90yIEN4DtQ(sL<%3!HC3+!>+FjyKD3fpPf35D_QXm3x~0I00dNwB?+X9_ z|DJD*5JPKQ5Ipi=KJ(C09QIqEEc|yN#K=x*7_jYmBlj~m>ihHjr%n#5jGy^)t5^)? zV~^0m7Dz2yp^E{ehadknEM8wPS+2m9)>t40$ZLukv~zEgI?zw?e{!!LpCemg7BQ9qBcFBBF1uiezZM;Z zfy3i46`&yA#j$a?sI$7p8t>{Yg8Me7HNAr#Co}K!8`O+(swTi-WD;e&_)C0oVeJF6 zl-E_?H+iy5KUBtqKP(*I1opJ^eS-%kL7=u_(_kkC%=&(dF#J3_ZuM34tCtXJg3s1H(FZ; zcN#c~&)Y0p2747vQC@$qH@?MjuDAFqaemAgCAif#Qmd^C?1-Tj30KV*1Fh!4PTS@6 zi6*GnVyMLwrgRM|2hJrTJ`Y23!*781%5b;U28nJwqt?Mrt~!$qI}8f-w7yYZr*&Sf zi*<|qxVb0UAPQBiEOU)u{zIveHJZAA>6H>sGf(Fo{@HBHii6u*4GXmcro_a5l9J68 zGOQJ9X_k!AhVRe)qLw~)<%~-;Hj=@3(__0eTBz_H*KSu^$jiaXs*54(C#ES))RvdH zq^Q1tm{KPyT(!^Aq>YeaId&7OhQ^N`DC(0*Y$iqXRT|3;>SXgy@@q?tR~8p=KXPTx z>5;Uj7<1M?hIjyp@W9WMNbx~aH`m;5D9Ls1JOjkjwv+2&a8fNCt zWqGL>j$vG)ChR0L&X-nuB6?0Yi!JHRwhy%WRZ$v7>4(L6F-(SAk-|(r_N6%GaKHIS zq!c&opel{JO1cKaAn!@HQ-umQ*ac!ttpJHu;vz6EhW8ct*r<)yt`=; z35WfNVgTBSic3Vney$IH@@##@J1EX-HQY zHqg3_z=>IcBjEjfvD&XD4Zh&?t2W?+C;h1yEqlpBi4s!kK|+`E+T42J{6W)d;QgOZ z5;uu_7pZ32fnTaO)^bwJy5)@$D&BsnK0TR}2UZE7VAd&)d&}tA7l3*|NcN_isMW_e zr-Lc$-7>+CEQQmf1ZB-b?bveDMn>P*OH#PdLf-KA<7_JFbbqc*)pw|U0olWP;l1n3 zD=xk%j%8dW5b#Oz2VE>U#*l9^TYji)V|fJHNZUZ|p&)*0!W|mm^W&362Qy$yRWN-$ zd-~^#DO~E71+OPMmb|9O0k?+SXRr|WW9nY;hvUs>Y6}BiF=Te*3Mz4()wcNHdFBfEj3aM;|pA8^a zZIdJF?E@Kt*98{3bG9AOl0f+W%Na}k9{I;x+PU;&xWUA!-bBdbxHgS@0ML(L8IKfp zq{S3<(v-{3{-A0q4%|G&KFCo|^)ycpc2!w74@v@^r9?=PIjk)x0ZD>P>^`8I+-CCVcD&B)`**R8 zz;uq`SsgX(Leme$;7$Q&IvX?WYIPh_n?CbM>N!!f=qymK#ntawP{pQA7;jI zGipmByj}dd4NAW**Fjn?+j4uLw!&<)xQmf8c+fl=(KgYR!}$Fz#W5opxAnN8I&e~s zI8gS6sC7Gw7X?atnF!K{ahx-k>iF7QG_~v)p?rD&iqJvns9$c%BWTKWDnZPo(iDBP zVt$HID_bUF>f)Vs(a%z!Cv3M=)#^HOuz9?_DF2~8_xEe}U-xWIbc!%8*@g(p40UNh zM7OW@i@XBt>#Z)8)VGBBiuR@@f z>HTc-8T;GAf3KPJwwM5lvK+#0m z4;4T*UhTqqbKD1VdHMB+t4f|jZfnEK4RM01d=;I z;cVxQLlSqqbdhyIHmUC}L>3NYL2v$G?`N>-Z$I|vEi_M4tOONEO87lY>z~33+8;#bFb_D;>KOdrgdLmNUC#f$wM* z56BgzZv0pZw^Z?maH=Xr^QSFe%ylQ%4P=bsgOeQv3p$p}r( z2nmR&mCEDgM&u;?!#%8t3k8h};%6cO5vxVL3_KX!OtPB#8gd|*!Xv{J^o z!Cu5MCE*8Pn(%~I-cl6C4xhRLtWj^6R>jkVmDt?^8U1c z*D9u1PsxPA1Q*dJPSv6)gS_A&=lE)j>S=50^ArUZoMTwFB22@a?*J>@mb}(mkAGN1I;2*LQm$C8W!`MbQHR9-EuY&SrQVvXl7H&N%cVm4t~8YnfIqZ}pXmSSHYs&_ z&_3RgcA4(slL{x@$4oW0Z~VI#_tjPWReiK7+h=|o-f1Px5p0zLno#SVgU+Q?8u0t^ z5%PapfHr;yfyLxJ_%NTO#Q=%g>*6VHgC#E4__;4dvens-68_q(F4*gCCc@S4i2F3n z{F)gn`m+#z*YO|_dA%!*Z?~a(X@H9`*%8^xxxmVn?!#ug8~7vcuA1(PMcIS$;`qcr z{2uc?=Vw6ym#${C_iwrjA%rOAYjmSDJd0Ez4st{&cbra<{rs-nx3wNA8EGxVA&tO{ zTRuNIjMcbG#wpHpS+nBBw&>(}-(Z^slT++D#04U-2)uxp+Xt;amE4~eZOi1HL!N`n z(ByrJ+vJ-OAvA}x?}fwcr04o-n|tz_B=rO46JJ7mMP!bk*r~@?VE$muPLs!|p)qW` zu@cP%YBWYkpoS1cT^VNcws^z;?{2D zZLMv8^r~vntH{FViU^#@16~h3+S!BbM zjDd%QBSsHP#MX*FEe$&;+?Yz^g@+)hACuPXNWeZfc^314$G0`%R9R zkf-iNaoWnm|F03!o=99&8dgnQb9=-HJNc_Kv!7=S#0Pe3A{?c7U5HpVjy87MP^hWx z&rkiGmKkVqmWW%-3{qT~gv$Ia$GfBM*^?Z+D!-&Xrge*BqC`DVu$*&Nk^)Q?B! zKMAoi&i6V%rWVhx)YpztT30Xdsd>R;oW`b}Ifj&u+)p(nRxAr&{Ilo}D6|Q{tY9ot zFVP2~wT;VG&1qEq{nIWd!9qMm#*Eb{ZKe95KVi2IE~J|LU5ZYrHm+U5?{#ty*6O*cx|EP(X%TT?qpT8Jm;s6Zp^n=FUKY#}N z0=-5N>9|}2Wrq$l8GW!)dji!6sx)*7NLtR_iQzH|xQ6ch3h|s}9?kS)`|WnA^^Y*wpVBCY0%U+dt6|v1>dn{~q1=r%$uUKzZy#)>7THOvf&- z%7;(8KPD%u=3*G#h}Cb>QW-8B-)d=1eDZ2$1e)zX`0Xa`ETvffRwVLi5!8pQ|E=i% z@bupCY`@?CKT1ngjkemFMMJ63BKBx)VsEipswJ`2UZtwEMXjXvju|_M5tLFht&voy zJ&GE&x8L*idEdUjzmr>Tw>+QMb*^)rbALQe}_A9Gk8s*O+4?kwvQXO!%#URh^Lj`ud4b(pw{ufs&tOB6t4UfKCW7y z{pwYzUbJC1Vq%s_`B0SNRDeS9QojD)dy2zN6gMsO$mnZimZ*Y0=gAt z5$9S*ZZi++RIl(IRXL(g2>8O>J^58^ondIv)Sv0r^G&mz`QdYvJm4oVa-!h0XLYKt zeayM0I|h%jAhEzprt8iM%YprJK+-&xGRl00pAXQSLg})Qt`T@UOP@9H&kgFfft{XS zwi4`u_-KzhmW})A8+*|6xT=+dM%+INUH=ljB}_1i=NNHYGFMQKpXuE*!kZm1&R5Nc zg>ASVb}UaxYMo$~zg3@0QQ*DqM74z+pNjKDPG6a6yIhs9$}s35=<}n*v2) zv<`7PN;|8GM_KTB@|Kg9&*1f)093tRA+jC(S|L*6;%QK?%kjN6pKGW9;Z*J4gS*XU z0IgSMSb~tGx<6VxtRQ(`J_Ht#gf*$KN^`dw7?^c3moa;oxaJ^0pTu?8_-dM+``~Yo z{&48I&t`je=+f;*A;0#&9RXq5(_6G1G{k}>!L`XnkPOCPZlbKg5`A@f?VkRY7`;{v z^_3CYLSNV9HVL(2#KklSJq;c>FI;Ol{DAtp-Dozedp!S`$u2NpB|Vgk)~L zZx$$+cG{HIV@Lbf6|hw?Bl;`KNT_Z&%be+Fc{y9)M@DF300$_+g4z+#J%QZ>+KfS$U@Z- z_41Vq(}!LYLKbN#)qV2!>g3wb8_1u(tTGB5!U65jQ6gMnNmQi@NMlGfN7-|RN${Lt zRCST|;PV&?M=WD(vP*pS#Ep%&---f_o*w??X@tC($Tza;nZJAceOfFHMgiJXq%`<~ z?1cty1EaR!)Wz>uwS;}^>>vwhYM7{30Wpkj<{@S94Pd@q3tjsK?Mzvj+?0p+%#wiK zHzFCHaNT0m@F;wR$9M%D*t;T7lZ_=@8;9vzC0TYcK@DnHzOI45g{2iJ)#dXJa6qz_u4EwCBGT#exX=p`^5&gZrZaC&{)e#? zZh|BB#v=}#Ik`Rlfls7->ec(|r%$r@s)ZkbMnT%Ui3@>pMhKPa@c}T?D$(Mr@TALe zW*$vKoe;_Fo1d-{y{jHk(=- z*cfOz!{fusTNKU*NA8qDh0mntgksD14N}LtCX~gX5h<4WRy~iMLQ)zp`{OUs9UqKr z*nY-0u+*%aoePepeF{46+i87FHx#Z_8DCey$zEcXL$h3!?0(mzfE5JfGF)am2u48i zR{}Y!A5wwb#})-NGz6CgG@xL*ES3&(iM@VWpKFG_ZYzKEe&`^_F6sZAF0TYgb;B_V zCzcWBpoaPmROSuSzW62yHt8924b01>EJ?)M6zp{)))Vf2a-uZ*u5+PN(eJOy@kZIef*i(z~?h zfJVbPz)(dMa}{D5B|a$fn5I&#*C#m{Q=)>+1=Ol9Nf7?uS^q4DalxIxuD|E>ea{)! z>@T@@B)Vl!43>wLEhoT$?rzjxJ~E^J`u*;`&O%QIr*IZ!Oo$SwAQs-A_o?S~*ZNYq zE<{B(pBxL=t!`RW+y$Ginl;|Pi>@HBakiv*#d+Ryvv;O47Gf!!iAV_;NW)HBecV*Ls=dTB z&H&@Dyy1z?hT$Xa!3g-dQ8y&1t92Rs*(@{G*H zY+1F~;WQNKd%Zwq!6YW1bdXar23eW}8vQFAv-_Xcs>DxBdo*XDT|tfRstc7r@4Ivc z&f2u^-x~?_X&IEwzhAR+y7@d$4{<)m>Xgv2-qE+J>Bu1R)K>d9m9(;MLKjy8LE-aF zd&b@@VuSvn+0OQ)5O2iQA5i8sTg{%49gaW$CHq5r@o6TPLa7)u&qt5D0_o}|_hi#! zL@q{hdBX_wbWi)b0;3K!gB`0+x!?3h?e*MN2xWRfF^8SfU*XxS8j}#Q z@MguNDhAYhiC31(nz05}-(L%kZ*d8ZUCO{osnwM{hSAy5d6xNn%kTc#S=w&Zre<>d zIMdt>9NDx4gI$Oewp(W;f(I3{rmq}u%yvIXK+so<#2i)e|F02ex3ay~^z(y`Rfr_4 zqs(Z;@xUdEMjUH(Z}@;U5$yM}KmQbkdC^3jX19mQJ@By%DV0h5yXRN`=^KnyHDE*b zOMQF~=k;dJELxjyC;M!EQBv}HpB__@!Ox`~1qaj7z5h8$TfjNz)&<_Hey&3_d@&GA~txT{8 z#QrZWwHBS>?7AKDb7=}mJIf}l9N|~1eB!1s-FlNQ7#!{lJt>g9{UAaC`Ez1aioFj{ zPoG=V-FqY*WN;(anwMm2AHv}DUq{7fnxkYYQ}_tA=1w;69se|S-jsb|{R6+GZ*xft z!+%y{m7t}YTJaC(7LMR0pdQgxf?8~q5F4;^$|3E%F!2STq!)B=| zdEG^pyyL7i6PM!2oRyZmq{6Oaw&?vO{B#LhNokS|cj z#`8PX26QD{Qbo3G#uX1q5EntcdD_2)t82#u-cI(dCPhj!U@SS zDQk1AyU-V=U17zv#<13?^r z=*d^Ip#L6LT2-cTYi{5+Mj^?lX@x|wv6Pj#q3A&13)7ECHas5%FZ1hSkgMeh<@NV} zl9azAl3#qNBOW?f^?Xb4tZ<{pw(#ZY`+Wq8u~iW#t)nblA9+_xjF;A24!HLpVA%dG z(?W{ujn};hR6=4kfFMP>gfRN${^%EZ)V?#uN=~x!qUk^r%vda`fF65&H&Ed>Jku3K zzKKIdV~Is(8i7-b0j-y~Ng5Y;JTCMbvnlWTRmgwT;cEV!n-}y3`!!icBR7S*=PeE zLgaKWy;gPs{f&F#*nTHy#^cv>zhASB6Z6r0-44-*?~DnrI`1?Vg!bXOXF%*kdPW?2 z##BWi5+*(ZL?p562>e)B8s8|`zRzNQtYAL6*s?7kerkLF)!DRG=qT|SJZq4u%+8BJ z*zNNuv&r)D;zAmm%Aj?T3=o4YiaoH)E`oRKf zD;j=d0I8xDuT6AjOxSRYHCHYUiv8J?o10+e#$i2E!IE5YW#^wJ9C+vZDgdbUxM1nY$zSU^yg-Rq>+q2kfzkbLE(R zW!K+ez6HkzAOh>oIt#XmWkTGs)8Q?suTs)HC=cAgJ8CBOdjtdK)Sy?kQ54xYad%+d z1lu{RR8jvNdal4)+O^vX3@IN~V4_QKnqTcWtfZa_u_OqAx4}v@UX_Gd@%@RmHFQLX}tU%3+-OcFvVtHy$nz z=Juj6ALZXFD|KJ|Nfx&P&zul_mKWwnhR~4~nO;;y2aEiWoZ>@i<&r|mJ^o=^Bi=uOX*IuK z<1%FVQ~r(xZ)6ewq^7R+xk_)|pz;&@nPqwGng_KX<-s1EhE9_et zxq*KKmxZ5>a-N;w`u28jInY3x`t4(4s$X^--{BVK@IC32w@8i3@(x+6cL$tY-aR3) zm{+*1jE|E2MO5qN#nH<{Ta>QATVbVRhj$#A5n}4_v!h12BBos{5;zQ3LP<~_zrPj6 z`III7G6-QP#OurG^_$K5{-(8!?J&bOnKV9nC@N!K|37SJw}5yCXF@7yozUM$d=7hZ6KB5`YrqTy%4u znz^3s16~H5-tMDTeaupy&cuQit`MK0eq)UonYLQA_)=xCL>T$R1Er2>>`XxPy}E00 z8%K=x5fpaa#hbaGOs>c#e=IDpfD*p#2Cc}T6p6r9l<=&TIj$(ozcTYPL-ffK5M-klOt=7}80s{Rz)|S|9msa*gegoyiY5SDR|z#V_m= zX+4u{hzoAdU*emEUaS_TJ6|VWHP{hQt-xXP+%{CQv4xgWN5P zY$|by3j0ZMW2N7N43*s!mgb3gD+_Il4%a(Q9nI2<=C#-AEUqKZl@us@PF+Wm90wom=sxvK8%v39At0be$Id zX=pon*+^<5G^}gZ;D~cqai~u&jw~r^(*_DmSkF=-gzWppDAHF=#1pchSIo$9qvRhf zW{cmH9|(H6f`|#K$V0mZUSjozf9u}MHRhFH^3;6}^;7gPC2-dJ40jKLqW7=w?pF3T zCrYCyU~$R=SoE%N|6)ISJcJet`eTU@_AD@?ofW4D=6pk-*@972Qg2=2i460;6V+hm zV;h}5u|2JD`p{84l|^$|6z=5g#+xc_6FBSgG^S)?^+&p<)>=DD(qCKZK;5nun&OLm zQ(*jzAh;;D_cMM1bAhXRuEO}eyXExMVb5+fXVAH3{3tj$Yrmi#_GWt)*{u??0YN%v zg(7_z0#l=`671wSTL#^)PTfF0Cgt7EC6Z?&qC6K+lD7_Ste&P4`v*eQ{6TNr??%nK z1CP?1;#~NRAH`t?l)=d{O`F@J=av5&wmne}+Ys^lJesf2Xfyr^CJ+;DWI$s3{udUv zH-|?R;wy)XxYR0Su(Ieq|F7Ef7LT+ zy2EJTy;*3`-uw*rlVnB{#<~xA{%(~Ul#NjrA3s1&PAhz@;~B6$E_>afjk~mxE{(Dt z{KKqmGpx&Ih%UAty5l>Z8Fc5tlZ7v5MweOYc%4nyvwWdF_l`#Qjcg`@?H189q)%L> zSW;KIct6sfX^dsH%)$>f>v)GC5dcM=1Jcl{QxElW$GeTN-QdrY5pY+Y4b=57KW?UZ z+2p&}vCH$Xn$?|FXb;pw$p^c}a@W1v>-H4P)s5>|H3}#H@;-li>EPB=EgVh?R0+Q1 z=J~>$opf5OS0QuZq5D+-C)|d&WXu`{E{L9n)ol%*6SsA0ipLyqN0vmB5cg@B@`L5a zM}yt}>TkY7N?dBVd~N#g)LJ9L8~sm@RFVu;we zdi_9(P5IDIg?9Re^5Jcs$P=co0yiA-LXlf&rmu3!v`TlB{o8~uN|?S%y=R&NzBz^<;Xauv1^m`3b**IDAWN}Qd`c%H9)6*E0tZGB10Ef)E~ zjnPSQENBi(T@$*0lCN38eX=xpnK}Mt1xm7Eul-q#s6*L5O?HaOjMVJ>Ongx^_NDfq zf+%m{k7vI%bI77kW3*j!DT2e+g0sB3(vEGR6&(n-O&@_jx&_e95WJ1TvpZ^EAhnx- ze@TINq8`oTBr1sQji~4Tx8HF0NV`)|DAUgF9&y{ktvB3X--!aGV`uH1Gz*8y6n6jh zwle#IS=HGO^eMO2c_LBvp9c0*fi~m!l7Uy3{8eaY`QAVGccq=ZL>Vmq<`wXxXC(u- zDGsNVY3(Ggb>=lQ1&^vuyq$v2nTYdv^GiT;i|B6NEhwk99htLzIne;W&h@;t9vjTa z`i;!OG;ku}nj6JFai@s1kB;ZE81wB{8;Z3~ ze|3#T2K#xXF4nqNuU`v2JJ~3zmI0Ktqj2YIlr6x!otNe=+1sG7H6HV%Nn;y*&lIZE zeW~%nR);-mR*K^E&d|?aiX8JskH9-S6rnPLI~tTNV7(fFQ>O0U+e*V;17;SwPTGF< zQr36N8(nlD|BnR_+S_xZ7J19X|I3y>0(pj&WN)aKy8E{7i+l$9uL@F8Z_%$&%J+}P zHD1e$8eJ=%$oTf+yz>_g9|H>-7jdCY&-RW~i2KXE%L8A%{Ri4d_Px{+`18ba_rGu* zSo4jk%N`J|`Zy-(EA3rzQCTGC@hWH6DUnoY(5S7RmfnfhM6BcRwzJG?G`M#l-MD|m zd=uy;EgwI>gXe6&O?fEvpFu+hg<|NPD7zKk=T~82`Jz42ca47jvJDNqka%-j|HdQp zrA3N!$26I1oy_f(AV-m?;rHKxnFuRiR(7t3xcW@@vTAn0e|&hPAnC7LggULbKfRLS z)bQwvANAAb3GV9VsFS=K%Cwu5Ggg$RcPZLJXJ;pQMHERvw_SnO6vW>|{Na+BNDIzS zTMB-xdD1sgw5l^bVY&)4dXPYXCL${AHo}a(;(R`C4v~>#47mmCv|5?<5Ac&a>PAV0 zJH;U7Oys{T)Aipuw&K7_+(XKRoG?{_DP`#Mi>fKL&-+53i;?X{|) z%7cu8*4^>=o*;#jp5ATT)rU{hi)5%Y5(u=mpmHn5It$~j>h+qoqmzH)`e;z{=UP_w zZ4Nrr$ygY-HK(9{sc5dc*7EUomV*s3EHtXwRr&8Nnp1g^X<6*+{62VEW|CtcOr7`l z=$#$>^!8-@42E#F^;({A!78^8`>$A*0IlO6bHB{=Xv3gL?w7tp@{&WU0I;23%KdWg zs+YR-oiB2O;)2{1AZXF{@Co1SvT6DIV;gf1^YPJs@{JWT` zAK!H7Frf0p>_PhwT@5L?CNuR(rY{;D)9X%-bB=`2Yg5bPN>N2yUps5pk4R_Yr=73P zTb@4&{q*z6S`i2M*bm5$D1&L$cjg&FJpSR%9jCYKW`8UGy~M3(C)W25l$&7t!6fT~ z98b*aBc_@5t6FUk@{EG$us*RUWIxG_1-HLHLN#nLe<03aror8?xQP-IM4dH^97wE? z`q3dCi&nV;xkMt-#6!Gv`cUS>N9Xeiy94^e)K`k;e~WJZ2V=;u17iQ?3jLMc%D*pQ+PILvajb}HMYV=lhD($U|V`7Qh(KvF z-D7h*A#sAzz%leB8UK-kOWDQ&jj>rvYmbdN4;#LqZ)LHS}M)f z!bEeICURq>ZiB72XYn*rUl4DC#sg%Pw$C2v1yXEXQKk*M(_YEYxpnc}`bV%O?JVF8 z1NzUkHkJaN1DH#brPdRrYE!+mu_EsGfgw&qt&&_`6eFNMv8BWqMlpK7@Vy2 zke37Li=!v7PS20mZLaLzAKj5}TSeRzwTTNm_t!EaXQddBzGNCBvb?!A;Z;#S%u;6B zIIjMNY=LbbKJ3dn3l*aeJ{9%Q4?gGP4y^he+Q}udW+|{$-vllvbnH@je_g-{3c_Qz&;eyOg|FfJeQ+t@`<6OBp#3rrF2Gt*i ziA@{3TC-2KeI5x&nhUcBo&d$xE#-513jECOT;Hke8>L0g=`_!k_s-BCANFpQjzG3p zOc6)JzNmXc0o)37!GgFA9JjIk)vO!GM&4e_KI;cPrip7=06n@+5h|%m&(p%$UI`!^ zQT?A*Wj!Byx2j=~I(ptaf8>=ggj6DI*7S|lmmp)u#`EQX5Xyf6s}Eo^=9nprY2{e}aqkVv~1rD&1B z(WvLoe~qBJWibPp#=(-)LJxS!My?k7Ic%FJ5Ubr8}NYAD)d`Gu#qF%;n$*-ag+M^qQ%u;_Fw>1D&GNd9M(DFC`M`wd>+V4DZM1dwvIc@>s;upLWJrUOyzIy(1G}^V{|q_9 z?ePh6CRP!g8>Q3p8gp$-Z_4lCVrIlE8_zH{LuAn}1AyaO_XYQN5*q(t0yDbijXf+AA=_%=wJAG#2{hI9a|i zD7DstOBewuG>q?Os0n=5o2(KlEMs6DeCmdvRklZG)eyW(<-*zOYAK+lYu=j zcQiTh^r1%fe#MPGoeajWhfX6tF*-ppufcTX|DK}oH%j8u1}V#AeAaU66M=bC`DfWi zc`~{vQ$!Q^Sgz)aZ_hR>uOcSjW_t9hx6XVo1hQ1vmB+&KQH88Wz}0;V4vY0ZyH%5_ z7=6R=A@AfzgG#O0LigRKD?5C~JMrRLM#qL4nUD*>zWvLN}sCJ$xUT^he+i%!uZchr}e~pfMBf?b+=-vj;eKMlt2Foaa}wrT$n6Pvocu~&J;h1TaZ=Amo=>b z?&16vtgb886>5}(-tE(n*#0lsEtX>@HVUL$zNMV5ldQZp%}5~-3G#w`9ER?5e%dRH z$e!H&(pN^aSScLNhbDJZk+{_qTf4{~cFDrjR(vFER~mg?_t9rmw^$x=0l~89c1ud5 zRM3LIJRo!XJqcSp${L0=vREaYIk=6In$#_Am5-29i1p;pucg-v_7HuDf-n6KO>+;r z%Fs%e671$ZVc;RmC!osl45-||Bi|=`9Sxt<*+#1CfLL@ARxI?`P-7gEVz$3|(W1Te zY5gPF{bRo12dOE++Vizf#MB5Op$h8(5mlBUSkRtS{UGz$YnLoUE^oN^Oy0Yo7%X-C zwhM&Pu3t7#uIQMVS8A;$`Jg~FoG7LLyK_eSEI%k`)FiFHw)7{`3p@rFnqIBUR7SK> zV@^vE$D$AoQJ!A|o-l-AzNmizF^YjPC%Rr;XHhIv*=Bxzjc26Vnjv+c$y8)8$vu3` zBx|*@aIPYiui*oQNJroc)M8Kr^}T$m5H-ygDRR@Pd?gN3r`B-#RHSB$PfI}RWDhVQ zY7`qd2HzkHt4^|mS|Ig&Sgyy1e2+xhm|8)a1?j;Cf8(UN9=i2`f&+pMjg4Iqj`EJU zIy3wjQ7qudtk^IDs_C)*3py~EdR{VL$IFY0OOGj$Im8XL`iufS9R`Uu_*I#sx}`*z@4r;JwY-VRXg@N&H?r53g0iS9~egDUQy9(#Y)vEi1I6saUq2X}4*0uwp~?of{6 z_bLQ@L8!LrOIOl>LtozWHl;Zat&7$7;W8m;N3*l7hC6i5z1;Dnfk?6b6$bj=HeknPC;mO7;GnYc zryFa!%bP8sy4;BH95?V%Dgb zPHYKsvR|AB24ug&tT%l6?_lN&$+JIJkGin)3{*W0`IU^|Mfj|xyAff6h@V43JS$#U zou)XnW&jE*LG6fsOS<|OOM|iL|Cu<{iJ4&o8B}Gz0X^I3j?}1>FP~!f7T$Bc5*eFP z3Y6hqX8Y=T_f^A#87Pxty!K>&WH22T2CwZo`1?40X&45m9ab$*QU>sMX@WkUwmyG* z{e#5v3Tv&qHtg|O?RvF@BK$-~B%HEaIwH;XQXyc_{lJ1WPkbI%y?` zQf3~jQnv~|@%{oDy;R|br9Q!%M|K{0ma;En?s=mpk?k+c=7dv|5bGZNGb0E6*#jfM zy6(oE8z!!Dkl&)Qyxq784(D>La^ zu*=N?#Nfn_h|iwzCN*b5Wtmz=9=3d1Y5>56kEfn_JvzU4kVN3{GCdAf`LrT9D?(>c zf4`3XXLI`4eD~0V1ZNpmi7M%hqff}bO`_G{$hQh7l}Oc=wg<-2}h=YC*_pVz$Q|j#U zixk+Vu~}`2n2F3s*$uwlJz%wEy5%0$^Z%MEp0T!q9$Onn##zZ@Qh88&BS{PDUf zR&=>2L~~VSOrYqKRVaJL*TDp{4|l9i^LG%lqZ`Ax9}h#vsF^D|{)<_ZiJP=OJ0iJe zD4P3KnRb39>3VM$XCKR%J$zqKTyIn)`jlTG#8MYuA`uS*$L6EHx@$Fr?tck`3Smhc z*2XR0@ERkV&1cNbH*izy1oYHRFYhe|b~nzOxCcB2W~R4t zjav{{kNKm^>=jQ2oG3V?+u*Csjdc+rYk+9qb)2*M^oh4Y7jE}EhSkZ_!QZV4GWn_g zjpJ9#F>Do6XJK?5seB^o)rxs3A2Z_4@sE27Smgatw(21}SgpsV z=i98W-d+?m!tAbN&Ha*5uKwDVGniLaS_I)Fr)Mm}05P3Arqi;}T$|FME5cDC{9AaY zPn2QEuSxZ9ZWrn%PR5TcsurlQ0As6Et-wiKHKu`i$L^M=9JM=|;EP-z28i7CLjZwI ziPxX&(Ms&SF&nWjsaLRu7u)Gxf~L)XEHLs^hb@M3xwXi>#6L#EHVC4PN)@!bJoW~S zE7}JfzSI^3%%LJ0&WBJIm6H z0#+@AVyul-)A>lwcFAe%CwV5zzSNN~){x4WqA^-GIn?Bzx(YILQBd%Tp zGc+QW{u9G7Lq=d$qpgqXo!GnIU^Og)OL*QvmZ-Z|p7hrFbvT8L7 zcU3Sw7Os7O8kPoTo0yyx@+ADd85-_fdey2ITVQXz0F&h!P_6)16_1(Sk`o|W|3(<4 zOC18y21afTW!BeoEU;-7JkqH)gEU{63-v_iJ=UlWEagR@XPY=E01E+-abN z*oxcJ3YjDij5XO8stK2{v5o82U4*ixjWE1fBxLUA{qKs?bn!6uAGIizbQ0p~XeR+q zHFfofv7~F7w+AvA$+7K#-KL#+QB}jm-(UD*%$Ov1dGql8S8KVU;c8S~lmTKB5slrG z%)jY|unTIpKhC`I2WtOcthqV2`IpZ2S--&npwQMGBMsmS@hHF(I-!V6ShG0Z9z{hL ztL9j-EIZ2t+6(cF5EZSW#S5wBzS^fj8$@q7##(zn?Jkfkc=FQ34)Y!B^V`L+4ENYM z@&s0W1n|sL?@-YNQw@xj2!Zf&wiY$m($zU_x&-PF+K^U<9*8fX7;Cb^(;#W9HLAbZY$ax^BA4Bv1y zHFI7J(JKb|kfG?pbA_MZFag1wAz%NgQ!amh9mDM>YJeD>6d=EyEXa^^C#(2_7i2f} z*PvH_y?ly~TO#&zVbkDt#A2eHO>OTNKt0l z4|;rn@xA=8|EG%Q9@E0`K2j&i#BcKeg^bw>HYdvW>$fWx<790M$!Qg(Bmd6cOzs9X zq>CJGt2KgH{PicLWQ&f^uf9dOGz!b#kA3(M%Y&i2Zxl?YoOvU(H28dK7-g0X?^i}c zB^B={e@TK)(`Xc1xnHyRTuLGb3={W_7WfxAEcNK-Ot5M1X|WTDg`gpZ29TVUvIJ=smS)~=ukuF}`e7gN>N zX*%A{3X-hw9A-G9^CHj+zMF#;jDpA)L7#`^=F-e;$LjFfmfS(ST5owMt}W3~?v;+Ef!Z7PzW(mqk}c5qQC zF8P48?RTjv(G9XNc~w@Y7y69rjz@dg~G7`7E%6VX-1Ld#ga2f+h_1{dvA82GTP6ZCXIK{8TOI3j;qVo3ShK4 zVKa0(j)pQp%)8FslBMHX%4B0%c>skEq5pbbo~z|$&d+`oms zhWG6blh)e3dloKkQ@W{dFTJ`YH|MrUXkuW8<&c1i8#~Daj$c=dB$quf&R!9de_F9( z1Ni@a@6#^Jr|u{I8UK}d+;bLppTu}{*((!idcvynU9cu-18Rl|xBfJ%`&CBV zJ=OxTKoZ&zeqLRI&9>{wu+Ud3S|s7)+HT2f8|kW1Tcho=a-d571YLdXn74+j;KiQGilt$-f8S zner$4&7X3Wm(KG{j;4P77fWC6)=hrifW+hkj?J@1HX(JO^Lr2Gk@%AH`xe;&r%}wd5f8hyT+_VVl{!D?L-+`F4r`z+Z6QIVzbxSs2Iq2MI6 zQ_OBvHHfgZ*9GKKe3zFIMuEY^y5C0?&&Ks~ZDRLXezPiajGV7rxqYy;gO<`@1U8Ws zFJ^K&u^!ewp+xdy^l~-K+aaV;xg3?XqLSe&YS`Re&bP^)8qSt6uLBDRztoiMt2s-s z&z*(W=O}*Ba!FOBeIH|ao?{IUnx7GcSl=S4~b73PHAv?0?N2v*x zX0OS^7IrE)wTI}D%Tpb!BrNHWC1Q~I1t3CUS^J{#ls*3ztFrE5!+qjE@gg(tAIYm) zQ|%IurH-b;rH+<(!w;^R)B~1{`D2p`g!J@CRHAJh@HeC&ODtl#Hc7;Wm)at+8f+R` z>_(}e@4&zNWW8JpSw<+t`Qbws@O-^R(wIuYpOehypi;o?i5SM(~Z7J%04|HgSRewX-e=3dvxqp<4ZF8uPc+rMn&3{M2uP$d{L zY&G1_koDf8^QYbV4NcyG$sqS^R{KG~oX&@WgzJ8h>38U4C)P?_P%jwjb%%|Igw}a`dl@RW-j?W<=1lZAR0x z^3|Ja%|x3F*eTM*_9B@4huRK1_)KKck3;l z$Rf&9eG0|9?e0CXDaX-X7t12o|P^rKL;SM|%WaEG`S9A4VMfCz$d!_r|vw%Gcc z88y(9*=}Up!THz}bY8n(^D5Rc*)R$u|%9^(@hh`8C$OFu>dAQag$Ake)*E zCSS>UIMdgD5!osR^S4lUgXM!tR)z`f;-2L%yUOP*Z=g4duTJj zJj%jcXbqfwp>R=ur;Li%4(7hJSc2I8s*G%PB=|b*$ZIc#MjqNxv;+cu)`PzbKg0S# zGrkqLT^1}%Xxjd(-w{~OcUr{9cX~j$#fN%}b*p&PY^+HYvma+_REQ-6q+@bj`TeD? z7yFj48+MIv=dBu_37n5U-u9EvPE*#-DG^%^`TP3kFrg^0T8%AoMRZ`PleW6ZQVVyz{_ccEDa@P zjoyy?HVin;QDvfo4!P&{z6|WBctQZLd=4{!*`)Y{>1q8Ec)$WyDA2 zeuyaP`m5tX=EaiQ+uUEumu1GLj?NphPq@2TLlBQh&~Qw$J&SnWC2oE68b<^A}5 z;>@1*H||RqxLT6dGGzQ*-ojDZ4fW&nz?0~$4WrV}I=caoc&!^n|K`Lma!uANpPA%< zPI=#ianGM#DAV3hJc|b)I{+vpNHUsq0OaeuvtL)u)D+>ZuNT&Gfc>saY zsE`kER@GBL9p~i;{@~h6746wm(5JT?4^N%8w|NL~(0jj@GORC2Mkp-(4DX|WJ*wu~ z1SL2=tQIl-0@@~E)fR(DE#xLM-oCUvAe4+${Nwm@6IiE0Z|uhU-Z9}R+EM&ko0n#Q zs4v?+k4>8eoVg-j8-Gg=#2XhXWR{1C?YGK$IPziUAaK~?dnHyFC6M4;sSRd!NwA1VPy2n+c4d%7au;G>+}}Dm z;fy=LpPas1#?y-iPx$E%M=gitFIGvq{D~lz)|(chqifz7SjBDRDK7h9C8d>Zyz5wV zl9t~~-eGa&`GI`nz{(30{i!FkD==MwF5;H8V$|u^+2k4$M}?W8gMc(%JCaowGgO&s z)vvu;Z!$&If1E15gZ%DoYyOaQ=|3((ogM&lyLY{5XV>rOwqJ|`ZaDDaUOFjgDfC`y z`$Dse$?wx}JGi~C>t`-r+ppHp`Z3xW46XM=pXLJ2m;qQ!g?e1!aexieQ2-3;p^q`b z!i-7;Bl`CiO^bE{1IT~RoO5wXpM)T@`nojt(*w;1W9nYQ$FKIxXA+#5+BZfNZ*87C zXUn=S?@BbqxXMucn|GtEN=6@h zE9wmv7j)cqwy=_EYwZe$&-!Ba%M##Bi}8NFv>OSQ*MZo<*gld9)Hz!!N*BF20u6(+ zqHc|wryN4yc+AJgC0jmHm1wv3P}<%wc5lM^gV0F2exv4;q%v*kQa=-?`+g7j?D|{3 zH%#+D10b%fk1o^CE7lyl1vzb;3OMgt)@fIGT}tHgkE(b ztVo}hO=~*(QD6NO18x#CgPN3>Y=1lrQCrU2a|El(H1W3}4CfB<*S|$HtJ3-t+NnqF z>%35(TU;smy{Z%2XKKg(g*)XrLqaOKj|KlY57AZK=I!02{Z+j~77!3;p<9(_WBq>T z^D9lkK}Q~(UHnRXKzab}$G06q#?``a==e0k@og6}h5EC@ohH};Yh@N*+|{1^hV83* zH8kVpcxy!*t)^Ltxbo@2BmK-?#eX|#;d{oY#)PYQue1;=VaEE`a^5>4GK*$$wTIl1 z%dlQ=VCou6T%{UKgZ}GtNb3L*FdC7^w15cU{~8LSn4oTjXpH*`lR&gr>YUetDou8OiXEs^XYtirms$OL|KgXP_dZ5v zlq-_-@} zHNGA$P!#>@3hiis14>I)U;YBOJUk6vInecw)s%Po0KRO7EzvH(YpC613>a6NB)AkB z=D&!)JrHxKi7H{uZNj#tX_ctca5-~>pF>aiMIvzrc9gm6pO37JQYf!l(<3c#hR;O) z<;~h(rFVZ4%eoi5D^MzCt7*MJfY3aJL2;$mXkX~0s3t#$%T@}}ML59WlIGL_!|a%L z=bOdEet)F@73a~YC!tCtCK1^q^Ps2{J+%DqK!Q|)eW9dvM>6L!=T&>5esypQhzP&< zWuZfVPQ|F2bFl$urTM;gPfY8Er+I#xIFi2m0ULC1>j0@X@yzvMVLg-7i08My&{5OA z=0z89LKUj|?ljLx9{9WOPMWx^6o?D{frS!cvI28V{}^MOZ^G#>edfZB>1=7RJA5a6 zucgLy8gffE&W1L-4FspX&2Q!TPV@dC7RP$i3-|7G_brUt&4jr3u1bMZ<`o(5ChY{G zI=Dj#cODd8{@*1#TAL9^F||%enwNGvmFosu7aSAMjm=n$n}`sa7?v0eqV}FW3z$mz z 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 literal 55386 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

    +z?UKfN@Z{_Ep++u?p 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 literal 22448 zcmagG2RPMl{5O8A6GFy`W0k#m%C4jrG*eShxve7#<8vAWtSq{MW@5D0`+O%;}c=OswaDgRjm_0 zUwXl@3^GB#z6&1eQvb#WZ`P54y_`~aWrBE#f1$AbFOrmS3irYH8@Sfe3U1w%p(Y4w zJYMe~DhY)x2@YC6LQB7gU&;m3&WRvy>-l05Sbm72#{Ft}rXz0rn8Q)~-TXs^G-NEgapy1_+BO^QdHe>#N0 zmPziv8cy{3J9_fY0*?F_%iZcNjC8p%ap5qys1K>vuJ57fZA={Z%dr;4Lkku%fb}tx zPCT<|c+TOB-wVHqt1FIG8Z;&BrGwZ&++m?2*grgji?4A$NMLESIJw-Q?u6wl3!OOo zgO3?w1P5;`g_V!cW!+42Xp+#!-gF6^$Sr^0;wmthjMm6|4xxLe# z5$&znL&)0e+01O{n#05e*zG^uwhTdE>QK_`(cW;cza+?gW5^`L5hDInboyfP@01T? zi)-n;GjrkOt^99rWYLSPx;^mCxRNoZD&^8J@N#Y@?qGAUp&NIgYBqPx3!Z&fRi&T@ zGtJy2=QwzA_QgeX+O4&9$*Yq%@t;o#PF2=>y z{g#{JSXDMkN6|d440XJwNH`MQs@zHPi(1o?_i*{V^C?2KJ7fqEiD)Un8dlFwIf_7) zL*h!9V8rsXBI)Yv>6p!wPCn%W^E;9DtwpHUPINGP?>O;K2WP|i_2o`6%B5V?@s1*N zc+3(;Mihkjk8(La9f(%V^Ux(IPks=kfnG3D;p}#hVH%6Lh@G41crr%icrBFl$Vs3$ zka=ex`g7lGLG=Y80VwJ*d@!6LF#kPVk(U||%dq6qa&%Q$6{pLEk7?AcHP++HQrRtk zNvbsqezsuJfF}d05Y%8wf)+$IErn6MOIiT#lSE4xr68b1brICVufTG1qLFvb`2pC& zLF(}0XYiojKO!%8DlxA;bN%6z8?DL~ZeAO$Un$Zne7X*N4-#q%f8$EO=}DWRUiLaz zVDOO{H7`b?b5*(B(%KNm-)ez^1X|2RTs6OoW{Wey$Hl>qkcSZy0879r-1!=*;~UR_ z7DTX6s8CL0o>p=Z_pJ+vXeqW^D%ToY%(=mlB;`&laFUWGml9LnGuROdEkRirB=fG~ z-K=~sXQvWLzW{lHa>@uQz|+jgNQsTo!)@?@_C+c0Lp2rE7Yj@L;a-Q^+o~N3si_A9 zo*EKZX^aoJ{=+*ed|Ah}T{3HFt1JX5hTw~?+NvtB6G-wT78~_2ri-K>Z0!-c*t)(H zyp~+f>^B7li=1+so=&tk9bHh;-ir%YWy6JV!HA_(?!=}ZU;HW3d8&84C}^Wd+(60W zdtvwu=!Tb17u)3mq*5s;E_e}LItxB8ESC>jN-yc>9%$bJ4gx-jJ(?0AiR@oLa8pad z3u?4L6xG;*6`{Iy_f_>^u=s(n6;ygHfi)H7Eo4ikh%ehq#`GTTS&_(o+qcWElMVX7 zI1-c#cw28t{6e*=lE)7KqkM>=1qUI{pv;%Gw>+Z{8{ihZmxWn=;48|NOqe~|{riff zqfV;tz`1$XX&G3I)xwREC`*#>BW`2hyuSWudrTBjRTVR|!IgyxHoJuu1ZM}24zuJF zGp1Fdv@uXpk}bRsCjp1Uk~ZSs$e<>aK7vyIx!xeXp0)~)AU^N*=CDOeP)C^f`JFY~ z$0&4Le<|mB&S0C%LDKI&`XvCT{WU5K^VwuhZ{R8K8d>4~AS~0KnVis{N4g}h+>$TQ zw~`PTA6gJNSuy(kxR{|)l)c$n{<#ZaPm*dh*V%6 zn%^JDy&0tdK6x+^E0+pO8BAO&Z_d+cOApGkOah?oy9ecY>d*IPK8zbRw-9Z3YRhDGup2Jmd!7`kV?zybbaSK)& zS69qC2S53>b^V~5mi9-?$?$Or@o|SyLNnOSQ#w;#aB(zwECR&NSB1MBb*z-JOj(#` znQ8E7oLLb)E?9uXylW9x9M$=Zh^zAD>w{uWR$MkaSJ6D}E)QMmBG+YbgO{fXbI$h) zCpCt?DHM~#lxP=^gvr2#HRZxwm&7TY4!c^YW<*HCw~5%h4~FP8(6JJ)-&y z3u>gd)oo8fTak&rg>7=WDC|}4pT6(S}1s-!%y(HH$4Me zHqg27WggS-!2nE!u&*~{mS&YjvxLEm4@o(-g&BQug+G9 zFpc@YmqR+Y^_wQ-m>^oSz~yx-4Y#Zk6<*O1;uq~n=8kjlWW>#mHQm(}+g2!ETgp}E zNCU}l=ADgDPP(sC+Q=&riNu>=4-~p(ilTY9KZhc`8{a>v!k*~cAu{6^Jj>mN4)a;1 z2vc`%AUX=X>@I6h%RC>}XFlbErOJr17o!N1c8j_V9ng~hT_mM-IDjQf`6CN38Sa%V zrFt>GuwCW*7|+oP=n|=aauMICA+^c|WuU}@^^Qnoe$<>BD838kydYQ(vA}V`gX#53Ikq5jmVhMx(0Om_M zrchljHby&0xm|NrmAZ5~*9!A-Z(4WDAdbuusf43Lq^3fj#+n42B%o1Oa~8oy`Tk?A zg)~)q30KU3U9i?7ov63AaT?M6F({IRii&C&dpv{tv@ym$W<-PKUWzJjTn?}_Qo$}Z z(k@kE+_2EsxPJBQ>iAl-`RhW*529R(rzIZLWL+>=Yn)fuhNJDZ8gz4N>atM76@8qY z%*wpfX_T7*dP6sGaa1~(ac>tIMM(Y+D#;-7Ei z+m+^KCq%SfpHg;9UM{s;MIa&zuJ*U*-CFgk=b;~yL;J`KWwz|4W)Pzf8Mgn}^IkZL z?5aAgOzC{-)(h3~RU|Y!&k(8?a;vk2Cn~YxuKHW!ZX*(}KKANUhK`N{Q)2DTPTE8B zD)H34epYwIp;O`TQ6u&adnoFz0BR{tbxb4LH-FWva6g({gjCb}J*G~@2u~=?ovv?R z>G}Lq4L_DP5VXhKvU>!ikE%gA&Y%WGj^*r3VcJh-%nMG^8x_a2X1%M_R^)yd=)Hz5 zohnm+9n)&gM%L{qoIhY712rJghG<+#ZzFFd$sLNstVN2Qe*q~ay7?eY0vjn#D?qR;+fL9ZvrA$hCM)Ny=?mhAG3I8T$9Y8eWLZ0&`bpMDU ze&AK(ATXDgeehBU*fe2^>W4~#1L(}-k?qxz=?cTI;k=S&C8e6xCfvlQkAMw>M9TV% zRd5g#V~iT()n!;CXUe1@J)VqL!$w=@ncX23mUV^Ewf)iZ$ptK(EJ#gT^i`su@8!wA zjsLTWvHssp%<3djA}$EiC0u=ZLoKe{VjwoEQ54keftqdxL6bBj?e`PZaIpy7OnckC zkF_tMa<}MJ2OE6$j7>A65G*)GMrEy>-L?Hm!h(UHUK|+jn+;3WBCq$gO zHv=Lg*!>Fud7<;~Dj0H(*GAa;Kdl%}S1;TGv|^B?6R(nf;(h^!)ol9VDk}N%2qOEd zF7g7J1BQWGSmC$61sP0U!DK9QGmCorTC*YogZaTHxmT{O%OIl* zko0><*xPxY1~6U(-Dxn@RQ1pILJ84wzTESDnV^hUtgHI#k|tgWE5AT`@@UE@c>1(w z4{9cL{sbaJ#Pq4*zpf3kmjBcaeLu&#M>zC_HnCk>!R}h<3^`gr3`Ab#Jc*dIu5X)98GA8 zYd`P{a)qWP1YeeyNQT>xOY1U-_xisv`ju>5WT43aPV8mnqu5}YuAY0Jnh@!WZrFgh zY~{<6^^T)Yf*yOzY^pSz&4_5(zIo{uqGznV;8Qtf#YUO3yD0yD-&^v&l1NpRou?-y zsQ053-V57qcO;^OVi7E14o$I!JW<|~3F>7+PiZYuk6z6>z0&6v$nQ)x&}h;Nys(V;Rc5;epi z`gZw%_KyJJFdG*co;xmbUk4IGxTZR|m;ezK9Q1`i{+~Yh-E|*)0Q%q-Qb~>Hj%4q- z!jyN~nW^KS@!X)QWu2wh(u1jJ@gI{5YEex)!YU0%(=dul<0v7bSrO1bB&(PGJ`7m7 zw|gq7UkPhm;su#PCoNPXoKr@6Zsg!>M3hgN{r1GGInk4V^b1AFGZ0w z1X|e?^|EN^m%Jm2!`S{j(kKPq9{Ua@5wm)Kqs$b-BdtT&4q9SV|@Cun2+j zOaGh1;r3Ae@5c}o;lYnM;?BSSt>w$&tzCE8Z8v+LH3>c&cMLiP@@Fh5-@naFpR=$qu00R~5tVph+@T5d&H6($ z6lQ!`ROW6O>Pm5MhZuV*+HUCjPTzl`Y^IvRP7O>Qgyx#C)4BmIqtc#K|P+lFDJM{^m!>sP6XBqn5P-z9KnL zkzIz#M^M_z32Y+IixH3!6@Dqq&8GA7wce-*`nOI56F320LQmW^xP9X4(Sd@9>B*E^4hV+4>uS>VJ zABsijYQG|j@%9J5v&Lif-df|EJKl7~y2C`bVnSY+*Fp!g4b4ns3RQrq?eaG*)s$xK zLnZ5%ZbdBZ0pEc~PiK60WTa?M6b=&m$jX(o=1Vb~?$?^9d-4`q&O2;ey-7#IdcOc| zp1NVk%htM(|&4rV*NtriKx-BE?lz2Hr=f0Ut%iY5DllVq17IJDU5@ zr7!H{gmQW?TSqzXZrukl%MmG(LP=i{jR)rRdq`qbfj6ERqnlXEvO$LzBXGtKsO1*J zN(0d9bX#Y!NIF~RXup=GU|e+{LCuWlZh1;nQY%}_dpUcx=WkeZrl|p+(Ge;Kp#j7N zcX8f~hF42%>+Xv_(#~u==JooO;>?5;D<6xWOlaL*bZ%DG|N4N7_p{Dtyo$(CQnued z5iT4iu*W=g4l2n}y~YX32a43arQ zS+6oFqCnh_D)^IlEf+&X);s;<$w=-T$skvH0$A(4+{c!TGgoXyM3TBCs}35cXJXn ze>X>JEcy6H&vay#)L0nEZmOx5f72)**D0NLPw>!-Hh?`Z?d{~UrY4ShrF`adm}R*t zuR+_D?mJRsTrI&@g7s23M|3&x=z-G;-Qv07g-7Z|VGnoOFGZiKJZNpVti%2`8O#>8 zn-(D9EYd!?L)y{53{@6k5 zeHd}y1lJs-_x_eerJ*0WB*4Ea7`w(Qv>}mZo}|(KV7O(K>VN(R5Eo z$NG~CtmO4!v?bZ3#9L_tptQ|bC&|f6xFZTWbTdGpPm5X(I zKYWOMVk5o#m3gKw#b@DQMI76g$jj#98^~nDb9=j^=aCjYHEs|6y)ZeZwcm3bH$NN< zrqRan&bA3MkZEMVW8WIi%^9>5J95E(&hbJ*XP@v<#)=ER1xBr3IXAB$wOdizVx}Cv zs9zcBEqU;PkTr!6KnPvi4=T&EMh6j~jM69gyX0b=9RskUzD27_L&}cqdFS~DTOZw8 zJAI#X0Kg5@rVATr`k+Rt&>G@a(^$;cL-EFH5|J zG6JOfvX3d#m+i&I)kLvf(~kah;v&1(_n}BhX_+`E|L9|-s$cHZk;*eK(!uy5{F@s! ztXYU=fQhvKyGV&3jF_1&;kw^XqGJGX8q3U%2&k&PTLjZanBXMDR<^{yJ5%uH_c~HI z2M$+OrUJV8*w#GT_jB7pwWcs`)ogBM7<_pBK;wRQ%9j^Njw81p-!-J(g3f$ymoFc> zL-fS{>$ADvu~p>M9bu2Lf6$;-wcoUFGE>n#faZMm5X$YaYv7v0#F{sGO+*O-huP{# zQZ8NR{wx8uF+m_y`AqL8Zm2*AHQ5WR`}c`OJ1JuA%@m#_)EH7QgYZ-dFDQ2c8F6Ai z+ExJonjp%vq>vLkaz}H{U{W?Y8lx*d&%4T&;475rQ>2!wdYORoCvsTAM#Mv^aNiO@ zjmg6#{p6xha*D8Wr#gJLys(Vv?;~Sl$xaP*dmX~9c0JJDlbgA>C=!&T?5vzOWnyy3 zHa*Q$^Gn8foz_=$c`_oS{;^3wa%UMaPm2hjs; z@;|^+FpOF|>lyZewZ8#bEkoBHf4sz$(dV-}t0pB2MueK_D}!$dtM0?;7T4n2X_Hvn z<(BFvDh+&Mlqs>RDQ{XqoX!=PX6fibl)@^1BLxA?Llfh+^+poy!+gqJ$%120vp z1%NW^ZWjbT zk7DV%tQ&BczThc*{#G9p@2Vb-nUEW`LG?T(Sy5(+Zw&s2lEylRCT^u{H*%*l)ac|j zp5YTVtaLjzffm_!ZvTzZjg8G&7GagPD)Yjn`Wb)3TNNAt;~%v#NVBcfaHMS2%{!}& z*daV5aw65mhTA$eK%?3r2g{oAu`*@h*bQf4QJj7jQ=^mP|B{P?>mK6HgJHr*`?yUd zk9LQqodEQNUhFEsl_HHRD!et7O{EV3a)!VOMb-Ss7LC|gkX6Y<#Xz+6Ol+eg1%Gl(c zq7UMSWGhEfFO0T>{SFHHF9u3zmdP%iW~bZs=O?Ch?+0;I_&u``k_w9U#u9W@#X*|p zigu)NHT&B;L#r95U`;XQYBC3ZtZi|S)%+=}J&96tquh*Hnzh3a<((1L6{6Y_b# zfvXqn*ly{|UJU}w+-!TwIuj*6iw+> zN<)#SWN>|E59o~zc}j~JI|!!8A?*ub@V&kvf~K4+g4@$eDYH0+S1H^9(0x$;1FlBbB|K{bxTfd8K7c+s+1*A}2bw`{MT?ma1Yv6yu16v<~S^cwNrzy9hGNq^Q(`> z;g7ED)sBwGZsluGyC@nNbshTD_itv|BuX81QQb4H>9xW;SM&GlylS)iSR2w`tkg057RVVN0?t1)fB1@8yC z?o`vDl@LEGU%$-#@vpV}!1dRBeF(@iKbF7zrJj`i_i#dTkC)e`hXHh<;LD(e;1M!1 zYBOK3lMoiOSkNqd3wI1`JtyrqeIr46GYXh82}|zHT4RmuNb-RXh`zNDr1RAvX)Jl* zZFu3ctsMWWJ)0!Yb~KH(fAQJ@?vu zh|zB?6pyU8=khQWi>T#=|DxG*g;Nnr4AlHi#LazB0+^M8Uo%a;EeN7>bdC93K|bTJSwZUT zj~RH2e(Bd5_x~8Wn*>ah`pcg!u@vps;MHK;54H3hVHaPIq5J3Azl9fLkG~)Ky`!fWb?Gh3vi`KtvxTQGC^aEL z5TmI{fr9qNLdXiO{{qwp83)mUxZlKf5v>snE(Snu;Q6D-Isec+|3S0No2P;IU?Je? z^ULL^%ew?Zc~6BHT1%drC3m4rM?%OKR)a!%0=g5g?d-VmNM3IA&>qc=Zup1yhN$-{ z|M)RvA5iurko;pUNTy~zKy9)lMZW;l#^ueFSbva(TYSboswXRI!v72poNe~xJDXv1 zUsuSb@E{8$Bpxd;hJYPQp*5=iqsF9R$J}rf4o3?J?hHH27mp@;P}= zuy>Wajth=f4u^u)qiDVZ$Mz_?JYkbw&&Sdt{cywydjaKttsy`+ltHWutX)|{?HTh9 zgt}emy`4v3N;$&4zkBg+`AaC>4Yn(;{TRh2`Dk7CpMV`RNw{yPwEHbZ4tgp19OFS# zNbfY{@2%bgh>S@0Ct65|=+!xRKMWU!Bkw_K@V{?cUV={XSwbLx?Lm}$8&CXcD;z<+ z%!zp~rQ~t0GFz@y0a!Cbo?jDwJ$R5`(@7zb&dqVa`^0*FB-CBzPvVD; zU0#*g5Ph)o*+hLUC^^7V9S2*HdU-mKC#Sr8I3gh%>eVBQ4YHZIFe%S^ErC7ymVY!M zVKXi<>FaXLK5?NwagisEeX@0oS7Y5Bkas4PqKXgbeyM}EREg4O*SlA_ONwc9|3IO# zmiOh4!@?D*g7wr9fp8%uG-pz5G;MJI%aGqr5C8t!fRyuiS_kZ~Km7B(f3d@-+THw9kga#UGYyDo zw}F;m@r^B>w&V^Qq~7VroxpuThJfv2t5(KH|F>UiUTS`vZ;oool z5&{XO(s@WB_Sv76O!`FEGUQ^@>R#a%J*%2;v-$XG$-lA3G7+Y{(O2hR?uxB?Q-v;s zYy(PPlVhXfUr6DUQ1{46;`Gs_5Q^LRh6wuOD$ToJ0}@#`BIGTDPv^z4`CbmZ@4oll z{Ly_BJUJc0PDy0>{OVL3Y~JH|Tx`sBQa=nD0mb{vL^c@5TG^?%(CR|BP=FleO_JP3L99t?9R7 zdP(v*ccMUelsZQsT8=5gFF*jgIV<8Z%=}{Q{f)cV!4^bWDYi7VYhV5FV8JpXNG6HV zZ-oN#y44MT|QDII-Vm3vvx!F*L$@1I5_dJ;PX|Q1uH+s7Pr;7S#2rO zN<-on*Ny9y{OJ60MFxU<&t6ilDx2l=WJi%Wh2p8xuawQY#Q3-XceGkyW;t@`9_^Zh z?@1y7Wd_jm=KdGuPN0Td4qnt2>pBWP0)+jwfi}3UO74UFB;4T)kgmm+1GLJk3;Ke{ ztA?at5}V6U3jkm(;u;k_wsc)qF4NypH!b-x*2wEVart|E<+B(GKs4GWNIg0af!4=$ z86X~3tu$8WO+S7wyt{LG(0cdp_ZPBj^k05KUk0CH(~iGRUcQ$)!bT?Z>rsuh^t{1W;G+Y;_BOlzeU0b0JL*0k#PGk{=Ur~| zVAX#31M%>3zbQLAJJjB+?Q7gU@}!{#3}2^<7YQiNm(6p^cO~{!lgg(f#iObF>*Vvl!k;fcpMSMF3ZQXoTZeL@PTt=NAqVFt^Y>WxAJu|&;C;y2 zuZ^Uk>mVMqhIjY7rguc&u!Zk&7;rvIzJ-i^K;#3xk4dAx(e0|Lj-I>3QI=0%`ae9R zv&hfR?ga#8V2EsvCQF98Pp~X?{I&GSY6ouSR^X4Z_#D3M)=3K3oc=1KYM>tSU3L|- z1d+)9IPVMk+Umu@<{CUV)hz=Ln%g!KrM{ayKQ);cGo`IoISD?!42%hRn)_w>07rdx zd!>uCRVD@~a7y)nCP?CojpMJ()rVo`mYrq}C7_DkoWvaGipW;12{TI_RfWoSVM8`m0pu34l^*V22()O7}A2+{NEoJpQcr;c3V* zeT`Ko^$>#>iMIGU{^Mr?a2VN5KQBQaD;hFhKZ9Gt!|Dj4=n(qGI7+q+$d|@EJQ0Dm z0oWPWpjx=I3> z!(|NBjJm(l!r9%2`A|=_W>yEO?pE7$RCm^MjVYKO2#>P{b=@U6w>oUE1da1wKw(XJ z-pf!296{aQx8sWjHDjP2Gm#f#n&`!KuT{XYuFmp_C!&jH*0hcxH1aM0&a9qY?(`eg znk~<6;YMy$7{f+-8n8O=S$fskUM%Dxk)m-Qx!Sz!`pvVQ)^0@)&^~}bqayZJGG=T~ zEb)K2{6OwY>#`5ZEK^{Mvtt6WP-$<5EQ|%3Q?Dp4M*v<%dPs<|q&lSo-s95OK7OD? zU@LRnfdX&`3r;{rNF5I}e|3AL_e!R@fZFT(U?z7SrM(kQ!_6nT<;fL@)D!@Bpt0>{ zh2H3a(19P^fsqxrQ@P|Ja@z{2?*Bm~QvE?}ZASh~b}jOmiPcVlq}IRFuE-0#Jo0bwF1_{u-?^ESn+~@{rPVsW7kYYjIuh zL6|M6m$9$`F&+Qg74aYQ^!L=zcMzlj_mjL0M*{IhAKypVm|qj-q8h37q-(fda+cPo#S&c$Q@p~^ z)Y_;k9CAvBVqNmgkjkoEb-B6T8B$m$m5&)8j9A~J9n=<%5_`QI0z|u z@J$=^7+0$i1=@doF7$ziWdQU9pyOv}a}&)2)!aRoWopWuGYCbh>+*GRXP61VVX49; zQXm?jNY>2P`W6C>khcxe^UjxJVjAP(r>+JHEp5V-J(WXr1(`7-MkoQNVl_Z4xm?@u z0w*S_0yM8^L0eD!>_(_?4hazJ0Lk5y(M$g9@>u_ei6Gr+a}kMK1aN+ybakfLX6qM62nE4}Rf3J~>ff7`Fl}_PNrbd!=D&PDvswz z#@g3hajKile?5?Pa zk`t<$g_N+x4qu6oD5|1ZXtn8-PYL&184ElRNGJ zVBqx*{zq}&w;i%@unYrs6rjEV6u?L-`|(G75jcq*cn7q!;JZL*C;1n(EDA^JD@Fl} zXk4m!^Q;{Bf5~k%dDPcuLgNG|HcoF>e(GPsTx@b40)@!m;dEu8F3g%O3Wp4}#nnsO1fsuj}X&eL=-+seJe0dC(y1*jx& zHhWR>GqX#zo|(j)+CEd9A{%2s06$fm@4HZeqqpS+#4owTff` z5EKDQj!k1#RMH0DxgNnk(JuT=^&5}xwX$-+?wXcusCpzoIMJToY+Sz(rC1m7zG!cX z@ljml3iNWSXXR0Dxxh_&5@^(|evb$pUrHvgFIwk7519;##HVNgPm>TEVA#cej%<4N zrIrH%0>Q%EMO66*)5yE7r8Q3l#J(Bo15NM@uO6+BX@XECJq9b<;Gq-e)@3}8X526c zcnRg84W(FFP$}#h3aII>c|iKEWL1>GnC^@aYMO<(VP`KG`8j?GN~wX=QY>ydH$_FB zb)M{lg%b0`zjYNlt?Pw71De0e$ZOfJWI=QZ7eKv(7mPe7rk$I?6J^BIPCFJYxdiz7 zU=^^>%4eOpON2@A!sO&e?UO(dkTm~YfEWQ8koT>)(!wpGSS7n}ws~}|(mB(WDo1^rskshJQ+Zs4$8O}3N~W&uUg}WHbB`r zBi8DaOZcK+pU)a792-nwloe>B$IC6>v(sIv88u)L&8~rZJ9~tH)rAbSb%gQoA;fyN zcQkXQrrVTrWV}I)&G)jUrhx$N0fa~Iv$sHmo}n(0HmW+>kjzx631q~8yW`17P2>mO z&z%L!_KcUnDrlfniAn@t2z`>AK2l)D(W6P%Q&T6Q1Gfp)tbPRo?mVHvH=(WLXT?4M z^Dn6DbOW%ufR@3i7U0lzVM^xCxSABsk_A9fir}SIWTRX<+(hP?NJ0V@(n zIrgcAR7o$Ak6U1KE4Q5cZBa#MQ;a1DQ^tls+&J%U_%>0qeYvfVQ|eX`&Vv$XBE2#^ ztYwvbVCO1zN7qG=byebnym9q3-3C(x*aV;^>XwOEx#KCIV9)!`Bf7rnn6O`qe<@V*K*w0Jq^hbZq+UG`NWzJu@+aQSJKs)FE`3d(*dvT-WH^0ZX}G($ zV%Gql*?D_%F25Ilm}hK2e`7u%tWxYng3|Hn9*`(J#->@_N~R#k)Ua;o zCtq@V<^bV1sKpFT%y)-4mgA)85+p|wL+WUh^d7;XKyX~8q-rf>VW(hBXf~66z_Ft) z`;my9AEuN-t>$O$U4jHXZl#cjIxL1)Z`!914iw@vqgseP5@DdnW*UB|WM3ooDa)|{ zROoG)Zoqf73nj!(6#M~`3nM8*V^}K`cM(vGK=R}~mIXDbpmIU&2;Jt2j zAVQhhuspxYnAZbN`cR_1oIchWU0TXmUgVr?slF0fAuz1@;T1 zwBO;4+i&;56FJVseA>J5EtNicox2X8ynsYYhXbuVsO&1;!!=8FrQXq5)l25p%3E`f&$f89SLdmiDHXq>2RK4Sn&m@m%Am@<9gh|OM zE(_mK%UdFzONhfU07bO8EPd@r1dZv7euelj#M_caHr$N&&)O-r9SE56=bEQx1Ir^81O*sakoWWzz5tw~&8e~I zuTMHr;?Rbon4HCe&xZ{UPF9}fFNtzFPiRY!Xo&~?EG0MbaVMVcKrxMx2#`MwElyS0 zgc=X`nAX*(fU1n_ku2mE-eQtI7I_{m!Oi4U^ zT?_%WadFTq;I)O5tSPFh6xPMMpy)W?f7xPwAE?KG-VUUE5Vtp#CuxQgG}$P@Fh;v2 z8E`s-SzJ#)peQgDgO9pnKFB_})?+JZ*swiiNe(=KIupNH+!OaHDy)v|TGDF-73(fQbZpgANbJmk1HMjJOBB z;X=)9-$-BdgQxVyHSqI&8LI``Wzp1;R|Xcj+ONw-+Z@1AiI-Uk89@sWoa%Q{_V`OD zfyBP=4et1>+Z4~(C~4Kso59@A+6#F(^{ol`tbmfYnCHZE(Qg0$nO54`Y5QC~ixI;$ z{n&89H;ZYJ{*_GXv_l|5-#4xWqMv?%1SnhFL?$FatmWX~h;$>Pux3d~o{4TYzYnxz zK(E2QquGko4}B>at{VhqjX=^p`{Ql^8)!%zE~)!ZU8!$uDwfO}5u@*$2PA2he4IYQ z+M1e78R|subZ9ZRvQukgCLX{^&Q7~|*;IWI@JL)a^?*M3<#R}j=Y;HZ!#)qhY2w1j ziW2tX(P(ftJu9bq3jgfc;;kq9@=M5)SYpo9o3s)&Ku zoW^P_J*Dj32<3q{7HI82opJp0Yi>u_u5I_pb}5@KVCq>qOnEujL&|vwQ;cXqwc*?x z$(Uq+=S^w&K}i!5%?Mq44tW^MZIXfaixZNB+jiT)cm)bM!sb7I-P#WC{etWGX!O8J zcqn8jdLQ+K-M(XKCO|0c2he|8Ekv=a_0EyfB@Gq)%IB@Pl}}@3&Yz8$e>o{mwFB)w z+Y~10-_d0`UIRKO&`s$NC10%Ccj_*;B$(HVrp{A(y{EZ-ivkscCREvS0)mfMs%U2& z`-q)sM?+`Fll=q0?#+sOraxt(yuIN3V3IK@;yn{dKN$Z?`!vzw3dT?>vvc;33N$&Q z5I_p=vYgrYTZI6~cPR{wltk!m59*;X??ANOwY=H8^MPe~JY1;U8mmUWLx76|BaTX; z>j&z3mu24-&-#U65jv&n`JX3@c%JXnfY=E1>gI8coAxjbhV*J#Kad_#(- zkEC;ZzlP>E;y6{2B;OA&OaNkVck%t?ApwWk%6r5FSAmsGOx)^Vl`W30%f96`v2v@L zs5*iic&&?z{~Vb9Ay-gV(s_@}X-gUtpiuxdB&aD5$qQ6K-tD$Ny4WfjB~#J^!nA@B z+nWTrat>yhtg$;r9puDOkKoa-N8>^J1&GMg;HoMhF@2RQrc3e8F~2lxH%Bl0T2s9Q zY0Prrxm}0(V;m+2DR&BpThOKK(?EtUZRaz9idUHI&4RCXUs+&eaQ<@V2zCY_jkYK=Jd0XLw8K781 zuY`(B;gJ-Ty7A5NKK30|fUJ1?T4M)OClZ|#X^~`=qvr2Qkf31(1AUX&GPT^%fu9#$ z>D3sxm*j8^P$>azVH8mrFeoLx!HHmYz*c@>V$9Uk^Dom+AwFAfxzCseTyFZ`GiDqx zRra5H8EUPg)D0+i>h%P~WBz;iuQj#7Rngl3i0h4RJVpzw9B*Oj7`>@EblIXkn z!z4m42Gx24u|>?Ar@fspg5-az!}@953r(){po8A$jJ`mL;U*U-$z>L~NLST}#ux2% z7<~JT8G}}d7tsg7Y6*Aa6lT!Y-r?OrN!Fz+W+)YB{wWUEJl zR!HXq6_97Thz9bJbNcku?SUdy@#t%6H63`cU_1j%`*1ifx0D600IvY>&`d1eQZjU& zFG=H|8Wf=kgk5dyh7)Y`F69o%)-?}u1Ndiihe^Ru6c}~rzH)B&SoI*k$9IZCo0 z$qq0AXj*fz(R?z`L_{lcc20;6u5H9SE2cVm$#JiRMnanl24=OgLbClwMloc@be!N? zcF9_%kk3Rqdaxn$V_dCSz%YW2?@K8qQImxPjzRa&7<{Q03K$1Lr*~{DfIHfWdAR*i zC;dU$m(l8}+!{HvYE1Q?iX|7mj&%vJQ6`sVWiZ+?^CqV}7R&^2E5j0$!7S9nPB9UI z0GSh?-Y4Vm2U=d%2x}H{iHSoO>AQRkI|l)@Bz0WGF3V@>0{=6XrjNiXMasBcAB6lT zu^dyfQ=MbVm=@lf`NuCC6M!JBwrfbqnFUu(FZ?~z&x@eRFZ9SU0~diDP4#n{x4f9? zll#hGbA8__{fZ&&F8!)&4@_zdc}`I{DRYr@I%Ljdy#inY>@|*ay*_NW<|{kCT+~&g zf@eK*f(MvfWF@I`yKX}cDR;hiQSX7l1NVu*31#QpEpG#6zbEOn($2wmz~JQ}TQ_C9 zz1bu5v$#UNG@PZl8z5Uedtdse`}}6%zA}ULi4ai9hVN5f|1?wlcziRWxd4d7ghxm`;WwT3f#(<+ zttvwsrR(?y7ezg@fOs^0hx980>IKg@Xy*WYH8FN`3Hgj7lOGDMpUDvzr8KTwiIu1Qis+!>elWL67y(-`?pmF~ff?XA+W zgR^Z8P5gOo%JOrme*_NB``b1FK9ty?mtsWqYKAMA{;013-MdV|n(x7_$#`H#_FLRx zLOrlsC$)(SpBfBG$E=0RL;_7(rX!Mo@Mz*jXeH#~1K<6Onqk~&AY|rk${x+AsMf&3 z8m(7t)rpO&=X>(_er1EaE5ndn)HdySa*&xCzYGST__A(fzGo2Cb;$WtaGoa)#JwP* zvfK2$Lb-zr4~a6hdXqPjgA59$vEk9P5bs5EiDv}tx)nbhYK`et%Txv6k@jXia{e!` z2d3+aLcF3BY?+$t5R@RP$CVUW*C%Oq`Z~XJgF`r_>c^heY@0qY4~AM6AiP#PT3qBS4e1sinqe9NHDn8i0@ibv8|Qk5e@?VrcQd5-n}Wf}=99&XkFIzZ!=4&GElsUb^|_#+-qcbR?$_)?rFiRIZ`3x&k6$>AUg)!%mgyr zw3M!O(x<(Elk}>wZ1>DN7j^v<`TW<5=Ri_ERIZf=kiu(r(|boB(wiuC7$beQhB0yA zCpE(6cJzL+pTmiHPYlfD=~tet3Mxm6fo1%Ti1Cg`4lU;yPdJ`Q2P2_%WN+kZrM!Q_I~ddhkZq=YLjG;-+680-oH7<4)GmM>01!E=3awEIUMSGy z;e(&)JZPck>)daQk|`*T)D%6t0ZD`;lpv4+oYuUSENHGI=>YFtc;Aq& z+^mRcCIOfr;UfN@o_6E+M3%@agHLww=+ez6t;^c9i{kB{<7s7Efg@n z-OZI~`^h_r(hFx`Kw{isHivZ&`LMyt+qXaRT8Z^*)TAf;bZ zDkc(Cz#@0{~G=e(ciXnKXrLHPrih`Qrx0)rFXKoMG^#)uMx7>CJ~i16JSDmoSH z9odn1wEPl$t)Y_6vTEYw(}L!Rd0r%GgT*WZfQ`HRiU7I1v#*HrXon$+qM#S;qVIz4 z3|xA9FhduvJW%q+GMJwVZBzhp%Cl)qSTUpcW)Hm_H}%easI{tQDZKfnjn%#S0aI$G zuPAIRSx3{CWIo%Cn^lCd!p3Yyxm_MK#d*GwB_Ia=Tr!5c>o^b5A+^i zOz>kuYn3&ToBEq>b9;=e?d7r&>2Raz{r$#J6agIa9UgF!*BsXxp^c?=R#0b5HZo+x zi4F^}giCjgHa~WT>1h~HWW|6_Ob^m&goZ@NRXU+>{z53hq;73{UDGA1ox<}NqJIVd zTz?7Ifl8i@wgct}w1GM!4w%CkFhW5ft^m5YFv<`a89S+^p#Bdp_J;ws)@4oJg>4x7 zCDRfH&SB(MGlIZbY3fA($ovx?<7Upm-w-f?BT>gVF&e%;9;#n1KyBYiSYe z^^pHp(s}^9eR|MI6lyDw5J}kfx=2DSC$T&`e~+uaLd3}d@#r_+>xl8PCHgsMoGcDC z>ixJ^T}QhQ00o>A%>c(I@c-n|~^1|TiJ6A#w>*<`dcRf(5byvvsUGNf@s z)r&y`FhncH)PkDXF$X%bF$SDrNnuiJC<#JhC!iw|70ZJP||2=AqAtOLXo z+RE%$>q98nq)fP8IOC zhk-{6^N5a+r>|VdbORDjm{kdThgN0WZDRREd^r%+-p;=W11?;2?_%sd2W0bcsVQ@mnBbw#F~>LcyN3oU&!d|NJ{3A&$VAqH+M&w9wT> zw?G*r+>Ic>TxnY^7j=3xo`Bx;Ex&c+_#8yTZfJ|$@TCdA0H}MW==+WDemoK6@ud@X zNp&`S_>br->(Z3IUr*z#`}LsHtmI&0(KYKISGJ*zpIeVAO6YV+jW(D%{9x5v?%3ON zPrjVA29gs6;es7-e4=9FI%xP+q?*s&-6FerKf^ikZW?c@7yDWG^oWP6cUw~WknCn& z#!Iu-4f&)|%-#tf^0M<84RCwQS^{A5PX9RVFl@^FZQ2zhow~C+bFmK91d|PP-oEQo zPS!dsRNi504oXsjJ}~z?Z#T-Seb(mF|77~IJ4pfJ#vz~Ro-OH3Hc9u^M$Jx%q~N?= zw*vBOf%L=RA4~f{E~O%ze7Ph>FpVG>yCDSS7K3+X-D{M;WyxaQ#&`uuLsnRcDH$l2w_^(P z&ly7k9QxHSsq?KtMs64xkWDb?^bt8j*2sAC>4B@rtLn>1X!{-&u zOAdlS6t&}zKD6=!G;&fV!eJ2W-aF^Z0L1Fll|-q`4hUvT`U8eL2|DJL$0EnR9O^c} zPR)ZU-x^tuDFL#}s2`a-m|FG8OV^kAH+>clkZ0P+4Pb!jV8NP&xo1^3-BPEt85`MF zy@Ys~cN(>>f|fp;5++=}_Ota!& z%7_&ctOqJv%KA&`U9Crgoy$GnphsoFwN_NYlFUkLexHO%Ft4c2M3kr$$-aZ0ptRnd zwH~;pu{Pg~AWM2vc>vW)q=V)?T>A+xB;@a8)0#=VTf7Qy8~ATAruI!R5XWRUTfI?0-#Dj@7#r72^kF-^5izeBW$gkP0zK` zc2wVxpQX5Ph&)~b6QXSyHVPycnUlrb|9{D(kjviPzR2&g(fS$uJKTvt7tgg>!?4%V$qAFN(aDax_9zN-@e_0<^mZta$3$onm0&vrZ zNdu>R6)C6FXMj<)rH)*6-B=5eDH*&+#q{;)BFehPama{qrLTr}eGjQ$fIOThy|CDg z34WVWTv~mS71>kIenEi8LrnlhiEo%3PB?Prr7}ubhJFuacV0i_vlSvXR7Z&*sNvkx zZ8TrWeh(e8Oj_E`IdEEf9xFr0(^cdY`EQ!M4iLxGoHNz)QR}rAl@q^*?yv)@((~!D z`Lj@Sp^o(iYJwq16##oc&!YkSNC}w)(@2KGEeRW^g`Mf$ardz?+~OrT>6bUf(Oz_^ zzJd>$O_j?6kelXe1WPD8lTZsntx&^Sh#*Yxo1yD8lCrkdnea=ej~-Q!51YypQ2rmK zbrELOFOtcM$)!uwE>&=C)iCy>3tLOQ=}j@f#$rNHfdNMttd6bVec$d17jBiFo(B#< z$6=sAv^-8ZG2^B1(4JK5n&}P+*CqVHzWFdJdcBvj?&+^e&ZSr3-jP1HA8tKxU~RI3 z^WHm;jbR@~X}_C#b5ceF1tdY!!nQE~WxTnO_*ECZ$bs~)pP}9WRBkbn*H)Bu9k*bA zAStTh!_^LDO)m=Qs|NF$-G%>3Tkxm$UcYd<9kt%1a9ev3B?w(WxDgaSFLs=VP9}u{ z(r&Os)sOai{4D?euZtiOF|1)X5+nc(ZH(Cnlx(I>e-}M(w3&t-hEe8~=Jb9VL$BFk z+GOz6h#Ok4vG$ik$%B9Y0HzkxIR%T+?9k!&$BcVEG?bHWANw8~g@z@lD=}!I8gA?g z<$sGiE)624Dloq>GsOK4zgeJRa4OL+OBC_i_Y@!6j_lj;1Y3YTV+W~{=d+Vb|76N6 z?O-Ld)$_;`bU_-bxV}^G4=tNik4;tlnI_gEu+3Qc$5UtG&Bp_2?N&LvVcs)5mT|DS z_W3}mgbdj*8+C+Zn|RNz@Yx|y8h|7PeXE=g!adjQi}Mr&mpVvlb{D=okHOC1ecq;< zKSU;tC=8`CO^OFJ1+O754xh$N^O}bssPK!{l$rwmq@eTQYB?aJ)5T>UN)3e@m2B0%f|rd?aHFc4D}#)T;2~eyn*Yuj((mDf>mml z%|uFc(H(rMuBtFBcO-JRT&|DghQ%FV+j>Fo`iqY8-#Ja0w!ZkN=4cpAM*QD+U^a`* z&{DukK(ct>vk9uL@s3E}KfHU_C4*(X|2Al~O1>_*Pvq9ySrG#e(+HXTIHJV zjzQ2BJZ;y|dKRYlY(!ZW#@EyGZ#-i_X^W7Nv-^%)e1LFP6MR2m?`B{8C^z~uS97R2 zdWo6ujXYJnF6BP*N~2bh+4Cw1M??$DAj%`&kp`&~$XD{EBB; z9P!VFNqh6krAz*wiki&hjUDke_r<4rH*2+Xw5H_)If9gH2ejBY-ww;%f(VcB+LIj% z|JwR_^`@Inee6Zb-Z6`f!q=?b`e0n;lFwyLe$?Lhy_z#Ct#*F8vauvBZ>Dzk%7&C< z5pC7UP}g8hxfP?90~@u~NAmshG3sIb0H2%9Hm^oFHlk=jx#N=~pO(5<8OE+IDjwpw zxL90$Xt>~-aQacfsjEhYX|A^46u6jOzYp$fdhOmbDAp)8T;RGQ=q~|vb=q%ha+^Na z`>F#mX}(L0_OBrS-LaXA#F#CnLx`C|Q1Em1qBG41J-*ygtUmO-DnqgG^=rjPndA0V zQPj`J1bX#@o8gg8)IS(KGxghNPy5!$ad~p5Vn!9oc^_CX^!iV=Q{1CAU!7MCnZgfCSjYb z9^dw9*{3I?wtZc1TY1?R{=sWZvN%TX+NVs0mhE}+vq!AOeNr1>fXyqcA zBGxLqEM3v7qns>vC-$6jITi0tA^4B0$RjxKd7QypJiSk;fz$%UW4}!Lj^p{9?UbHD zVRK#8mM@&&@!1rEtK*q{TAOvZ;6nJX<%UiC6+gYUKRxoXW$AKr)4;`)0zF|VJ0PB| zD!Tp&}G1~f+NSPy!6uJssh9gQ9XgjOtla%b%_vxEu7nvgdM7Dsu`gE|J za}7Z~Ffp=`Q!~-+?(&Z2$31RHUxhC&@NvmwZpD`=Wjt6YpH;ys`HYOO67E|Sw`X5r zfdhVhpuC9pO6}jcxmlC>3mw@;_=3lLB+SWX0@!y|b^0W(UZcXYJowZiXU0d%rpN5HVXZkWt znSOV)C%?tgkbYGW)$l<4LrVN2QZZ9dkW5^lHC`TTND$=>9#-5QZ)Klf5>`vV$(O8s zI<|U%yuoX6w;H27H?PA_GjP-23Z(6iS(Y4|{5$g!?rgZE;Ji@j^j1Uq%6Z=sb`rNP ztW?evC#*c7rq5H}`eB*VQ#JILj%g}wJraT?zsRNhbwM=>R_-D$&TdYnj`)QC0oD5L A5&!@I diff --git a/doc/build/_images/output_8_1.png b/doc/build/_images/output_8_1.png index 71368b9a139d985e6632290a0e383fe7d7fa15cb..bd6b2f3f4ad4f798216c798ab5143878a18b1105 100644 GIT binary patch literal 4418 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 WYU!4DTK!vs0e5>imwyv<>fZnytsFD} literal 2925 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 diff --git a/doc/build/_sources/api/modules.txt b/doc/build/_sources/api/modules.txt index e5f059c50..f8357f997 100644 --- a/doc/build/_sources/api/modules.txt +++ b/doc/build/_sources/api/modules.txt @@ -1,12 +1,15 @@ pyFAI API ========= -This chapter describes the programming interface of pyFAI, so what you can expect after having launched ipython and typed: -.. +This chapter describes the programming interface of pyFAI, so what you can +expect after having launched *Jupyter notebook* (or ipython) and typed: + +.. code-block:: python import pyFAI -The most important class is AzimuthalIntegrator which is an object containing both the geometry (it inherits from Geometry, another class) +The most important class is AzimuthalIntegrator which is an object containing +both the geometry (it inherits from Geometry, another class) and exposes important methods (functions) like integrate1d and integrate2d. .. toctree:: diff --git a/doc/build/_sources/api/pyFAI.txt b/doc/build/_sources/api/pyFAI.txt index 66aa6bd93..08b7a84ea 100644 --- a/doc/build/_sources/api/pyFAI.txt +++ b/doc/build/_sources/api/pyFAI.txt @@ -7,6 +7,14 @@ :undoc-members: :show-inheritance: +:mod:`average` Module +--------------------- + +.. automodule:: pyFAI.average + :members: + :undoc-members: + :show-inheritance: + :mod:`azimuthalIntegrator` Module --------------------------------- @@ -15,6 +23,15 @@ :undoc-members: :show-inheritance: +:mod:`multi_geometry` Module +---------------------------- + +.. automodule:: pyFAI.multi_geometry + :members: + :undoc-members: + :show-inheritance: + + :mod:`integrate_widget` Module ------------------------------ @@ -86,7 +103,7 @@ :members: :undoc-members: :show-inheritance: - + :mod:`ocl_azim_csr_dis` Module ------------------------------ @@ -95,15 +112,6 @@ :undoc-members: :show-inheritance: - -:mod:`worker` Module --------------------- - -.. automodule:: pyFAI.worker - :members: - :undoc-members: - :show-inheritance: - :mod:`io` Module ---------------- @@ -185,11 +193,177 @@ :undoc-members: :show-inheritance: -:mod:`gui.utils` Module ------------------------ +:mod:`gui.gui_utils` Module +--------------------------- .. automodule:: pyFAI.gui.utils :members: :undoc-members: :show-inheritance: - \ No newline at end of file + +:mod:`ext.bilinear` Module +-------------------------- + +This extension makes a discrete 2D-array appear like a continuous function thanks +to bilinear interpolations. + +.. automodule:: pyFAI.ext.bilinear + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._bispev` Module +------------------------- + +This extension is a re-implementation of bi-cubic spline evaluation from scipy + +.. automodule:: pyFAI.ext._bispev + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._blob` Module +----------------------- + +Blob detection is used to find peaks in images by performing subsequent blurs + +.. automodule:: pyFAI.ext._blob + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.container` Module +--------------------------- + +Container are a new uniform storage, optimized for the creation of both LUT and CSR. +It has nothing to do with Docker. + +.. automodule:: pyFAI.ext.container + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._convolution` Module +------------------------------ + +Convolutions in real space are used to blurs images, used in blob-detection algorithm + +.. automodule:: pyFAI.ext._convolution + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext._distortion` Module +----------------------------- + +Distortion correction are correction are applied by Look-up table (or CSR) + +.. automodule:: pyFAI.ext._distortion + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext._geometry` Module +--------------------------- + +This extension is a fast-implementation for calculating the geometry, i.e. where +every pixel of an array stays in space (x,y,z) or its (r, \chi) coordinates. + +.. automodule:: pyFAI.ext._geometry + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.histogram` Module +--------------------------- + +Re-implementation of the numpy.histogram, optimized for azimuthal integration. +Deprecated, will be replaced by silx.math.histogramnd + +.. automodule:: pyFAI.ext.histogram + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.marchingsquares` Module +--------------------------------- + +The marchingsquares algorithm is used for calculating an iso-contour curve (displayed +on the screen while calibrating) but also to seed the points for the "massif" algoritm +during recalib. + +.. automodule:: pyFAI.ext.marchingsquares + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.morphology` Module +---------------------------- + +The morphology extension provides a couple of binary morphology operations on images. +They are also implemented in scipy.ndimage in the general case, but not as fast. + +.. automodule:: pyFAI.ext.morphology + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext.reconstruct` Module +----------------------------- + +Very simple inpainting module for reconstructing the missing part of an image (masked) +to be able to use more common algorithms. + +.. automodule:: pyFAI.ext.reconstruct + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.relabel` Module +------------------------- + +Relabel regions, used to flag from largest regions to the smallest + +.. automodule:: pyFAI.ext.relabel + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext.preproc` Module +------------------------- + +Contains a preprocessing function in charge of the dark-current subtraction, +flat-field normalization, ... taking care of masked values and normalization. + +.. automodule:: pyFAI.ext.preproc + :members: + :undoc-members: + :show-inheritance: + + +:mod:`ext._tree` Module +----------------------- + +The tree is used in file hierarchy tree for the diff_map graphical user interface. + +.. automodule:: pyFAI.ext._tree + :members: + :undoc-members: + :show-inheritance: + +:mod:`ext.watershed` Module +--------------------------- + +Peak peaking via inverse watershed for connecting region of high intensity + +.. automodule:: pyFAI.ext.watershed + :members: + :undoc-members: + :show-inheritance: + + \ No newline at end of file diff --git a/doc/build/_sources/calibration.txt b/doc/build/_sources/calibration.txt index c160b89d6..e3c47e735 100644 --- a/doc/build/_sources/calibration.txt +++ b/doc/build/_sources/calibration.txt @@ -1,7 +1,7 @@ :Author: Jérôme Kieffer -:Date: 31/05/2016 +:Date: 01/12/2016 :Keywords: generic description of the calibration procedure -:Target: General audiance +:Target: General audience The determination of the geometry of the experimental setup for the diffraction pattern of a reference sample is called calibration in pyFAI. @@ -28,7 +28,8 @@ easier to perform a calibration, using the Debye-Sherrer rings of a reference sample called calibrant. About 30 calibrants are provided by pyFAI like :math:`LaB_6`, ceria :math:`CeO_2`, silicon, corrundum or silver behenate. -Among other simple compound, all of the NIST `Standard Reference Materials `_ +Among other simple compound, all of the NIST +`Standard Reference Materials `_ have been are tabulated and are directly available as calibrant. One can alternatively provide its own calibrant description files which is a simple text-file containing the largest d-spacing (in Angstrom) for a set of @@ -42,18 +43,30 @@ Pre-processing of images: ------------------------- The typical pre-processing consists of the averaging (or better median filtering) of darks images. Dark current images are then subtracted from data and corrected for flat. +The pre-processing is best performed using the *pyFAI-average* tool, which documentation +is available in the :ref:`manpage`. If saturated pixels exists, the are likely to be treated like peaks but their positions will be wrong. It is advised to either mask them out or to desaturate them (pyFAI provides an option, but it is expensive in calculation time). +A Mask drawing tool, called *pyFAI-drawmask*, is installed together with pyFAI and +its documentation available in the :ref:`manpage`. + +To start the calibration the *pyFAI-calib* tool will need: + +* an image with Debye-Sherrer rings +* the energy or the wavelength +* the calibrant name or the d-spacing file of the calibrant +* the detector description. Peak-picking ------------ - +Once started, *pyFAI-calib* will ask you to select rings. The Peak-picking consists in the identification of peaks and groups of peaks -belonging to same ring. It can be performed by 4 methods described hereafter. +belonging to same ring. +It can be performed by 4 methods described hereafter. Massif detection ................ @@ -97,7 +110,8 @@ Refinement of the parameters ---------------------------- After selecting groups of peaks, each of them is assigned to a Debye-Scherrer ring number -and associated to a d-spacing value hence a theoritcal 2\theta value. +(0-based numbering in python) +and associated to a d-spacing value hence a theoretical 2\theta value. A supervised least-squares refinement, performed on the difference of peak position's 2-theta values versus the expected ones from calibrant provides the 6-geometry parameters fitted. @@ -120,7 +134,7 @@ of the scattering image. The average error per control point (delta 2\theta error in radian) is printed out and offers a quantitative measurement of the relative quality of the fit for similar setups/experiment. -Neverthless its absolute value has no meaning, except the lower, the better. +Nevertheless its absolute value has no meaning, except the lower, the better. Subsequently, pyFAI offers some validation options in to check the quality of the fit. some of them global, some of them limited to given rings. diff --git a/doc/build/_sources/changelog.txt b/doc/build/_sources/changelog.txt index e3d697bb8..cd3dad95f 100644 --- a/doc/build/_sources/changelog.txt +++ b/doc/build/_sources/changelog.txt @@ -1,12 +1,47 @@ :Author: Jérôme Kieffer -:Date: 02/06/2015 +:Date: 06/06/2016 :Keywords: changelog ChangeLog of Versions ===================== -0.12.0: 06/2016 ---------------- +0.13.0: 01/12/2016 +------------------ +* Global improvement of tests, packaging, code quality, documentation and project tools +* Scripts + - Add support for multiframe formats on pyFAI-average + - Add support for monitoring correction from header file (on pyFAI-average) + - Add progressbar in the shell (on pyFAI-average and pyFAI-integrate) + - Script drawMask_pymca is renamed into pyFAI-drawmask + - Rework of the drawmask GUI using silx + - pyFAI-drawmask do not have anymore hard dependency on PyMCA + - pyFAI-integrate can now be used without qt dependency (--no-gui) + - Fix the script to support both Python 2 and 3 (pyFAI-calib, pyFAI-benchmark) + - Fix selection of units on diff-map (the user selection was not propagated) +* For users + - More source code in MIT license + - Update name and specification for cameras + - Add cameras: Eiger500k, RaspberryPi5M, RaspberryPi8M + - Fix Xpad S540 flat detector geometry + - Fix definition of CeO2 calibrant + - Add mask and flat on multi-geometry + - Fix solid angle of the multi-geometry + - Fix geometry processing for custom output space + - Fix normalization factor and variance + - Add support for Qt5 + - Add support for Debian 9 packaging +* For developers + - Create common preprocessing for distortion correction + - Create common image preprocessing using Cython (NaN filter, flatfield, dark, polarisation) + - Refactoring of units module. It allows to register custom units. + - Worker can now use Writer + - Worker polarization argument is renamed into polarization_factor + - Remove the dependency from python-fftw3, use numpy instead + - Remove QtWebKit dependency + - Fix un-correction of images using sparse matrix from scipy + +0.12.0: 06/06/2016 +------------------ * Continuous integration on linux, windows using Python 2.7 and 3.4+ * Drop support of Python 2.6, 3.2, 3.3 and debian6 packaging * New radial output units: Reciprocal spacing squared and log(q) **ID02** @@ -19,7 +54,7 @@ ChangeLog of Versions * Compatibility with the copy module (copy.deepcopy) for azimuthal integrator **ID02** * Distortion correction works also for non-contiguous detectors * Update documentation and provide advanced tutorials: - - Introdution to pyFAI using the juyter notebook + - Introduction to pyFAI using the jupyter notebook - detector calibration **ID15, BM02** - Correction of detector distortion, examples of pixel detectors. - calibrant calculation **ID30** diff --git a/doc/build/_sources/coverage.txt b/doc/build/_sources/coverage.txt index ace5c8ec6..4263ef8b7 100644 --- a/doc/build/_sources/coverage.txt +++ b/doc/build/_sources/coverage.txt @@ -1,38 +1,46 @@ Test coverage report for pyFAI ============================== -Measured on *pyFAI* version 0.12.0, 06/06/2016 +Measured on *pyFAI* version 0.13.0, 01/12/2016 .. csv-table:: Test suite coverage :header: "Name", "Stmts", "Exec", "Cover" :widths: 35, 8, 8, 8 - "pyFAI/__init__", "35", "20", "57.1 %" - "pyFAI/_version", "34", "32", "94.1 %" - "pyFAI/azimuthalIntegrator", "1258", "909", "72.3 %" - "pyFAI/blob_detection", "517", "196", "37.9 %" - "pyFAI/calibrant", "338", "244", "72.2 %" - "pyFAI/decorators", "33", "33", "100.0 %" - "pyFAI/detectors", "1314", "1028", "78.2 %" - "pyFAI/directories", "33", "20", "60.6 %" - "pyFAI/distortion", "544", "162", "29.8 %" - "pyFAI/ext/__init__", "0", "0", "0.0 %" - "pyFAI/geometry", "961", "761", "79.2 %" - "pyFAI/geometryRefinement", "481", "174", "36.2 %" - "pyFAI/gui/utils", "69", "33", "47.8 %" - "pyFAI/integrate_widget", "493", "273", "55.4 %" - "pyFAI/io", "465", "250", "53.8 %" - "pyFAI/massif", "201", "132", "65.7 %" - "pyFAI/multi_geometry", "75", "65", "86.7 %" - "pyFAI/ocl_azim", "269", "191", "71.0 %" - "pyFAI/ocl_azim_csr", "240", "184", "76.7 %" - "pyFAI/ocl_azim_lut", "230", "177", "77.0 %" - "pyFAI/ocl_sort", "177", "136", "76.8 %" - "pyFAI/opencl", "204", "144", "70.6 %" - "pyFAI/peak_picker", "756", "195", "25.8 %" - "pyFAI/spline", "432", "165", "38.2 %" - "pyFAI/units", "70", "65", "92.9 %" - "pyFAI/utils", "778", "431", "55.4 %" - "pyFAI/worker", "340", "131", "38.5 %" + "__init__.py", "35", "20", "57.1 %" + "_version.py", "41", "39", "95.1 %" + "average.py", "526", "389", "74.0 %" + "azimuthalIntegrator.py", "1207", "926", "76.7 %" + "blob_detection.py", "504", "194", "38.5 %" + "calibrant.py", "338", "244", "72.2 %" + "containers.py", "79", "72", "91.1 %" + "decorators.py", "33", "23", "69.7 %" + "detectors.py", "1336", "1050", "78.6 %" + "directories.py", "34", "21", "61.8 %" + "distortion.py", "557", "166", "29.8 %" + "ext/__init__.py", "0", "0", "0.0 %" + "geometry.py", "959", "759", "79.1 %" + "geometryRefinement.py", "485", "176", "36.3 %" + "gui/__init__.py", "4", "4", "100.0 %" + "gui/matplotlib.py", "24", "17", "70.8 %" + "gui/qt.py", "100", "36", "36.0 %" + "gui/utils.py", "34", "14", "41.2 %" + "integrate_widget.py", "453", "268", "59.2 %" + "io.py", "579", "294", "50.8 %" + "massif.py", "201", "132", "65.7 %" + "multi_geometry.py", "128", "94", "73.4 %" + "ocl_azim.py", "269", "191", "71.0 %" + "ocl_azim_csr.py", "240", "184", "76.7 %" + "ocl_azim_lut.py", "231", "177", "76.6 %" + "ocl_sort.py", "177", "136", "76.8 %" + "opencl.py", "206", "146", "70.9 %" + "peak_picker.py", "758", "197", "26.0 %" + "spline.py", "432", "165", "38.2 %" + "units.py", "80", "76", "95.0 %" + "utils/__init__.py", "467", "290", "62.1 %" + "utils/bayes.py", "92", "60", "65.2 %" + "utils/shell.py", "44", "41", "93.2 %" + "utils/stringutil.py", "25", "24", "96.0 %" + "worker.py", "358", "140", "39.1 %" - "pyFAI total", "10347", "6151", "59.4 %" + "pyFAI total", "11036", "6765", "61.3 %" diff --git a/doc/build/_sources/design/ai.txt b/doc/build/_sources/design/ai.txt index 6cdf67706..123073d2e 100644 --- a/doc/build/_sources/design/ai.txt +++ b/doc/build/_sources/design/ai.txt @@ -40,6 +40,7 @@ external developers/users. It is usually instantiated via a function of the module to load a poni-file: .. code-block:: python + >>> import pyFAI >>> ai = pyFAI.load("Pilatus1M.poni") >>> print(ai) @@ -149,6 +150,6 @@ The main issue with pixel splitting arose from 2D integration and the habdling o References: ----------- -:: _integrate: http://pythonhosted.org/pyFAI/api/pyFAI.html#pyFAI.azimuthalIntegrator.AzimuthalIntegrator.integrate1d +.. _integrate: http://pythonhosted.org/pyFAI/api/pyFAI.html#pyFAI.azimuthalIntegrator.AzimuthalIntegrator.integrate1d -:: _CSR: http://en.wikipedia.org/wiki/Sparse_matrix \ No newline at end of file +.. _CSR: http://en.wikipedia.org/wiki/Sparse_matrix \ No newline at end of file diff --git a/doc/build/_sources/detector.txt b/doc/build/_sources/detector.txt index 189abdaf5..7b0b7a1d0 100644 --- a/doc/build/_sources/detector.txt +++ b/doc/build/_sources/detector.txt @@ -1,7 +1,8 @@ :Author: Jérôme Kieffer -:Date: 31/05/2016 +:Date: 01/12/2016 :Keywords: detector -:Target: General audiance +:Target: General audience + Simple detector =============== @@ -10,7 +11,8 @@ Like most other diffraction processing packages, pyFAI allows the definition of Typical pixel size are 50e-6 m (50 microns) and will be used as example in the numerical application. -Pixels of the detector are indexed from the *origin* located at the **lower left corner**. +Pixels of the detector are indexed from the *origin* located at the +**lower left corner** when looking from the sample. The pixel's center is located at half integer index: * pixel 0 goes from position 0 m to 50e-6m and is centered at 25e-6 m. @@ -18,7 +20,7 @@ The pixel's center is located at half integer index: **Nota**: Most of the time you will need to pass the optional argument *origin="lower"* to -matplotlib imshow function when displaying the image to avoid confusion +matplotlib's *imshow* function when displaying the image to avoid confusion. Complex detectors ================= @@ -37,23 +39,23 @@ for small spatial displacements, often called geometric distortion. This is why detectors need more complex definitions than just that of a pixel size. To avoid complicated and error-prone sets of parameters, two tools have been introduced: -either *detector* classes define programatically detector or Nexus saved detector setup. +either *detector* classes define programmatically detector or Nexus saved detector setup. Detectors classes ----------------- They are used to define families of detectors. In order to take the specificities of each detector into account, pyFAI -contains about 55 detector class definitions (and twice a much with aliases) +contains about 58 detector class definitions (and 168 with aliases) which contain a mask (invalid pixels, gaps, ...) and a method to calculate the pixel positions in Cartesian coordinates. Available detectors can be printed using: .. code-block:: python - import pyFAI - print(pyFAI.detectors.ALL_DETECTORS) + >>> import pyFAI + >>> print(pyFAI.detectors.ALL_DETECTORS) -For optically coupled CCD detectors, the geometrical distortion is often +For optically coupled CCD detectors, the geometric distortion is often described by a bi-dimensional cubic spline which can be imported into the detector instance and be used to calculate the actual pixel position in space. @@ -75,7 +77,7 @@ can address some of the most complex detector layouts: * hexagonal pixels (i.e. Pixirad detectors, still under development) * curved/bent imaging plates (i.e. Rigaku, Aarhus detector) * pixel detectors with tiled modular (i.e. Xpad detectors from ImXpad) -* semi-cylindrical pixel detectors (i.e. Pilatus12M from Dectris). +* semi-cylindrical pixel detectors (i.e. Pilatus12M from Dectris or CirPad from Soleil). The detector instance can be saved as HDF5, either programmatically, either on the command line. @@ -91,7 +93,9 @@ Using the *detector2nexus* script to convert a complex detector definition (multiple modules, possibly in 3D) into a single NeXus detector definition together with the mask: - detector2nexus -s halfccd.spline -o halfccd.h5 +.. code-block:: bash + + detector2nexus -s halfccd.spline -o halfccd.h5 Conclusion ========== @@ -100,9 +104,9 @@ Detector definition in pyFAI is very versatile. Fortunately, most detectors are already described, making the usage transparent for most users. There are a couple of :ref:`tutorials` on detector definition which will help -you understanding the mechanisme : +you understanding the underlying mechanism: -* Distortion which explains how to correct images for geometric distortion -* CCD-calibration which explains how to calibrate a detector for geometric +* **Distortion** which explains how to correct images for geometric distortion +* **CCD-calibration** which explains how to calibrate such detectors for geometric distortion. diff --git a/doc/build/_sources/ecosystem.txt b/doc/build/_sources/ecosystem.txt index 10bd14c93..b7b81eec3 100644 --- a/doc/build/_sources/ecosystem.txt +++ b/doc/build/_sources/ecosystem.txt @@ -1,5 +1,5 @@ :Author: Jérôme Kieffer -:Date: 31/05/2015 +:Date: 07/09/2016 :Keywords: Other software related to pyFAI PyFAI Ecosystem @@ -148,6 +148,28 @@ of model SAXS intensities. Developed at CEA Saclay by O. Taché and available on `PyPI `_. +Xi-cam +...... +`Xi-cam `_ is developed by Ronald +Pandolfi, Dinesh Kumar, Singanallur Venkatakrishnan and Alexander Hexemer at ALS. + + +Xi-cam aims to provide a community driven platform for multimodal analysis +in synchrotron science. The platform core provides a robust plugin +infrastructure for extensibility, allowing continuing development to simply +add further functionality. Current modules include tools for +characterization with (GI)SAXS, Tomography, and XAS. This will continue to +serve as a development base as algorithms for multimodal analysis develop. + +Seamless remote data access, visualization and analysis are key elements of +Xi-CAM, and will become critical to synchrotron data infrastructure as +expectations for future data volume and acquisition rates rise with +continuously increasing throughputs. The highly interactive design elements +of Xi-cam will similarly support a generation of users which depend on +immediate data quality feedback during high-throughput or burst acquisition +modes. + + xPDFsuite ......... diff --git a/doc/build/_sources/geometry.txt b/doc/build/_sources/geometry.txt index e916c8791..5e8e9e912 100644 --- a/doc/build/_sources/geometry.txt +++ b/doc/build/_sources/geometry.txt @@ -1,7 +1,7 @@ :Author: Jérôme Kieffer -:Date: 31/05/2016 +:Date: 01/12/2016 :Keywords: generic description of the geometry -:Target: General audiance +:Target: General audience PyFAI uses a 6-parameter geometry definition similar, while not rigorously identical to SPD: @@ -50,7 +50,8 @@ Position of the observer There are two (main) conventions when representing images: -* In imaging application, one can can replace the camera by the eye, the camera looks at the scene. In this convention, the origin is usually at the top of the image. +* In imaging application, one can can replace the camera by the eye, the camera + looks at the scene. In this convention, the origin is usually at the top of the image. * In diffraction application, the observer is situated at the sample position and looks at the detector, hence on the other side of the detector. @@ -61,16 +62,19 @@ Changing the point of view behind the detector changes the sign of the azimuthal Default geometry in pyFAI ------------------------- -In the (most common) case of *transmission diffraction setup* on synchrotrons (like ESRF, Soleil, Petra3, SLS...) this makes looks like: +In the (most common) case of *transmission diffraction setup* on synchrotrons +(like ESRF, Soleil, Petra3, SLS...) this makes looks like: * Observer looking at the detector from the sample position: * Origin at the lower left of the detector * Axis 1 (i.e. *y*) being vertical, pointing upwards * Axis 2 (i.e. *x*) being horizontal, pointing to the center of the storage ring -* Axis 3 (i.e. *z*) being horizontal, along the transmitted beam +* Axis 3 (i.e. *z*) being horizontal, along the incident beam -Axis 3 is built in such a way to be orthogonal and (1,2,3) is a direct orientation. -This makes the sample position negative (at z<0). +Axis 3 is built in such a way to be orthogonal to the plane (1,2). +Due to constraints on the origin and orientation of the azimuthal angle, chi, +(1, 2, 3) is indirect orientation. +This makes usually the PONI position with negative third coordiante (at z<0). Detector position @@ -93,16 +97,23 @@ the detector surface called PONI (for Point Of Normal Incidence). For non planar detectors, the PONI is defined in the plan z=0 in detector's coordinate system. -Poni1 and Poni2 are distances in meter (along the *y* and *x* axis of the detector), +*Poni1* and *Poni2* are distances in meter (along the *y* and *x* axis of the detector), like the sample-detector distance, letting the calibration parameters be independent of the pixel size hence stable regarding the binning factor of the detector. -In the same idea rot1, rot2 and rot3 are rotation along axis 1, 2 and 3, always expressed in radians. +In the same idea *rot1*, *rot2* and *rot3* are rotation along axis 1, 2 and 3, +always expressed in radians. Rotations applied in the same order: *rot1* then *rot2* and finally *rot3*. -Due to the axial symmetry of the Debye-Scherrer cones, *rot3* cannot be optimized but can be adjusted manually in some cases like if -the detector is not mounted horizontally and/or one cares about polarization correction. +Due to the axial symmetry of the Debye-Scherrer cones, *rot3* cannot be optimized +but can be adjusted manually in some cases like if +the detector is not mounted horizontally and/or one cares about polarization +correction. When all rotations are zero, the detector is in transmission mode with the incident beam orthogonal to the detector's surface. +There is also a tutorial :ref:`tutorials` on the geometry which explains in detail +the orientations of the different rotations used by pyFAI. + + diff --git a/doc/build/_sources/index.txt b/doc/build/_sources/index.txt index 32ee96ad5..fbb6d443d 100644 --- a/doc/build/_sources/index.txt +++ b/doc/build/_sources/index.txt @@ -1,7 +1,10 @@ .. pyFAI documentation master file, created by sphinx-quickstart on Mon Nov 19 13:19:53 2012. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. + +:Author: Jérôme Kieffer +:Date: 01/12/2016 +:Keywords: generic description of the geometry +:Target: General audience Fast Azimuthal Integration using Python ======================================= diff --git a/doc/build/_sources/man/detector2nexus.txt b/doc/build/_sources/man/detector2nexus.txt index 173cdda93..4d04ea205 100644 --- a/doc/build/_sources/man/detector2nexus.txt +++ b/doc/build/_sources/man/detector2nexus.txt @@ -17,7 +17,7 @@ Usage: detector2nexus [options] [options] -o nxs.h5 -options: +Options: -------- -h, --help show this help message and exit diff --git a/doc/build/_sources/man/diff_map.txt b/doc/build/_sources/man/diff_map.txt index 2ce9fd016..6ca9d2fe2 100644 --- a/doc/build/_sources/man/diff_map.txt +++ b/doc/build/_sources/man/diff_map.txt @@ -89,8 +89,9 @@ optional arguments: Bugs: ..... + #. If the number of files is too large, use double - quotes "*.edf" + quotes "\*.edf" #. There is a known bug on Debian7 where importing a large number of file can take much longer than the integration itself: consider passing files in the command line diff --git a/doc/build/_sources/man/diff_tomo.txt b/doc/build/_sources/man/diff_tomo.txt index 1fb6030fa..1d0b7c691 100644 --- a/doc/build/_sources/man/diff_tomo.txt +++ b/doc/build/_sources/man/diff_tomo.txt @@ -16,10 +16,9 @@ where the 1d dataset has to be selected as last dimension. This file is not (yet This tool can be used for mapping experiments if one considers the slow scan direction as the rotation, but a tool named *diff_map* operates in a similar way, - provides a Graphical interface and is more flexible - -tips: If the number of files is too large, use double quotes around "*.edf" +provides a Graphical interface and is more flexible. +tips: If the number of files is too large, use double quotes around "\*.edf" Usage: ------ diff --git a/doc/build/_sources/man/pyFAI-calib.txt b/doc/build/_sources/man/pyFAI-calib.txt index e925535c3..7f4b1b571 100644 --- a/doc/build/_sources/man/pyFAI-calib.txt +++ b/doc/build/_sources/man/pyFAI-calib.txt @@ -23,6 +23,7 @@ LaB6_SRM660a, LaB6_SRM660b, LaB6_SRM660c, TiO2, ZnO, Al, Au You will need in addition: * The radiation energy (in keV) or its wavelength (in A) * The description of the detector: + - it name or - it's pixel size or - the spline file describing its distortion or diff --git a/doc/build/_sources/operations/windows.txt b/doc/build/_sources/operations/windows.txt index 65cf135ad..6ad17e2d6 100644 --- a/doc/build/_sources/operations/windows.txt +++ b/doc/build/_sources/operations/windows.txt @@ -197,5 +197,5 @@ When starting pyFAI you get a side-by-side error like:: This means you are using a version of pyFAI which was compiled using the MSVC compiler (maybe not on your computer) but the Microsoft Visual C++ Redistributable Package is missing. For Python2.7, 64bits the missing DLL can be downloaded from:: - http://www.microsoft.com/en-us/download/confirmation.aspx?id=2092 + http://www.microsoft.com/en-us/download/confirmation.aspx?id=2092 diff --git a/doc/build/_sources/project.txt b/doc/build/_sources/project.txt index e8af52a1d..1018fa8c6 100644 --- a/doc/build/_sources/project.txt +++ b/doc/build/_sources/project.txt @@ -1,5 +1,5 @@ :Author: Jérôme Kieffer -:Date: 02/06/2016 +:Date: 01/12/2016 :Keywords: Project management description :Target: developers @@ -9,10 +9,10 @@ Project PyFAI is a library to deal with diffraction images for data reduction. This chapter describes the project from the computer engineering point of view. -PyFAI is an open source project licensed under the GPL (+ MIT code) mainly +PyFAI is an open source project licensed under the GPL (switching to MIT) mainly written in Python (v2.7 or newer, 3.4 or newer) and heavily relying on the Python scientific ecosystem: numpy, scipy and matplotlib. -It provides high performances image treatment thanks to cython and +It provides high performances image treatment thanks to Cython and OpenCL... but only a C-compiler is needed to build it. Programming language @@ -33,17 +33,17 @@ The OpenCL code has been tested using: * Beignet OpenCL v1.2 on Linux (GPU device) * Pocl OpenCL v1.2 on Linux (CPU device) -Repository: ------------ +Repository +---------- The project is hosted on GitHub: https://github.com/silx-kit/pyFAI -Which provides the `issue tracker `_ in +Which provides the `issue tracker `_ in addition to Git hosting. Collaboration is done via Pull-Requests in github's web interface: -Everybody is welcome to `fork the project `_ +Everybody is welcome to `fork the project `_ and adapt it to his own needs: CEA-Saclay, Synchrotrons Soleil, Desy and APS have already done so. Collaboration is encouraged and new developments can be submitted and merged @@ -69,7 +69,7 @@ too much spammed. As the mailing list is archived, and can be consulted at: you can also check the volume of the list. If you think you are facing a bug, the best is to -`create a new issue on the GitHub page `_ +`create a new issue on the GitHub page `_ (you will need a GitHub account for that). Direct contact with authors is discouraged: @@ -93,28 +93,24 @@ Run dependencies * FabIO * h5py * pyopencl (optional) -* fftw (optional) -* pymca (optional) * PyQt4 or PySide (for the graphical user interface) -Build dependencies: -------------------- +Build dependencies +------------------ In addition to the run dependencies, pyFAI needs a C compiler. -There is an issue with MacOSX (v10.8 onwards) where the default compiler -(Xcode5 or 6) switched from gcc 4.2 to clang which -dropped the support for OpenMP (clang v3.5 supports OpenMP under linux but not -directly under MacOSX). -Multiple solution exist, pick any of those: - -* Install a recent version of GCC (>=4.2) -* Use Xcode without OpenMP, using the --no-openmp flag for setup.py. - You will need to remove the *pyFAI/ext/histogram.c* file and regenerate it, - cython needs to be installed. - -C files are generated from cython source and distributed. Cython is only needed -for developing new binary modules. +There is an issue with MacOS (v10.8 onwards) where the default compiler +(Xcode5 or newer) dropped the support for OpenMP. +On this platform pyFAI will enforce the generation of C-files from Cython sources +(making Cython a build-dependency on MacOS) without support of OpenMP +(options: --no-openmp --force-cython). +On OSX, an alternative is to install a recent version of GCC (>=4.2) and to use +it for compiling pyFAI. +The options to be used then are * --force-cython --openmp*. + +Otherwise, C files are which are provided with pyFAI sources are directly useable +and Cython is only needed for developing new binary modules. If you want to generate your own C files, make sure your local Cython version is recent enough (v0.21 and newer), unless your Cython files will not be translated to C, nor used. @@ -128,15 +124,16 @@ As most of the Python projects: .. code:: python setup.py build bdist_wheel - pip install dist/pyFAI-0.12.0*.whl --upgrade + pip install dist/pyFAI-0.13.0*.whl --upgrade There are few specific options to setup.py: * --no-cython: do not use cython (even if present) and use the C source code provided by the development team -* --no-openmp: if you compiler lacks OpenMP support, like Xcode on MacOSX. - Delete also *pyFAI/ext/histogram.c* and install cython to regenerate C-files. +* --force-cython: enforce the regeneration of all C-files from cython sources +* --no-openmp: if you compiler lacks OpenMP support, like Xcode on MacOS. +* --openmp: enforce the use of OpenMP. * --with-testimages: build the source distribution including all test images. Downloads 200MB of test images to create a self consistent tar-ball. @@ -158,7 +155,7 @@ or from python: pyFAI.tests() -It is normal to get few (<20) **Warning** messages as the test procedure also +Some **Warning** messages are normal as the test procedure also tests corner cases. To run the test an internet connection is needed as 200MB of test images will be downloaded. @@ -171,7 +168,7 @@ Setting the environment variable http_proxy can be necessary (depending on your export http_proxy=http://proxy.site.org:3128 Especially at ESRF, the configuration of the network proxy can be obtained -by phoning on the hotline: 24-24. +by asking at the helpdesk: helpdesk@esrf.fr To test the development version (built but not yet installed): @@ -187,7 +184,7 @@ or python run_test.py -i -PyFAI comes with 34 test-suites (223 tests in total) representing a coverage of 60%. +PyFAI comes with 40 test-suites (338 tests in total) representing a coverage of 60%. This ensures both non regression over time and ease the distribution under different platforms: pyFAI runs under Linux, MacOSX and Windows (in each case in 32 and 64 bits). Test may not pass on computer featuring less than 2GB of memory or 32 bit architectures. @@ -223,7 +220,7 @@ Continuous integration is made by a home-made scripts which checks out the lates You have to accept non-signed packages because they are automatically built. In addition some "cloud-based" tools are used to ensure a larger coverage of operating systems/environment. -They rely on a `"local wheelhouse" `_. +They rely on a `"local wheelhouse" `_. Those wheels are optimized for Travis-CI, AppVeyor and ReadTheDocs, using them is not recommended as your Python configuration may differ (and those libraries could even crash your system). @@ -232,9 +229,10 @@ Linux ..... -`Travis provides continuous integration on Linux `_, 64 bits computer with Python 2.7, 3.4 and 3.5. +`Travis provides continuous integration on Linux `_, +64 bits computer with Python 2.7, 3.4 and 3.5. -The builds cannot be retrieved with Travis-CO. +The builds cannot yet be retrieved with Travis-CI, but manylinux-wheels are on the radar. AppVeyor ........ diff --git a/doc/build/_sources/publications.txt b/doc/build/_sources/publications.txt index 5467362ef..31e57c9ab 100644 --- a/doc/build/_sources/publications.txt +++ b/doc/build/_sources/publications.txt @@ -1,5 +1,5 @@ :Author: Jérôme Kieffer -:Date: 31/05/2015 +:Date: 01/12/2016 :Keywords: List of publications @@ -23,6 +23,7 @@ List of publication about pyFAI **Journal of Applied Crystallography** (2015) 48 (2), 510-519 The later publication provides a nice overview of the features introduced in version -0.11 and further developed in v0.12 and should be the one cited in publication using pyFAI. -There are already 55 publication referring to pyFAI, some of them in the most prestigious -scientific journals (Nature, PNAS, ...). \ No newline at end of file +0.11 and further developed in v0.12 and v0.13 and should be the one cited in +publications using pyFAI (or one of the graphical application on top of it). +There are already 72 publication referring to pyFAI, some of them in the most +prestigious scientific journals (Nature, PNAS, ...). \ No newline at end of file diff --git a/doc/build/_sources/pyFAI.txt b/doc/build/_sources/pyFAI.txt index e71993ab5..803974f33 100644 --- a/doc/build/_sources/pyFAI.txt +++ b/doc/build/_sources/pyFAI.txt @@ -1,7 +1,8 @@ :Author: Jérôme Kieffer -:Date: 31/05/2016 +:Date: 01/12/2016 :Keywords: generic description of the software :Target: General audiance + General introduction to PyFAI ============================= @@ -101,21 +102,10 @@ PyFAI executables ................. PyFAI was designed to be used by scientists needing a simple and -effective tool for azimuthal integration. Two command line programs -*pyFAI-waxs* and *pyFAI-saxs* are provided with pyFAI for performing the -integration of one or more images on the command line. -The waxs version outputs result in -:math:`2\theta /I`, whereas the saxs version outputs result in -:math:`q/I(/\sigma)`. Options for these programs are parameter file -(*poni-file*) -describing the geometry and the mask file. They can also do some -pre-processing like dark-noise subtraction and flat-field correction -(solid-angle correction is done by default). - -A new Graphical interface based on Qt called *pyFAI-integrate* is now available, -offers all options possible for azimuthal integration (dark/flat/polarization, -....) in addition to a finer tuning for the computing device selection (CPU/GPU). - +effective tool for azimuthal integration. +There are a certain number of scripts which will help you in preprocessing images +(dark current, flat-field, averaging, ...), +calibrating the geometry, performing the integration. Finally couple of specialized tool called diff_tomo and diff_map are available to reduce a 2D/3D-mapping experiment of 2D images into a 3D volume (:math:`x, y, 2\theta` for mapping or :math:`rot, trans, 2\theta` for tomography) @@ -136,9 +126,9 @@ integrated before being plotted. :align: center :alt: image -The :ref:`tutorials` section makes heavy use of *ipython*, now *jupyter* -to process data using pyFAI. -The first tutorial also explains a bit how Python and Jupyter works to be +The :ref:`tutorials` section makes heavy use of *IPython notebooks*, now called +*Jupyter notebooks* to process data using *pyFAI*. +The first tutorial also explains a bit how *Python* and *Jupyter* works to be able to perform basic processing efficiently with pyFAI. diff --git a/doc/build/_sources/usage/cookbook/calibrate.txt b/doc/build/_sources/usage/cookbook/calibrate.txt index ffc4ba00d..eebca5a38 100644 --- a/doc/build/_sources/usage/cookbook/calibrate.txt +++ b/doc/build/_sources/usage/cookbook/calibrate.txt @@ -198,7 +198,8 @@ Here is the diffraction pattern from a properly calibrated setup: .. code-block:: python - from pyFAI.spline import Spline - s = Spline("F_K4320T_Cam43_30012013_distorsion.spline") - ud = s.flipud() - ud.write("flipud.spline") + from pyFAI.spline import Spline + s = Spline("F_K4320T_Cam43_30012013_distorsion.spline") + ud = s.flipud() + ud.write("flipud.spline") + diff --git a/doc/build/_sources/usage/cookbook/integration_with_scripts.txt b/doc/build/_sources/usage/cookbook/integration_with_scripts.txt index 849b75b94..657f9ee5f 100644 --- a/doc/build/_sources/usage/cookbook/integration_with_scripts.txt +++ b/doc/build/_sources/usage/cookbook/integration_with_scripts.txt @@ -5,4 +5,3 @@ Azimuthal integration using scripts =================================== - diff --git a/doc/build/_sources/usage/tutorial/CCD_Calibration/CCD_calibration.txt b/doc/build/_sources/usage/tutorial/CCD_Calibration/CCD_calibration.txt index 8930abb0f..fe459e958 100644 --- a/doc/build/_sources/usage/tutorial/CCD_Calibration/CCD_calibration.txt +++ b/doc/build/_sources/usage/tutorial/CCD_Calibration/CCD_calibration.txt @@ -6,7 +6,7 @@ This tutorial presents how to calibrate the distortion from a CCD camera coupled with a taper of optic fibers. If your camera is already calibrated using Fit2D and you have access to the corresponding *spline* file, this tutorial is not for you: simply create your detector object -like this **pyFAI.detectors.Detector(splineFile="example.spline")** and +like this ``pyFAI.detectors.Detector(splineFile="example.spline")`` and you are done. This tutorial uses the image of a regular grid on the detector. @@ -16,13 +16,17 @@ O.; Thompson, A. published in Nuclear Instruments and Methods in Physics Research Section A, Volume 346, Issue 1-2, p. 312-321. DOI:10.1016/0168-9002(94)90720-X -The procedure is performed in 4 steps: 1. peak picking 2. grid -assignment 3. distortion fitting 4. interpolation of the fitted data 5. -saving into a detector definition file +The procedure is performed in 4 steps: + +1. peak picking +2. grid assignment +3. distortion fitting +4. interpolation of the fitted data +5. saving into a detector definition file The picture used is the one of a regular metallic grid of holes (spaced by 5mm), just in front of the detector. We will assume holes are -circular what looks correct in first apploximation. Paralax error will +circular what looks correct in first approximation. Parallax error will be ignored in a first time. Peak picking @@ -30,7 +34,7 @@ Peak picking Lets start with peak picking, for this, we will use the *FabIO* library able to read the image and *matplotlib* to display the image. The -disortion is assumed to be minimal in the middle of the detector, so we +distortion is assumed to be minimal in the middle of the detector, so we first focus on one spot in the middle: .. code:: python @@ -38,8 +42,6 @@ first focus on one spot in the middle: #For final rendering switch from nbagg -> inline #%pylab nbagg %pylab inline - # - # search for the image containing the grid .. parsed-literal:: @@ -49,16 +51,13 @@ first focus on one spot in the middle: .. code:: python - ls + # search for the image containing the grid + !ls *.edf .. parsed-literal:: - 03jun102d.edf* ccd2_g3.edf* CCD_calibration.ipynb grilHiCap_04jund.edf* - ccd2_g1_chk.edf ccd2_g6_1.edf corrected.edf testdetector.h5 - ccd2_g2.edf* ccd2_g6_2.edf flm-4-1.edf* - ccd2_g2g.edf ccd2_g6_3.edf frelonID22_grid.edf - ccd2_g3_chk.edf* ccd2_g6_chk.edf grid.edf* + corrected.edf frelonID22_grid.edf .. code:: python @@ -71,15 +70,12 @@ first focus on one spot in the middle: .. parsed-literal:: + WARNING:fabioimage:PIL is not installed ... trying to do without + WARNING:tifimage:PIL is not installed ... trying to do without + WARNING:bruker100image:PIL is not installed ... trying to do without WARNING:xsdimage:lxml library is probably not part of your python installation: disabling xsdimage format -.. parsed-literal:: - - WARNING: Not using BLAS, PCA calculation will be slower - WARNING: Not using BLAS/ATLAS, PCA calculation will be slower - - .. code:: python imshow(img, interpolation="nearest", origin="lower") @@ -89,7 +85,7 @@ first focus on one spot in the middle: .. parsed-literal:: - + @@ -107,7 +103,7 @@ first focus on one spot in the middle: .. parsed-literal:: - + @@ -125,7 +121,7 @@ first focus on one spot in the middle: .. parsed-literal:: - [] + [] @@ -162,7 +158,7 @@ peak-position. .. parsed-literal:: - + @@ -181,8 +177,8 @@ peak-position. .. code:: python #Check that size is unchanged. - print(img.shape) - print(cnv.shape) + print(img.shape) + print(cnv.shape) .. parsed-literal:: @@ -201,7 +197,7 @@ peak-position. .. parsed-literal:: - + @@ -219,7 +215,7 @@ peak-position. .. parsed-literal:: - + @@ -238,7 +234,7 @@ peak-position. .. parsed-literal:: - [] + [] @@ -248,7 +244,7 @@ peak-position. After convolution with a pattern of the same shape as the hole, the peak center is located with a sub-pixel resolution. The peak has a full size -of 30 pix in 1 dimension. +of 30 pixels in 1 dimension. All peak positions will be extracted using the pyFAI inverse watershed algorithm. Once all regions are segmented, the ones too small are sieved @@ -279,20 +275,20 @@ is done on the log-scale of the intensity. iw.merge_singleton() all_regions = set(iw.regions.values()) regions = [i for i in all_regions if i.size>mini] - + print("Number of region segmented: %s"%len(all_regions)) print("Number of large enough regions : %s"%len(regions)) - .. parsed-literal:: WARNING:pyFAI.utils:Exception No module named 'fftw3': FFTw3 not available. Falling back on Scipy - WARNING:pyFAI.timeit:init_labels took 2.123s - WARNING:pyFAI.timeit:init_borders took 0.066s - WARNING:pyFAI.timeit:init_regions took 0.646s - WARNING:pyFAI.timeit:init_pass took 0.229s - WARNING:pyFAI.timeit:merge_singleton took 0.054s + WARNING:pyFAI.opencl:Unable to import pyOpenCl. Please install it from: http://pypi.python.org/pypi/pyopencl + WARNING:pyFAI.timeit:init_labels took 1.104s + WARNING:pyFAI.timeit:init_borders took 0.048s + WARNING:pyFAI.timeit:init_regions took 0.450s + WARNING:pyFAI.timeit:init_pass took 0.143s + WARNING:pyFAI.timeit:merge_singleton took 0.033s .. parsed-literal:: @@ -332,14 +328,16 @@ is done on the log-scale of the intensity. .. image:: output_18_1.png -There are clearly 3 groups of very different intensity, well segragated: +There are clearly 3 groups of very different intensity, well segregated: -- around 10^2.1 (~125), those are the peaks where no tapper brings - light -- around 10^3.4 (~2500), those are segmented region in the background -- above 10^3.9 (~8000), those are actual peaks, we are looking for. +- around :math:`10^{2.1}` (~125), those are the peaks where no tapper + brings light +- around :math:`10^{3.4}` (~2500), those are segmented region in the + background +- above :math:`10^{3.9}` (~8000), those are actual peaks, we are + looking for. -We retain all peaks >10^3.5 +We retain all peaks > :math:`10^{3.5}` .. code:: python @@ -367,7 +365,7 @@ We retain all peaks >10^3.5 .. parsed-literal:: Raw peak coordinate: - [(1187, 654), (35, 155), (1082, 1447), (1082, 1545), (39, 62), (1083, 1250), (1083, 1349), (1943, 1925), (1084, 1151), (1190, 455)] + [(1273, 2027), (1664, 1742), (1666, 1646), (1866, 1155), (1274, 1933), (1867, 466), (1867, 563), (1867, 1056), (203, 1131), (107, 1226)] @@ -402,7 +400,7 @@ Precise peak extraction is performed using a second order tailor expansion .. parsed-literal:: Refined peak coordinate: - [(1186.931446455419, 653.9433948583901), (34.4068917632103, 155.60163909196854), (1081.7659440785646, 1447.2154052853584), (1081.409073472023, 1545.5145089030266), (39.49280175566673, 62.08068184554577), (1083.1883269548416, 1249.924985870719), (1082.5653080940247, 1348.6598246097565), (1943.0012932673562, 1925.4793396294117), (1083.641106903553, 1150.8036927580833), (1189.607285887003, 455.1422745883465)] + [(1272.9463423714042, 2026.5502902269363), (1664.0545781441033, 1742.1054049506783), (1666.296777099371, 1645.9045108556747), (1866.365830898285, 1154.7454472184181), (1274.126026943326, 1932.9975793703925), (1866.5777518451214, 465.5264100730419), (1867.4438569247723, 563.2241970151663), (1867.3492084741592, 1056.0545778758824), (203.06922163814306, 1131.10803706944), (106.92814844101667, 1226.3799100518227)] @@ -413,7 +411,7 @@ At this stage, a visual inspection of the grid confirms all peaks have been properly segmented. If this is not the case, one can adapt: - the size of the kernel -- the threshold comming out of the histogramming +- the threshold coming out of the histogramming Pair-wise distribution function ------------------------------- @@ -423,7 +421,7 @@ this we calculate the distance\_matrix from any point to any other: .. code:: python - # Nota, pyFAI uses **C-coordinates** so they come out as (y,x) and not the usual (x,y). + # Nota, pyFAI uses **C-coordinates** so they come out as (y,x) and not the usual (x,y). # This notation helps us to remind the order yx = numpy.array(ref_peaks) @@ -446,7 +444,7 @@ neighbors .. parsed-literal:: - + @@ -462,11 +460,11 @@ This histogram provides us: - ... and so on. We now focus on the first neighbours which are all located between 70 -and 110 pixel appart. +and 110 pixels apart. .. code:: python - #We define here a data-type for each peak (called center) with 4 neighbours (called north, east, south and west). + #We define here a data-type for each peak (called center) with 4 neighbours (called north, east, south and west). point_type = np.dtype([('center_y', float), ('center_x', float), ('east_y', float), ('east_x', float), ('west_y', float), ('west_x', float), @@ -476,9 +474,8 @@ and 110 pixel appart. neig = np.logical_and(dist>70.0, dist<110.0) valid = (neig.sum(axis=-1)==4).sum() print("There are %i control point with exactly 4 first neigbours"%valid) - point = numpy.zeros(valid, point_type) # This initializes an empty structure to be populated - + point = numpy.zeros(valid, point_type) .. parsed-literal:: @@ -488,7 +485,7 @@ and 110 pixel appart. .. code:: python - #Populate the structure: we use a loop as it loops only over 400 points + #Populate the structure: we use a loop as it loops only over 400 points h=-1 for i, center in enumerate(peaks_ref): if neig[i].sum()!=4: continue @@ -506,7 +503,6 @@ and 110 pixel appart. elif j==(1,0): point[h]["north_y"],point[h]["north_x"] = y, x elif j==(-1,0):point[h]["south_y"],point[h]["south_x"] = y, x - We will need to define an *origin* but taking it on the border of the image is looking for trouble as this is where distortions are likely to be the most important. The center of the detector is an option but we @@ -523,7 +519,7 @@ prefer to take the peak the nearest to the centroid of all other peaks. Cx, Cy = 734, 1181 #beam center #Cx, Cy = tuple(i//2 for i in cnv.shape) #detector center print("The guessed center is at (%s, %s)"%(Cx, Cy)) - + #Get the nearest point from centroid: d2 = ((point["center_x"]-Cx)**2+(point["center_y"]-Cy)**2) best = d2.argmin() @@ -531,7 +527,7 @@ prefer to take the peak the nearest to the centroid of all other peaks. Ox, Oy = Op["center_x"], Op["center_y"] print("The center is at (%s, %s)"%(Ox, Oy)) - #Calculate the average vector along the 4 main axes + #Calculate the average vector along the 4 main axes Xx = (point[:]["east_x"] - point[:]["center_x"]).mean() Xy = (point[:]["east_y"] - point[:]["center_y"]).mean() Yx = (point[:]["north_x"] - point[:]["center_x"]).mean() @@ -541,7 +537,6 @@ prefer to take the peak the nearest to the centroid of all other peaks. print("The Y vector is is at (%s, %s)"%(Yx, Yy)) - .. parsed-literal:: The guessed center is at (734, 1181) @@ -557,7 +552,6 @@ prefer to take the peak the nearest to the centroid of all other peaks. print("The XY angle is %s deg"%rad2deg(arctan2(Yy, Yx)-arctan2(Xy, Xx))) - .. parsed-literal:: X has an angle of -0.462002756355 deg @@ -580,8 +574,8 @@ prefer to take the peak the nearest to the centroid of all other peaks. Xmax = IJ[:,0].max() Ymin = IJ[:,1].min() Ymax = IJ[:,1].max() - print("Xmin/max",Xmin, Xmax) - print("Ymin/max",Ymin,Ymax) + print("Xmin/max", Xmin, Xmax) + print("Ymin/max", Ymin, Ymax) print("Maximum error versus integrer: %s * pitch size (5mm)"%(abs(IJ-IJ.round()).max())) @@ -611,7 +605,7 @@ optimization later on. .. parsed-literal:: - + @@ -624,9 +618,9 @@ Estimation of the pixel size: The pixel size is obtained from the pitch of the grid, in vectorial: -pitch^2 = (Px\*Xx)^2 + (Py Xy)^2 +.. math:: pitch^2 = (Px \cdot Xx)^2 + (Py \cdot Xy)^2 -pitch^2 = (Px\*Yx)^2 + (Py Yy)^2 +.. math:: pitch^2 = (Px \cdot Yx)^2 + (Py \cdot Yy)^2 .. code:: python @@ -671,7 +665,6 @@ the peaks on the border with less than 4 neighbours. "Translate pixel -> hole" T = numpy.atleast_2d(P[:2]) R = P[2:].reshape((2,2)) - #Transformation matrix from pixel to holes: hole = dot(numpy.linalg.inv(R), (pixels - T).T).T return hole @@ -680,7 +673,7 @@ the peaks on the border with less than 4 neighbours. "Translate hole -> pixel" T = numpy.atleast_2d(P[:2]) R = P[2:].reshape((2,2)) - #Transformation from index points (holes) to pixel coordinates: + #Transformation from index points (holes) to pixel coordinates: pix = dot(R,holes.T).T + T return pix @@ -703,37 +696,36 @@ the peaks on the border with less than 4 neighbours. print("Maximum final error versus integrer: %s * pitch size (5mm)"%(abs(holes-holes.round()).max())) - .. parsed-literal:: Total inital error 2.5995763607 [753.70350015163422, 1186.1879850327969, 97.719730182623479, 1.3821857949656571, -0.78797711765336542, 97.082699075794565] Maximum initial error versus integrer: 0.199838456433 * pitch size (5mm) - jac: array([ -1.49011612e-07, -2.08616257e-07, -2.68220901e-07, - 1.19209290e-07, 1.19209290e-07, 3.87430191e-07]) + fun: 2.123772842169884 + hess_inv: array([[ 1.41698853e+01, 5.02981780e-01, -8.67450996e-01, + 5.65400698e-01, -2.23588556e-02, 3.62469793e-02], + [ 5.02981780e-01, 1.44432486e+01, -6.17043562e-03, + 3.18737250e-02, -8.80159842e-01, 5.53478243e-01], + [ -8.67450996e-01, -6.17043562e-03, 2.99705132e-01, + -4.12312169e-03, 2.39113093e-03, -1.79968692e-03], + [ 5.65400698e-01, 3.18737250e-02, -4.12312169e-03, + 3.01702833e-01, -1.78715958e-03, 3.83867286e-03], + [ -2.23588556e-02, -8.80159842e-01, 2.39113093e-03, + -1.78715958e-03, 2.97818929e-01, -3.46536500e-03], + [ 3.62469793e-02, 5.53478243e-01, -1.79968692e-03, + 3.83867286e-03, -3.46536500e-03, 2.93190623e-01]]) + jac: array([ -2.98023224e-08, 5.66244125e-07, 1.19209290e-07, + 3.57627869e-07, 8.34465027e-07, 1.10268593e-06]) + message: 'Optimization terminated successfully.' nfev: 160 nit: 15 - message: 'Optimization terminated successfully.' - status: 0 njev: 20 + status: 0 success: True - x: array([ 7.53021133e+02, 1.18519692e+03, 9.81143527e+01, - 1.47509463e+00, -8.04478515e-01, 9.73166896e+01]) - fun: 2.1237728421683415 - hess_inv: array([[ 1.42100651e+01, 5.92064797e-01, -8.65311650e-01, - 5.71616778e-01, -2.93157223e-02, 3.36330120e-02], - [ 5.92064797e-01, 1.42890834e+01, -3.28993124e-02, - 1.71968068e-02, -8.57363816e-01, 5.83878215e-01], - [ -8.65311650e-01, -3.28993124e-02, 2.99126185e-01, - -4.37220702e-03, 4.01788293e-03, -2.74807907e-03], - [ 5.71616778e-01, 1.71968068e-02, -4.37220702e-03, - 3.02142044e-01, -1.06852612e-03, 2.67366996e-03], - [ -2.93157223e-02, -8.57363816e-01, 4.01788293e-03, - -1.06852612e-03, 2.95805859e-01, -4.27421580e-03], - [ 3.36330120e-02, 5.83878215e-01, -2.74807907e-03, - 2.67366996e-03, -4.27421580e-03, 2.97301584e-01]]) - total Final error 2.12377284217 [ 7.53021133e+02 1.18519692e+03 9.81143527e+01 1.47509463e+00 - -8.04478515e-01 9.73166896e+01] - Maximum final error versus integrer: 0.234645010209 * pitch size (5mm) + x: array([ 7.53021133e+02, 1.18519693e+03, 9.81143528e+01, + 1.47509462e+00, -8.04478941e-01, 9.73166902e+01]) + total Final error 2.12377284217 [ 7.53021133e+02 1.18519693e+03 9.81143528e+01 1.47509462e+00 + -8.04478941e-01 9.73166902e+01] + Maximum final error versus integrer: 0.234645015537 * pitch size (5mm) .. code:: python @@ -750,10 +742,9 @@ the peaks on the border with less than 4 neighbours. - .. parsed-literal:: - + @@ -777,7 +768,7 @@ the peaks on the border with less than 4 neighbours. Few comments: -- The maximum error grow during optimization without explainations +- The maximum error grow during optimization without explanations - The outer part of the detector is the most distorted Interpolation of the fitted data @@ -815,7 +806,7 @@ needed as y,x (and not x,y) we use p instead of peaks\_m .. parsed-literal:: - + @@ -828,7 +819,7 @@ needed as y,x (and not x,y) we use p instead of peaks\_m #From http://stackoverflow.com/questions/3662361/fill-in-missing-values-with-nearest-neighbour-in-python-numpy-masked-arrays def fill(data, invalid=None): """ - Replace the value of invalid 'data' cells (indicated by 'invalid') + Replace the value of invalid 'data' cells (indicated by 'invalid') by the value of the nearest valid data cell Input: @@ -837,17 +828,16 @@ needed as y,x (and not x,y) we use p instead of peaks\_m value should be replaced. If None (default), use: invalid = np.isnan(data) - Output: - Return a filled array. + Output: + Return a filled array. """ - if invalid is None: + if invalid is None: invalid = numpy.isnan(data) ind = ndimage.distance_transform_edt(invalid, return_distances=False, return_indices=True) return data[tuple(ind)] - .. code:: python figure(figsize=(12,5)) @@ -863,10 +853,9 @@ needed as y,x (and not x,y) we use p instead of peaks\_m - .. parsed-literal:: - + @@ -887,10 +876,9 @@ Saving the distortion correction arrays to a detector detector.max_shape = detector.shape = img.shape detector.set_dx(fill(delta_x)) detector.set_dy(fill(delta_y)) - detector.mask = numpy.isnan(delta_x).astype(numpy.int8) + detector.mask = numpy.isnan(delta_x).astype(numpy.int8)[:img.shape[0], :img.shape[1]] detector.save("testdetector.h5") - Validation of the distortion correction --------------------------------------- @@ -909,24 +897,18 @@ Validation of the distortion correction fabio.edfimage.EdfImage(data=cor).save("corrected.edf") -.. parsed-literal:: - - WARNING:pyFAI.timeit:calc_pos took 0.747s - WARNING:pyFAI.timeit:calc_size took 0.944s - WARNING:pyFAI.timeit:calc_LUT took 2.907s - - -.. image:: output_54_1.png +.. image:: output_54_0.png Conclusion ========== -This procedure describes how to measure the detector -distortion and how to create a detector description file directly -useable in pyFAI. Only the region inside the convex hull of the grid -data-points is valid and the region of the detector which is not -calibrated has been masked out to preven accidental use of it. + +This procedure describes how to measure the detector distortion and how +to create a detector description file directly usable in pyFAI. Only the +region inside the convex hull of the grid data-points is valid and the +region of the detector which is not calibrated has been masked out to +prevent accidental use of it. The distortion corrected image can now be used to check how "good" the calibration actually is. This file can be injected in the third cell, @@ -934,4 +916,3 @@ and follow the same procedure (left as exercise). This gives a maximum mis-placement of 0.003, the average error is then of 0.0006 and correction-map exhibit a displacement of pixels in the range +/- 0.2 pixels which is acceptable and validates the whole procedure. - diff --git a/doc/build/_sources/usage/tutorial/Introduction/introduction.txt b/doc/build/_sources/usage/tutorial/Introduction/introduction.txt index 881fec981..1ab862463 100644 --- a/doc/build/_sources/usage/tutorial/Introduction/introduction.txt +++ b/doc/build/_sources/usage/tutorial/Introduction/introduction.txt @@ -34,8 +34,8 @@ Outside ESRF with an ESRF account. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The JupyterHub server is not directly available on the internet, but you -can -``login into the firewall``\ \_ +can `login into the +firewall `__ to forward the web server: ssh -XC -p5022 -L8000:scisoft13:8000 user@firewall.esrf.fr @@ -367,7 +367,7 @@ command from UNIX to print the content of the file. This "moke.dat" file contains in addition to the 2th/I value, a header commented with "#" with the geometry used to perform the calculation. -**Nota: ** The *ai* object has initialized the geometry on the first +**Nota:** The *ai* object has initialized the geometry on the first call and re-uses it on subsequent calls. This is why it is important to re-use the geometry in performance critical applications. diff --git a/doc/build/_sources/usage/tutorial/MakeCalibrant/make_calibrant.txt b/doc/build/_sources/usage/tutorial/MakeCalibrant/make_calibrant.txt index fa2803798..76a317c5a 100644 --- a/doc/build/_sources/usage/tutorial/MakeCalibrant/make_calibrant.txt +++ b/doc/build/_sources/usage/tutorial/MakeCalibrant/make_calibrant.txt @@ -89,9 +89,10 @@ triclinic crystal. Specific constructors ~~~~~~~~~~~~~~~~~~~~~ -| Nevertheless, most used calibrants are of much higher symmetry, like +Nevertheless, most used calibrants are of much higher symmetry, like cubic which takes only **one** parameter. -| Here is an example for defining + +Here is an example for defining `Polonium `__ which is a simple cubic cell (Primitive) with a cell parameter of 335.9pm. This example was chosen as Polonium is apparently the only element with diff --git a/doc/build/_sources/usage/tutorial/MultiGeometry/index.txt b/doc/build/_sources/usage/tutorial/MultiGeometry/index.txt index acedcc7b1..12c8ac92c 100644 --- a/doc/build/_sources/usage/tutorial/MultiGeometry/index.txt +++ b/doc/build/_sources/usage/tutorial/MultiGeometry/index.txt @@ -153,6 +153,7 @@ use the *copy* function of the *copy* module: .. code:: python import copy + We will now offset the *poni1* value of each AzimuthalIntegratoe which correspond to a vertical translation. Each subsequent image is offsetted by half a detector width (stored as *poni1*). diff --git a/doc/build/_sources/usage/tutorial/index.txt b/doc/build/_sources/usage/tutorial/index.txt index 89d6885fd..d2b2fd817 100644 --- a/doc/build/_sources/usage/tutorial/index.txt +++ b/doc/build/_sources/usage/tutorial/index.txt @@ -19,6 +19,7 @@ a good Python fluency and to a certain extent, of the pyFAI library. :maxdepth: 1 Introduction/introduction + Geometry/geometry Distortion/Distortion Calibrant/index multi-geometry diff --git a/doc/build/api/modules.html b/doc/build/api/modules.html index a5b788c50..6b00c4416 100644 --- a/doc/build/api/modules.html +++ b/doc/build/api/modules.html @@ -6,7 +6,7 @@ - pyFAI API — pyFAI 0.12.0 documentation + pyFAI API — pyFAI 0.13.0 documentation @@ -14,7 +14,7 @@ - + @@ -44,7 +44,7 @@

    Navigation

  1. previous |
  2. -
  3. pyFAI 0.12.0 documentation »
  4. +
  5. pyFAI 0.13.0 documentation »
  6. 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 literal 6172 zcmZ`-2{@Ep|9%EpiiRZ1Fk&>Sw~`rK*-DxrB9&D3ZLAYnN4D{%qO7CEU@W5uA%tX` z5UDZtZ7f54vX3FM`%mxp)%W$i-~YL;^PKB>p6mLZ^PJy(?sMP2$V*0Of!z|j0RRxt z*VDbs?zh=(gO{6qzhHjk3%ld;*3rMp%f5nm9U|Dze4ctYya8a(z8?+LF%+^10HQVe zx@WKAQszi*QI`Mkz0VMJ=6iNO>C%A6iA&bxH?DFC`xfh!ZhvYy>vHxD`S=qK{rzXJ z%EuoRFnaOn8#z4PhVR7-ZM@w51Exnr6y>-E!gcoSEAJDAoZNrzpz;S!4hbD+*yX}) zwZKoTlv2#f=?#Q^&G&eememr8S^V9q%r2WwR*Ey@9tYRO@kY%^HLbN zG#5l#1&rLcgg&MzBU%eF+M)IC z=i2`@GwSrJ9Qe>0&^#w6eQ538r<&ApC}AKsO?k-JjJKV;IE%iWxT{wOrqMhNWEz4FE{D}q ztq!eW0eND-=DFH;2PjyUdimaJtA`avN{1WF6NZ4)+-|RHP4WT!cvb2wS`J*F{;=LU z&cYoNn1}hwfs>neEUN?SL`)oO+9tjz4?jLL$O;vwpa=~kneU@9E0zS+I14@-X}l9) zvESdsEI9hHzOl$HSo_(>w#vdrDLL1Ky6*V9hOl$&7qxpvjF6RtaYsN4Y(rug3^D(3s`D%23z1g?wdeIkm zf~IfW>hzZ0j$t%mW9F=Cr!I7HPn*={(bK4pKW65$3;&4danA_t8LRRGCN< zbw%P|K5hP#A|nikmbS>LG-E_>(R=eUKQgWA55J4We&NmYF>CMw| zuI8DmaPtVx2lNXjb|=|mYn zDqYem;89}4YH8yafDJ%{bA-&2*Es(ihe5pJHds$H>8#W1-XWQE63$fb zv}x9Cy*`J=KI4g0gL+Q$*D|po=8~d)LyqXtK5SS0=kO0@VdWI+37zLvPIXb4%Z^u9 zRQ&cNrPZF!-3|u!`i1zS$J*}+djI*qNO-EWT8@+WjSeMB0sLiZ*+o;S+KU5F|LvD^ z{IyfiLxEaD z*V&g?jDJRS7vsN9;UAkZF14Zho$bT;Govq3qQmnJ^7od62E-36mXvRGJ9j?V8N^n8 zITrdx#HvF;-dzmvd}zOiBVBtIfq4q&Uq_%9*9%n6+ z1GcRqNSV6S>(JlX_1`*7vzu0VXXQSUz{ia4x`=+S?eHcQ3XFU)={#cHf7+F6;ruJ_ zxjd_36}vHmZO?&goAije>I85F_It3}#|hT!@?@c$b*lx>ER6~tp;a} zLa>6nhC$Z0m7i#ai=8lYYv!uDF)s`LOBF?3QD=5O2?jMEmrFZXabuTqxSD68=^(5^ zjPhla9stm|7fb*JV*e941rC6Axvap>*JIaXL14?AhqaBKeQD3Z-z=gqAGL|}6 zA2g8zZW!V2nOL7bFA0C#{AfLXDo zZQP9;GW_TS*AIL4hI2ur<0V)@zoF=?xi*o<^R0cLrt{1pr#_K4(K^mZ+qX~?JvYem z0OE!-(iMm5ZpBn%b63!Os&rocm5GUENZ$HI_5>&{CDqoviaVFaQ~#wTf2s1RBh_Wu zU6?OS%@0Ud$cOB}xy=2osdZ90Rk3Vsw}9|*=s3w)fn#OuUNj8uJ)~}hp%J?nL|+F# zfP6~#t3rZLX2rnt-_-$|?5Foi@u^!4xX-B+2E&gnRZyUOS|$RuSq|s5V-4T>z{6Ew zWsY^&Of9lodbF-2ksdIt_^?$LEuOh=`Q9Sf`GasQhN4HFn=fK$fm^J5!LJL)ITNy6^XhBt_3)VJi z(`erI6UKIzv_1S9y@HT|wMTB7;rkydSdZ zm5@jhw2L7w#~3fdfjm&v-ElDJ70<$1!XKbn&INw_Bh37ZoZUpe_fa~cNbiO9h^`I2 z8?=|R!y4qc)(Dm94*|NLydbuX#4_S3C)fV-K2Q3dvu#ABg_f`DR}wR^_Nl~qUd6)y z2__-*kge=LR5CrwRZAkSakFkN6amu)VOB?$dw4L zN<;EPsv{|A&gKk8jzkF>X+2k&lpU zdg)vQ=cC(hU-LOVvx%1aiwGdC&>fVT9-m{}t7MPWg~+@i-t-e9GI!9prO69zQFN!e zXC<;$SK1XIIy3F4w?1XecUbSyj+m-G+H}j5&#=aAn2I8 z#|52;0v9)F24;J?C!^N@bj;1=x=cf|#;%d6o5!1cH`$t$>Rx;_d%2F8&oT8}bb6bH09UV|wRjGq@IVV{nV z!Ij${()ezSN_9hzl7{V}rQqeP(WEo;>eOM4VzMDhaq4>FwXU ztIPTgTGdnIf$981$;k&h(U4xJ2{A`nsc|PdxUB7gAlWJDbUvu>!lDcz&DmZ@Ct}`Z z{blVZYO4I2f!HRf&(yS+)HspR`x!Xqq4rA9?(vXVS8Fl}72|@iPu+aiB#bI#J%V+0(dS-LdmqcV-@4U7;47N0DgZXPks{a1MU@ zdHm4y<0IHG8scsdd*$K^7%#b&ITL*BtCKW3j}fnzsKScm%OZ>1(SQVMgf zKNZ5z1!pxz75@kcSaOCLxMg8%Aht!=IH3Y|+J&%PveYVl>SxL5mt^@# z81JT11}B5E3W~IZ3he0bAhDgP(5%4oOG zznhUbRE)8gKy#D+wtDktdeUP-vU%fy?|M+K5f30`_lPz~L)R;TsA*OBz%bDsCFy#u z@LM?X#J%T+$KN;)5vde$TjeXY$Gx|UZL^85sKh1FNYB(uZ0mSuO@Pdj1u1!JBtMG0 zIKL{-iR+-IDwn7Nn=pI{vhl9fZEFS79#4!Aw z6`Gy&Lej?l2w=aqon<+B{duwC;|DA5jSI`ECTQf2v3h>Gst>HEaaE7TGv)jVn?8oKgpEv@r1cbKDmj@<#0bIG>mXb`Wf1((5KE!3_J8nM1bmXDX3PY4{LAE7T!PS{`0;q)7WV>i z+DIe#VtzrpcwvHaQoj~bUFdFhB15)9LaG2u$1&yCK;JyKF=TL)arjEvU81J-)`l$J z{N(D}cI5;)Q4rAl0kE3%I*ANy&jrT-1-ll8RW{@Uc)5*mnM7FmBv@rHcWS1=xGYH98vhN0I zgc$qId8W_z{Lb%t&bh90o!|NA%yo55=KX%|XSvtcecw;)RZ{~ddR}@61j1xw2sej7 z$b}#fGG|(9@JskrYg6z=iM(iZofdpTXq{ug-*n!F)<_5h>PY%W_CY(}6#_X8F@oz} zf0*%SG9dN(;8FY9PReaxu2a@d)j4 zMv>i`?HR}z@PQd;mNT4UVM$tkOFSbiENt}tzxZYOp6H0cT&RTNidAa6WGk~`+Sg1k7sL*Flvno)wSG#zc7?Os)ra-DD6Tawkyyca+R+T zO3gU-JUAR~ZfhB4EkhASW)~iUH^EcMt5afeQDjySE{e%;6Rfkm`zfT*y9hEYkB(Ok z6YHwW1)X5V9D?_!*@rgH#BJbZc?E$mwZSWo?&!=tCZtr3@Qa z#8CuScxVRF{gF}%CQn!6-H+#;~MdTlNWh@IoarJPNBI?@m)iJrz^q)9pct zAk&Q0GnfmOyfZFE{kpB{H(7Babs}~toZ@qPmGvnm!H5nWX>S+5>=%F~1C2qJM`ZHq zjHz@A*w87+RjCK=A%pE-7UuE;60&N zFZ~H7I|`SHIDc2$n1zKUwx3qzRO)hujm-=7!Uww$PO{9k21X1dORjRx%^c3UMUll= zPYbxOphT;!Tsc_kP9FsxPU?yL+toSn;eJi+t00g%`dTd>5`>O5o-2=Se;tq$!_xyC3(_ zd*))d`l<#kDrE@n7o;^iNVcd(c%3?W`H(~6B;v$Gl4IxaUfRO?(_8%9^>!dy1EA4(Yl*K z2*HLto`SZ1&O&xA-0}@P$06kp%{4ojh6oI$$t8*~g~}dc#{#E=sw~SP<#l;Jh6z{1 zQp9R_eZ=qXx>4P9eS{Lv!(N;;6)$85qTgNTQr5;E^6jBU?U#UT{Kpl)ZjZ9{Fe-4k zMrnoHAywppttS;SZ9CqZ$ZmZ|22uo9OouXghQN;Ngb^lcQV+Q4mnp^YWiJCcYBg4T zx~W!L?dQ!|s~RMN`c$p%AjB!45P9NKtOohS^;UuiNd<4bC(dLXSc;BKFizNZ@0DO* zHI)=A@r7?lJj}R@?cf+By;Y#!nPhxRQc8-kp3>-aLl)Ygtl;IP8NI$Vtr5BS+da5< z!`Cmr`!6cBK)t~rbl-b!&a2em73_u*Z1ItQbz+2 zN=>+1t<|oc2(vWnkLVKR%4l4%t8MxbZuzeKxHCes>;7Z(xvN0ybIS{l->y(iQ25fI z=m%)>QmyA|{mUSMI!pK)+yN*BS%?b70#g-PR;;_c-~#0))7Un38{CZgj1%is=mHrd zwKOEkYE6}7KUfEgE;|t>j6P1Mk5XYj>1Yv6aRnvab%XCGqtWvaE^=U;rs$tBk#VM3 zD-$N}%P&!GQmkhpHzJj+$Ys(;{krR3HSImangQb!PKEFn@vcWtE@zBidqoff64P<5 z|4bYroMNa|V3m!rQ%bJ#psQFPR~Hhp5GWFaRsF<$lYWztc?&XR5NUwl!hig0niCWTH;h$j6|T?j5Gq2m53*HMuWIa1_MDlyZYw7 z_l{N~$%2In%d7+x{#4HC?HuIF?^G{sxk@T5K}YDcd1SkB>Knc2p)xzeTBiz~j42TV&NjCypKW(kr^baZ+q3 zAt@p8_QMC4Pfo3^t#tJ#Zcm`{^;{}+3-cKVd0%R}>qHSX)C=KIA;}18#A~+UgCwpD zkzL-fEn~YJecSX>A7}~}vh>QkO9^j{Q>5n=S(0EQHB6`@_lL_DYX2zJZknqc@7iI$ zLe)OZ9?*7L+3%@stm6l*94FNl1{wCZA`L0i6dCF-CM`<-fvyK`{7TBs&VGJSwq9<0 zO2f3(Y_quh#Sh#Vc`(_J=W<*l5tum9v0n}jVGamy7qMO(?pa)2QDZn+<()BpPsDkr zu?$*vijOTi!pV=~;zMQHEzFu;m^H7WXzJ=@1Ldmj(`g?SoKR)Q-6&b#Qgne>S5gCq*FhRWLn&71(q*J?l_$pUY;EH948bmsj z+*w_(_M3Q9`6VaB9#+NSGt$$)7jdokSXX|@4MDYQ91{OX(hib`*K3 zy9H1xSJEgq2rWGKcC!Rn_TB(ndr19_ERS6Bj^{lpLIAk|ge{^K8;K3pS*_KPWq(MQ zdJ1WO@2loe9ai|zQd)+rKiv2&5Ij+AN0U=GM36#|%(HM7$(jU9(-sQaBx1hY!-da1 zJ8(=_^1yEmJ8mFU*5EhmmG=BzBl^X-WwFuu=PYtU4}@xd|DX^veXKnFc%wTqQ~iZ~ zzG0y}!FEIumVovn`_-MPZiUo>UnG8)^d7SICN>fKjC(&nTI%CG|7faVCY%DFpnO_f zTosTVSK?MVH5J%C+}9Ai_a{4;8MVexOT4&C(4Gk!K8VdNNL3Zu>#hq_tdlvfFD-1e zhL1!^!?U%BLpB^VP@+}R6*PG^ig!gLE>k^J<`Qf+SW$vr5Tbpe`jn3bs!2I)zgo7) z!eTa~2X}jg^loADUTgL45N$NbaqW)_lV1EL5}MdCQHK(29V)4|a(B(x@Y6n!I$W~v z{p8iE&8GNJcEXSA@M!heO^{{Ht)e?R#;~r&bE}1UuD#`3lJ}qLK|a*NX#b81BR3?H zdQZ}MQFNxiQ+3+?g1?l;{@D!wTZ5}}pDZz2nJ&tc7~?l-86#4 z1`g%vMxYQovG#0IwNK*cV>;N80;JCnoF)uP63s~_R!NzKtQ*T-L<7ut6ltfoTx%Nkhn)cg+1JHyFP90LUwk~>IA zt9|^Ba_aLZyvJzlVNOg?Ou`*`Al9*z3$B^2tIqvu|D&(+-UvtF z*3v;ME@*2Vsf_57z#Q#w^_FE%7i@10hxQoURP$R;nL-_YwAc6Rd`)y?F`@=cDX3Z) zW7j_Z2o)4idu;b(g;!}axZQV!@#vr>?ARix-XuLlrel4+arlj0{m&umw8M~xYx=2L zlh8ANMp*pyg{uvKluFDu>>NJ7G~L*kpL4gfTvEcWKaaTHsdY8On>=K_V}Rx&9=jd7^cI+hGTjn`tv8@I~8Q+k1cvmFc=2 zyeDbYxc^;fx{j?|y{C+D!AID4iPJOlJ&!CzFc>Ez61FvnLaHZSA;o|5w;INvjtXAP zGGCtWH;K5dHiSY=j`kZrAzJCfj8>36dv#~pg@pW{+?ABtjIWtQCQjR2g7v$2aj~51 z&oe<~zfRyg;!nIT;C9Y9T}dl^b8$Y}O6h*MfzX!Z$Gp$R(rYj7gq;LqR=$-xR%7DJ z3@aAG?y{U4d?tWm`;@4)zGPqJCFHL^*k76nJza8Z&(6C?TYEW9Vl@D>(b;}713fN$ z8&`^FG2#M>xlYl&_rA|Qu(gagEgOtd?Efetb$dCW&_p?GkKs!CFY)i&3uJmxyNbH- zJ~R-ULu|>X=F|%)WcBe;OX;Pctw(jpBaP==x5FcuAE~c|dyF@iUdat&*Md7MCu-4$ z9lo2s;Q#G;c~R1b&wew?m8pYM zw@5+GKrikLkD+BY1oqpt9@maPi!EQ?UY* z89i8Mi5&w7S`=JoQ$)>vy0H4GnW~B|yX7j)&o_;HM7eIaCA={c(iV3fttgj#aUUpU z^4+$?9ji+d-jUN^u2kp^m&!Ut*~6t-*Q}I|=4Hz78jrj(QUXS#L)fd4j>{Hr_3g|2 zYrr4pB8zs+c6P|@P92Zd#Oijv%Qf(3%{A~Q>&afC(7|ed`|9Xh{jU{Prp!;d$rw17 zdE@qoE#*bY_dzZrnd`IBocqbZy;q>*YpBH&Sr71<{h!fpDo3}`XADMgl2B|rWm zo}VybqnmyPdr^MrS4O%AA~PJN(}?s$_5Qkyzbjwgt@=q$WtwF-7U{`Uj>UOWdMa0@ zXClWmZdI7VW-;5p+1z-Nbr%OC+l6*?oqJD@)O6YFi<+}39*uwC!H4@n5JSu^Oov|2 zs*s){vJ4A6{A#>HLH|?Mr^(4L(Y5k4t>Cp65w`eVUM-oVD)!jj2DMw&g|#JycLz%t z=GvOdP*lLq&F|^Ey}hg{^bv<6wurB)5VV+?Kef?3w)E+;q9Q=n!##A*o+~nO4@vxf zqC)Ub8~t3X^j_0+bArY)=%O%>!{YU@*j&T6g9Q{$ZM$`+x$KvNb)+#G%Y`sIOZ5=Q z4n;KNmaYzrO3H>hJ8WfV;Zy+=!h2^@E8N!SiM{SlntOBU<-Tjx&C%#dh78J0kc(nN zx`{gMP9==oj@58LT}l5BgcM&Bi`joK-78#bGF;oYey97D>q76FpTB;s_!pO#KW}bs zUPoPlz1JrMZ>|V<3M7x>9DW)K>6A8b*4$sSx@m+s2T<8r&nO@8X3 zUL?BuDSF38_$nhjI^wdT+rZh+zQ4@}^QDvfgjrN(XgbWq8QD`K&WImbQFjOvukq9GBDB*+?_pE0 z=dlkQgm>vaAe1<3`*A}Q(_{e@{h7$hNTqn(eK}$d+KyfUYd>qlZu^^DmP$xY5GuVo zDgLlHI1@Quv^%W}`=c+6VpC0Wu3Nhl#(`T!5uzPD8!XA-68VLiLYOAAvzfdBA+$v9 zaHQvBv|>|P#}CGbd<&}?-!;_;=$fL7>rEhtb4IO_|uJx z#fZfszxkSh?#3@iE8)?_ip~(o-d5QW|MLq@>^iykfsu0UR-NAP8L}olUwIpUcnU|w zwF{B+%&^b70?PtsIPKsNd9%@WLldTWxSmok(|SDObQOadu{0_KHs1)D6tg`)gQ-C$1`Gsq`+HE{TgCdUE8-FMTs zF*?c?#=*gk-Tdunb*2Cy30T7U+l-P{5+R0e5@*AEv?49nY{D-O0sC#_WRbsLME6Wn z3CxB1aC*ewx9zF-((?fjO(nMpvn-5pY>$Ziedb{^5*EhP@C|w{BqsM9A*6>i%`4Zb zXi_E)W)gaMA>^Q>IXbuI5qYXQmy#EAJ*$x@=`bW%*W#7++XwZ{uj!KApJqn>dTbY) z%L*K;0!OUQ&Ps2t(a5Wqmw$*Yjy;-+o5J;^b?J$UqSnNi>I@5uY`B6pukJpdB+dH< zs{OdyokI(z$FFIN)i7tXXhA%X``(Z;X!~(n zLQ5$;_s(SfK^GLvagDSv1i`dx=lNy@A*;8pvN@Vm6-Y*C?Lw69gXuQkwzk1ulXw*i z&$%Wt{px(OG(A1O-|VRQq43|)i`P$dr^+3{+OKCRp=g@!Ql zcEKesZZ;!jDynjibR{%EP)SuEL)E_=)%*%J+*dpF9&v&)HN=4Bjit)dC;?#deABWF zEQ1XIVwlO5%tfm>Tn`k`UIerOfPZC}N+J!1kv9bGVFdO2EOjHMldRKmca=$t0kf1jkVxpj$m{C72d)9(Hb>sNf8}4l zH3aKTe*XI#6&0~VygbMc%y|<$G@p2V{&*1rSef@P%Cm^BMwpSQl*kNmuHOb`GH2&+kL2;86%DgEVb&GoU=m3eX1-WLD#U?U|i3c2{%| zsJUE{61wxY<*}iBmlv^FxHTdTy>wX7v?9vfNy?pe*Lg+S_-sD@ zn?TjeM0%+beo^R!lglr0R{aL~Q|SlYT|V7ikW$L-3zb7nc3Tu`BU zt}E%!jK_d+k%6lDGXmKeOL{>OEmTTON^oNC7K6j~w0l)S0drnajFx4oa? z-46$4{31AgJU+K++TO<1$tCbA#*ykUTOcXYHBiu-$8@;cPLlij?P;Oy$zf>2*^u04 zeaEM>mAwS__V(!NPHthO2LEO_rzxXTcH1z1T3ju>%+D(2p zuB5kg72my*&K7Y8KS!y}l$09>4=IZVDxW9c|0VJM^-Mplv^48`^6GLb16sQ%41R)E ze#sL-lWJ{`55%(_I$wP>_3R@y6EW0|TaWO;`VuCVbGqK<97Q6A266NtMinO5R#`dG zYdLFpA`DWkweg(z+k}a2x8t2tbap-$K*~})J26&Za`1N-ISzNI69j)K2y24b~V-=^#-~j`?L!jEvCVEwa5$o=27f2VA@y{vxtH zgG_^(RPae4z>?+iOd^w6fze&Qb`>8P4fIaXGHYWdBRGCtud_$ON62Pv$=}x6G@S_> z$T86)7Xo4F;7+1l{v<@g)uO^3Kk7D0O@2L76$9{qr;5GKFz!bPv_olYQFmtr7!4DW z(fIb+kJv=R`ygrgoyo6?cwi&x(MnxmyTJX`oI4vnSTxgb2Ao0iUxNV`?kyGI_tpVc z9A=d$i286%PiFL=Cp$=%4yC%fF=y#?k{^i~EOKlj2WD)$?~c=`9qf3Ht@m|lf+tPkN3Ssnl+lgGaR3tx{1Iep$^Av$ec*&xD-6Ge4TeBjWYm6N2lhi6 zEaT`P?YL^6XGfe^GNAaEKR`{0gIN;di!{3rv2=0a$Ms10ZIPw$<*b z*jMQc(E@qIqz=-1?3t@S>H}*1Vsd%UE4?25`%^3y~5GBEx!5+8wTwP$K@79*_@E{wW_ z`4t><_#8+JDY!a=R^xc4MxUlk@@@m{;3&pxz)`?S8;?Myt)4MYdPF`_p$|4GOqwy| zSXIitRCG}PJMw1|I8F<2oR3elMyUDaSd{^fY-G2!r1!~_UI@(-E+A#C;1rS77g9|ui(g4cwnx?tLmOX-ABsHn#grcVp>3IWYVkFH(oQ*F> zBmiC)N`h$)_W;*oNkI#xQ~Sk4LGN#8NNmgk2hOVurpW`DlY+aQDJ?%c7Pn3n&;f^R z4YuMo`Y!R}yG!2NqolW|syb|ceR!}d`=9-3`AemiuKQ2WpP)e$}S z4&*xL9}HPPf5GOjDEzx52Xdq2kxV0PJ!?V1;^A9Q`Y%vh>ci7vX``}udip|ww@R2OTJI-5lrE9M=+mRmhJ=1CWM-T3(``wmH~Hbt#Un% zG}n_BRvdm8eF6fAO{;lOp$;BY-4Q2Dz;mi5&y|vU`gAw^%s4ouA|xbjN+C-E+YTR) zE9VIlAr7=x9T1a`lmOPof`YngcO4J*6;>57r1mfarDNdm9O)T>^px`!@vcJ;7A0IA(Yw#6yhn?~c-1?~X!YN@-tHaF`uh6p92|fAi)(9D z9Cxx8h#y(Cp|HeBQh&wX1&{ymu+n2<$BQYSb>eH4?B)cuWq#SBK{JJZinN_Xh@9}? zR`v-tLzQ^AK_YLB+7xja{7&+)16lv(VIMQs1OJT=TiZzxWDraBr$PMnw6mbOWf=-r zzLG_!AYb|J&PwAy%@xR6fR|m704|4Qj zsp-vj)6N0abRzY!3nD*tbO!50!oY`KB5cW@Gv+n`5N#kZ9k!o5fdLr2_E)0g>4UChAeAYUQ;;Z0 z)Z{bCPS^hdgKzUCIrAwqKU1atClbUBypNx*aM<^KlIZ*X{WpD9m*3{8a#Yfv&jQ;e zXBA1Uh1cF8p$tEg#q1SH1oat|3>Qm*CaBhUVVG7Mfh98+00xK7+?*V$y&O6BPr z#L{s;KZ~A5h%xNIhBO*DS{Q&o_Nan0TuII!ENG5bPYx+p_2ZjMFBM(}_F11v>J@tcVukWEwxQMbR)nQ8kS#B~2u72& zB}NOVSH)%+R@gm=&HkwwWsKpFY57-ePfgR(ZaJhjq&+IrpsDPZq; zgHA$ImCe{p^qU_HTB2+s!wvx|&aEKXK9}X2E|a|bJ0yR!Jn&f&6yTz7*W9NALm5d! zM=GeYLi)mpgGJq@M#9ObK<;uH#gM2;^0ho*)rvs8k1ulpRb?#&iTr-Eos`Ly2_An% za~9HYZgoyj)Da31W-WDW!B_TF5scMHRya=v^H_Q6YFV^lAwcPse#- ziD%5IfRjpB>MgS;ZBu`Hi~;l|)b8BgT@3>qzXL?^df%@u6k8pGG)W?U&!)NK>sRq_ zqCwW+pQp$kU7rh#Jgi_t=GF(R&?is437O@g!C>l_VBMk#0u1c}G^FZSY|Qo6lOrLJ zJ0xXc|0WP#5nH)Xmi_V4^!2PP1%)lpXpnH5P0{NsCxIH2J57w?{_jBsfV!iQ1wce|$;%q3J5$`h>BBP7dsB%3yrAX5 zW`Lkc$a?bg`*ZV$0-235G-2eY6;LnS5#a#R`_ie47nCeX$4|F7ux8bGC4-g$1PCVn zfH&vb+01s!#^9zfc}Cu!R_6p&K{Bv{6sPi#jvnaWd7CJ^gc#UGkk|J8aME&TZ@s*z z<2K;#ma7eCnyjfQ7+kG3P}50zKkcO&gzKGzzigf z^^z2aF<_F)rslDo$uH z?Hzt9_~^l+aB>~$&Du$3Mh`*!k&Xk+PTM}V=`)C$W?Z9k- zraIF(9$pSt&TDXWkeg}$p=kFCV^E&rCLM~Dfe=%>&}xcpfHXKZ1CJ+(0{?>X}tGQ%jcetZb#HZn~+CHeQ%80doC}_{(^Hd3QVG z9wWJdpB*Twe%;8!=kc$vadk+yL^Vy+5r3tFW zxIe5S)Ha4d9@Jhow)U$%L1>0JJbqi1GjT2z%sRd=2uSM&%I?pPxo zB)%A~{o2s)y!C9bI)L1_Lw?9qO9_uI;pC6rZ;g3Nt1b?1Q>YN)x|Z2;C}cTgLsl={ zUo{XsC2-N2PC>RZqjoCs3+U7``3Klv@c6C(8aN*ykpb#AZr(I}Q(A(fFS@aZ|B*}g zWnV(UofAkNYfaD=e$4$ScLQ_GG4=^s|JIv>gX7xu>s8|)XJ=<0Ph#qBWlgywg7F0R ziG>W%S9b#9CQ3Nsr*+b>QOwCEInSreADi$HKc>DTJMWZum zuaJ)cw9IrGF+`QB9@8OcV0_BIcLGH0e22CN!!gz^qD&p zI%^*6=G5$JbI8jdPmFLY=z<9R5ny(s#WLRy{i;lm1xyv*wX14vpIC#5w_Z}RkUhP7ba-06s6g}vg z*b@p2bhLUESXCI|tU$m6bKfC8v)2B`9#byKnshy2+@p~&2MUPCG9m`eLnYutl zj<(8Boy!L+k(E8n^}H-bG+T>J99G!;>}Gru@nE_IIE=5cw;pL;11~#i62qtS=U>}| zC>O>US}s>}O(3BmM6$yL1Me}{W4R;H?N?v13A_`}?}GfpuOExbw$%sYVy+LriQZR? zxE;dMxKFPZu$?XAJ{)Cdy$>?CPd65eh@JNPU9&5-dVH<1hF$0;(6DnmF-c@5R{SvJ zdHw3PRlm{T*$~4^=nE}g?86xCrvgO@vvAl)UIpTd5$&S^nGV#}V59iYL93QhsfLAj z)^cr+sAL@=zJKUX_EVJN*pkNj3pt+hP;3wmjC~GvcCxkOxuWf?gFveLDez;*a$^+G z$DoyflqffZSLhPDfw_=%BnP0>9!pGfKfJ+g4zd_V!QhyA7EIFjOM7ZHDfB_}6;Fl_ zwUjMwOLU9&$!|jB;ha!8^4`ecdjQ{!-1(Gt1rxi{XR3#*Sl`4v&c7yt5&I^d4eC$E zGEd$;Th|n+PzUeXOo!6sXOMTk-b(w57Tf^nmtYi`U0o` z@J|y>sMog(?K-*<*;Q#CR)ljQh6@=RMbwuf+i+;&@jz?Jvlzyu#5lm!AcLFdmn*fwmH~Fg-L|Z-bqz-w_5!M3WX;}Whcwa zeXTS}E~|#=N;5!s4$)(ogNE&~qoIoVm1$*nYCqOm>gDY}TJWz?ab=ie z$KH{OyTd)HdnM^RqwUaupFgpQsH))SF-+`h?b{O;FVytmuxjV|viHBbj;^*4vJYZk zx)1L=#y|91+^w0XdO2d#5OkLYkeUj0p*R$SAFR|b4V9#yjMe-pbvjsnr^*g4d01D- zg#fw1u!;=5K40#c2^Dr9TBa9W`_vjAP;HGt?Z~pYmo@lPfvW?D)Gi-&-+9;w-IsIy z!42*~d7QV*h0a79Hz zJfi>H-~W)>&;B2-&-@=c=Uq!ad^o$z3XAyXeuH^h6;ue}Uxx-&@h-%6DcX;zUd%`^ zwEQmTzitAEm9zjS$}~YXLCH@Q0=c48`T7kfsSEt>34$E&WD0cB*z^L;LZZ_fqICF*M$7yzX7k+1?b081Bbi4=? z&>(HxvMs*jr{y`oEFWrBLfi09=Ds?D6H__cw|Mm|nqsNBdt#sy8C+wjzJUhw|8k|| zk2$fsCE_~1LFRy1C9ljtT2W2&m9y85t18P4%mPm2UjIF@LFO$^j6ru%A?C_ZuH+i5 zh-;*M)l@MHk*@bBYDUdP+f32ys}gQR+W^8bFGWkD?Z9BzQSKi#A@FW;7629C?}7@k z5EqKiI7fss+S+L1&s_OZ^7jk>%H0Wk@ux6$m7l=fNFCilY^S09Xy4r^xT#;3kJhyP ze&A<*bL;XRZux(1xUox^dS}g|RYhiZY5$aVN3EZ?y3)jhT>7+G@o0PMLx(;znu($m zB2E37ESSWuEKj7b$JjHxut>YECxaKvQ72mDXvwzXcn$bqvzlofY^I$z zq0T%g&F3s{IK?dy2xYQ-HNxk|cJTvG(XSx+s)XAysx{=?zcctaLb4;Ll^n}KQ@yvu ztM6y$wnDhS`E_Rs-o9&Y*Ch0Nde(|LOkCy0+>T4z4r%{Sx8`!vcaZYI&A4rb`qKrf z^6t?mohsW$pIK6$OqKmEHtT(Y`G#9juH`>_N8!_uKjE(6q8IKh?98n>?S)NL7yp00G$80=K3XCH283iFf`a(+yI^W zRH)eu8{S~)YpXx*^Z5Uu_T~ACyF@NC8+~h=>X`99O|xo@B2n*!0d?NnD*;;+gOy&uThpUW6PnOHF)afMS zIQhysqSMiukXE7^L7H)F;;Fq}4i8buyAHWh={$7qmBrLjto^}UAl~rMy^dT+?Kqc7 z$HKz9&eyfcAqKhfG1Xt$B67!N=rNRZ*@=lqo1h0&!yFWkfabtn{l9$;o=_wTRFTW+ TvSfh!kPst%Q+Vk`he!Vn2OUDF literal 9119 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 diff --git a/doc/build/_images/output_29_1.png b/doc/build/_images/output_29_1.png index 153702acdf37c617750cca723d65364931a32f8b..815487a90992a25154f3f49b1e46947c442833df 100644 GIT binary patch literal 11680 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 M(J(-lUUs_uKP_1gK>z>% diff --git a/doc/build/_images/output_39_1.png b/doc/build/_images/output_39_1.png index c7f0cb42ebc7e5bb8efa09876842ce1123dcedeb..45a52e2bff8522afe4884f50ce5bdbea0f4b1038 100644 GIT binary patch literal 27482 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�DF$VYc?2aL2O;P_<} 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 diff --git a/doc/build/_images/output_45_1.png b/doc/build/_images/output_45_1.png index b9e3c389a3d5279bc8d9fdf4d4a08917c29f186c..2aeb932b0b01e55150c4cafa2012b6fc517e72a3 100644 GIT binary patch literal 85258 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%0Aj}9IgcM>t_=FL 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%0D%0#U$&Fe=DDm6oGTN3`!`>9PQkTx5Md+ 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

@@ -55,16 +55,20 @@

Navigation

pyFAI API

-

This chapter describes the programming interface of pyFAI, so what you can expect after having launched ipython and typed: -..

-
-
import pyFAI
-

The most important class is AzimuthalIntegrator which is an object containing both the geometry (it inherits from Geometry, another class) +

This chapter describes the programming interface of pyFAI, so what you can +expect after having launched Jupyter notebook (or ipython) and typed:

+
import pyFAI
+
+
+

The most important class is AzimuthalIntegrator which is an object containing +both the geometry (it inherits from Geometry, another class) and exposes important methods (functions) like integrate1d and integrate2d.

@@ -140,7 +158,7 @@

Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • @@ -59,8 +59,9 @@

    Navigation

    pyFAI Package

    -pyFAI.__init__.benchmarks()
    -

    Run the benchmarks

    +pyFAI.__init__.benchmarks(*arg, **kwarg) +

    Run the integrated benchmarks.

    +

    See the documentation of pyFAI.benchmark.run_benchmark

    @@ -78,3377 +79,3644 @@

    Navigation

    -
    -

    azimuthalIntegrator Module

    +
    +

    average Module

    +

    Utilities, mainly for image treatment

    +
    +
    +exception pyFAI.average.AlgorithmCreationError
    +

    Bases: exceptions.RuntimeError

    +

    Exception returned if creation of an ImageReductionFilter is not +possible

    +
    +
    -
    -class pyFAI.azimuthalIntegrator.AzimuthalIntegrator(dist=1, poni1=0, poni2=0, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None)
    -

    Bases: pyFAI.geometry.Geometry

    -

    This class is an azimuthal integrator based on P. Boesecke’s -geometry and histogram algorithm by Manolo S. del Rio and V.A Sole

    -

    All geometry calculation are done in the Geometry class

    -

    main methods are:

    -
    >>> tth, I = ai.integrate1d(data, npt, unit="2th_deg")
    ->>> q, I, sigma = ai.integrate1d(data, npt, unit="q_nm^-1", error_model="poisson")
    ->>> regrouped = ai.integrate2d(data, npt_rad, npt_azim, unit="q_nm^-1")[0]
    -
    -
    -
    -
    -DEFAULT_METHOD = 'splitbbox'
    -
    +
    +class pyFAI.average.Average
    +

    Bases: object

    +

    Process images to generate an average using different algorithms.

    +
    +
    +__init__()
    +

    Constructor

    +
    -
    -create_mask(data, mask=None, dummy=None, delta_dummy=None, mode='normal')
    -

    Combines various masks into another one.

    +
    +add_algorithm(algorithm)
    +

    Defines another algorithm which will be computed on the source.

    - - - - - +
    Parameters:
      -
    • data (ndarray) – input array of data
    • -
    • mask (ndarray) – input mask (if none, self.mask is used)
    • -
    • dummy (float) – value of dead pixels
    • -
    • delta_dumy – precision of dummy pixels
    • -
    • mode (str) – can be “normal” or “numpy” (inverted) or “where” applied to the mask
    • -
    -
    Returns:

    the new mask

    -
    Return type:

    ndarray of bool

    -
    Parameters:algorithm (ImageReductionFilter) – An averaging algorithm.
    -

    This method combine two masks (dynamic mask from data & -dummy and mask) to generate a new one with the ‘or’ binary -operation. One can adjust the level, with the dummy and -the delta_dummy parameter, when you consider the data -values needs to be masked out.

    -

    This method can work in two different mode:

    -
    -
      -
    • “normal”: False for valid pixels, True for bad pixels
    • -
    • “numpy”: True for valid pixels, false for others
    • -
    -
    -

    This method tries to accomodate various types of masks (like -valid=0 & masked=-1, ...) and guesses if an input mask needs -to be inverted.

    -
    -dark_correction(data, dark=None)
    -

    Correct for Dark-current effects. -If dark is not defined, correct for a dark set by “set_darkfiles”

    +
    +get_counter_frames()
    +

    Returns the number of frames used for the process.

    - - - +
    Parameters:
      -
    • data – input ndarray with the image
    • -
    • dark – ndarray with dark noise or None
    • -
    -
    Returns:

    2tuple: corrected_data, dark_actually used (or None)

    -
    Return type:int
    -
    -
    -darkcurrent
    -
    - -
    -
    -empty
    -
    -
    -
    -flat_correction(data, flat=None)
    -

    Correct for flat field. -If flat is not defined, correct for a flat set by “set_flatfiles”

    +
    +get_fabio_images()
    +

    Returns source images as fabio images.

    - - - +
    Parameters:
      -
    • data – input ndarray with the image
    • -
    • dark – ndarray with dark noise or None
    • -
    -
    Returns:

    2tuple: corrected_data, flat_actually used (or None)

    -
    Return type:list(fabio.fabioimage.FabioImage)
    -
    -
    -flatfield
    -
    -
    -
    -get_darkcurrent()
    -
    +
    +get_image_reduction(algorithm)
    +

    Returns the result of an algorithm. The process must be already +done.

    + +++ + + + + + +
    Parameters:algorithm (ImageReductionFilter) – An averaging algorithm
    Return type:numpy.ndarray
    +
    -
    -get_empty()
    -
    +
    +process()
    +

    Process source images to all defined averaging algorithms defined +using defined parameters. To access to the results you have to define +a writer (AverageWriter). To follow the process forward you have to +define an observer (AverageObserver).

    +
    -
    -get_flatfield()
    -
    +
    +set_correct_flat_from_dark(correct_flat_from_dark)
    +

    Defines if the dark must be applied on the flat.

    + +++ + + + +
    Parameters:correct_flat_from_dark (bool) – If true, the dark is applied.
    +
    -
    -integrate1d(data, npt, filename=None, correctSolidAngle=True, variance=None, error_model=None, radial_range=None, azimuth_range=None, mask=None, dummy=None, delta_dummy=None, polarization_factor=None, dark=None, flat=None, method='csr', unit=q_nm^-1, safe=True, normalization_factor=1.0, block_size=32, profile=False, all=False)
    -

    Calculate the azimuthal integrated Saxs curve in q(nm^-1) by default

    -

    Multi algorithm implementation (tries to be bullet proof), suitable for SAXS, WAXS, ... and much more

    +
    +set_dark(dark_list)
    +

    Defines images used as dark.

    - - - - - +
    Parameters:
      -
    • data (ndarray) – 2D array from the Detector/CCD camera
    • -
    • npt (int) – number of points in the output pattern
    • -
    • filename (str) – output filename in 2/3 column ascii format
    • -
    • correctSolidAngle (bool) – correct for solid angle of each pixel if True
    • -
    • variance (ndarray) – array containing the variance of the data. If not available, no error propagation is done
    • -
    • error_model (str) – When the variance is unknown, an error model can be given: “poisson” (variance = I), “azimuthal” (variance = (I-<I>)^2)
    • -
    • radial_range ((float, float), optional) – The lower and upper range of the radial unit. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • -
    • azimuth_range ((float, float), optional) – The lower and upper range of the azimuthal angle in degree. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • -
    • mask (ndarray) – array (same size as image) with 1 for masked pixels, and 0 for valid pixels
    • -
    • dummy (float) – value for dead/masked pixels
    • -
    • delta_dummy (float) – precision for dummy value
    • -
    • polarization_factor (float) – polarization factor between -1 (vertical) and +1 (horizontal). 0 for circular polarization or random, None for no correction
    • -
    • dark (ndarray) – dark noise image
    • -
    • flat (ndarray) – flat field image
    • -
    • method (str) – can be “numpy”, “cython”, “BBox” or “splitpixel”, “lut”, “csr”, “nosplit_csr”, “full_csr”, “lut_ocl” and “csr_ocl” if you want to go on GPU. To Specify the device: “csr_ocl_1,2”
    • -
    • unit (pyFAI.units.Enum) – Output units, can be “q_nm^-1”, “q_A^-1”, “2th_deg”, “2th_rad”, “r_mm” for now
    • -
    • safe (bool) – Do some extra checks to ensure LUT/CSR is still valid. False is faster.
    • -
    • normalization_factor (float) – Value of a normalization monitor
    • -
    • block_size – size of the block for OpenCL integration (unused?)
    • -
    • profile – set to True to enable profiling in OpenCL
    • -
    • all – if true return a dictionary with many more parameters
    • -
    -
    Returns:

    q/2th/r bins center positions and regrouped intensity (and error array if variance or variance model provided), uneless all==True.

    -
    Return type:

    2 or 3-tuple of ndarrays

    -
    Parameters:dark_list (list) – List of dark used
    -
    -integrate2d(data, npt_rad, npt_azim=360, filename=None, correctSolidAngle=True, variance=None, error_model=None, radial_range=None, azimuth_range=None, mask=None, dummy=None, delta_dummy=None, polarization_factor=None, dark=None, flat=None, method='bbox', unit=q_nm^-1, safe=True, normalization_factor=1.0, all=False)
    -

    Calculate the azimuthal regrouped 2d image in q(nm^-1)/chi(deg) by default

    -

    Multi algorithm implementation (tries to be bullet proof)

    +
    +set_flat(flat_list)
    +

    Defines images used as flat.

    - - - - - +
    Parameters:
      -
    • data (ndarray) – 2D array from the Detector/CCD camera
    • -
    • npt_rad (int) – number of points in the radial direction
    • -
    • npt_azim (int) – number of points in the azimuthal direction
    • -
    • filename (str) – output image (as edf format)
    • -
    • correctSolidAngle (bool) – correct for solid angle of each pixel if True
    • -
    • variance (ndarray) – array containing the variance of the data. If not available, no error propagation is done
    • -
    • error_model (str) – When the variance is unknown, an error model can be given: “poisson” (variance = I), “azimuthal” (variance = (I-<I>)^2)
    • -
    • radial_range ((float, float), optional) – The lower and upper range of the radial unit. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • -
    • azimuth_range ((float, float), optional) – The lower and upper range of the azimuthal angle in degree. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • -
    • mask (ndarray) – array (same size as image) with 1 for masked pixels, and 0 for valid pixels
    • -
    • dummy (float) – value for dead/masked pixels
    • -
    • delta_dummy (float) – precision for dummy value
    • -
    • polarization_factor (float) – polarization factor between -1 (vertical) and +1 (horizontal). 0 for circular polarization or random, None for no correction
    • -
    • dark (ndarray) – dark noise image
    • -
    • flat (ndarray) – flat field image
    • -
    • method (str) – can be “numpy”, “cython”, “BBox” or “splitpixel”, “lut”, “csr; “lut_ocl” and “csr_ocl” if you want to go on GPU. To Specify the device: “csr_ocl_1,2”
    • -
    • unit (pyFAI.units.Enum) – Output units, can be “q_nm^-1”, “q_A^-1”, “2th_deg”, “2th_rad”, “r_mm” for now
    • -
    • safe (bool) – Do some extra checks to ensure LUT is still valid. False is faster.
    • -
    • normalization_factor (float) – Value of a normalization monitor
    • -
    • all – if true, return many more intermediate results as a dict.
    • -
    -
    Returns:

    azimuthaly regrouped intensity, q/2theta/r pos. and chi pos.

    -
    Return type:

    3-tuple of ndarrays (2d, 1d, 1d)

    -
    Parameters:flat_list (list) – List of dark used
    -
    -makeHeaders(hdr='#', dark=None, flat=None, polarization_factor=None, normalization_factor=None)
    -
    +
    +set_images(image_list)
    +

    Defines the set set of source images to used to process an average.

    +
    - - - - - +
    Parameters:
      -
    • hdr (str) – string used as comment in the header
    • -
    • dark – save the darks filenames (default: no)
    • -
    • flat – save the flat filenames (default: no)
    • -
    • polarization_factor (float) – the polarization factor
    • -
    -
    Returns:

    the header

    -
    Return type:

    str

    -
    Parameters:image_list (list) – List of filename, numpy arrays, fabio images +used as source for the computation.
    -
    -reset()
    -

    Reset azimuthal integrator in addition to other arrays.

    +
    +set_monitor_name(monitor_name)
    +

    Defines the monitor name used to correct images before processing +the average. This monitor must be part of the file header, else the +image is skipped.

    + +++ + + + +
    Parameters:monitor_name (str) – Name of the monitor available on the header +file
    -
    -save1D(filename, dim1, I, error=None, dim1_unit=2th_deg, dark=None, flat=None, polarization_factor=None, normalization_factor=None)
    -
    +
    +set_observer(observer)
    +

    Set an observer to the average process.

    +
    - +
    Parameters:
      -
    • filename (str) – the filename used to save the 1D integration
    • -
    • dim1 (numpy.ndarray) – the x coordinates of the integrated curve
    • -
    • I (numpy.mdarray) – The integrated intensity
    • -
    • error (numpy.ndarray or None) – the error bar for each intensity
    • -
    • dim1_unit (pyFAI.units.Unit) – the unit of the dim1 array
    • -
    • dark – save the darks filenames (default: no)
    • -
    • flat – save the flat filenames (default: no)
    • -
    • polarization_factor (float) – the polarization factor
    • -
    • normalization_factor (float) – the monitor value
    • -
    -
    Parameters:observer (AverageObserver) – An observer
    -

    This method save the result of a 1D integration.

    -
    -save2D(filename, I, dim1, dim2, error=None, dim1_unit=2th_deg, dark=None, flat=None, polarization_factor=None, normalization_factor=None)
    -
    +
    +set_pixel_filter(threshold, minimum, maximum)
    +

    Defines the filter applied on each pixels of the images before +processing the average.

    +
    Parameters:
      -
    • filename (str) – the filename used to save the 2D histogram
    • -
    • dim1 (numpy.ndarray) – the 1st coordinates of the histogram
    • -
    • dim1 – the 2nd coordinates of the histogram
    • -
    • I (numpy.mdarray) – The integrated intensity
    • -
    • error (numpy.ndarray or None) – the error bar for each intensity
    • -
    • dim1_unit (pyFAI.units.Unit) – the unit of the dim1 array
    • -
    • dark – save the darks filenames (default: no)
    • -
    • flat – save the flat filenames (default: no)
    • -
    • polarization_factor (float) – the polarization factor
    • -
    • normalization_factor (float) – the monitor value
    • +
    • threshold – what is the upper limit? +all pixel > max*(1-threshold) are discareded.
    • +
    • minimum – minimum valid value or True
    • +
    • maximum – maximum valid value
    -

    This method save the result of a 2D integration.

    -
    -saxs(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    - -
    -
    -separate(data, npt_rad=1024, npt_azim=512, unit='2th_deg', method='splitpixel', percentile=50, mask=None, restore_mask=True)
    -

    Separate bragg signal from powder/amorphous signal using azimuthal integration, -median filering and projected back before subtraction.

    +
    +set_writer(writer)
    +

    Defines the object write which will be used to store the result.

    - - - +
    Parameters:
      -
    • data – input image as numpy array
    • -
    • npt_rad – number of radial points
    • -
    • npt_azim – number of azimuthal points
    • -
    • unit – unit to be used for integration
    • -
    • method – pathway for integration and sort
    • -
    • percentile – which percentile use for cutting out
    • -
    • mask – masked out pixels array
    • -
    • restore_mask – masked pixels have the same value as input data provided
    • -
    -
    Returns:

    bragg, amorphous

    -
    Parameters:writer (AverageWriter) – The writer to use.
    + + +
    +
    +class pyFAI.average.AverageDarkFilter(filter_name, cut_off, quantiles)
    +

    Bases: pyFAI.average.ImageStackFilter

    +

    Filter based on the algorithm of average_dark

    +

    TODO: Must be split according to each filter_name, and removed

    -
    -set_darkcurrent(dark)
    +
    +__init__(filter_name, cut_off, quantiles)
    -
    -set_darkfiles(files=None, method='mean')
    -
    --- - - - -
    Parameters:
      -
    • files (str or list(str) or None) – file(s) used to compute the dark.
    • -
    • method (str) – method used to compute the dark, “mean” or “median”
    • -
    -
    -

    Set the dark current from one or mutliple files, avaraged -according to the method provided

    +
    +get_parameters()
    +

    Return a dictionary containing filter parameters

    -
    -
    -set_empty(value)
    +
    +
    +name
    +
    + +
    +
    +class pyFAI.average.AverageObserver
    +

    Bases: object

    -
    -set_flatfield(flat)
    -
    +
    +algorithm_finished(algorithm)
    +

    Called when an algorithm is finished

    +
    -
    -set_flatfiles(files, method='mean')
    -
    +
    +algorithm_started(algorithm)
    +

    Called when an algorithm is started

    +
    + +
    +
    +frame_processed(algorithm, frame_index, frames_count)
    +

    Called after providing a frame to an algorithm

    +
    + +
    +
    +image_loaded(fabio_image, image_index, images_count)
    +

    Called when an input image is loaded

    +
    + +
    +
    +process_finished()
    +

    Called when the full process is finished

    +
    + +
    +
    +process_started()
    +

    Called when the full processing is started

    +
    + +
    +
    +result_processing(algorithm)
    +

    Called before the result of an algorithm is computed

    +
    + + + +
    +
    +class pyFAI.average.AverageWriter
    +

    Interface for using writer in Average process.

    +
    +
    +close()
    +

    Close the writer. Must not be used anymore.

    +
    + +
    +
    +write_header(merged_files, nb_frames, monitor_name)
    +

    Write the header of the average

    +
    Parameters:
      -
    • files (str or list(str) or None) – file(s) used to compute the dark.
    • -
    • method (str) – method used to compute the dark, “mean” or “median”
    • +
    • merged_files (list) – List of files used to generate this output
    • +
    • nb_frames (int) – Number of frames used
    • +
    • monitor_name (str) – Name of the monitor used. Can be None.
    -

    Set the flat field from one or mutliple files, averaged -according to the method provided

    -
    -setup_CSR(shape, npt, mask=None, pos0_range=None, pos1_range=None, mask_checksum=None, unit=2th_deg, split='bbox')
    -

    Prepare a look-up-table

    +
    +write_reduction(algorithm, data)
    +

    Write one reduction

    Parameters:
      -
    • shape ((int, int)) – shape of the dataset
    • -
    • npt (int or (int, int)) – number of points in the the output pattern
    • -
    • mask (ndarray) – array with masked pixel (1=masked)
    • -
    • pos0_range ((float, float)) – range in radial dimension
    • -
    • pos1_range ((float, float)) – range in azimuthal dimension
    • -
    • mask_checksum (int (or anything else ...)) – checksum of the mask buffer
    • -
    • unit (pyFAI.units.Enum) – use to propagate the LUT object for further checkings
    • -
    • split – Splitting scheme: valid options are “no”, “bbox”, “full”
    • +
    • algorithm (ImageReductionFilter) – Algorithm used
    • +
    • data (object) – Data of this reduction
    -

    This method is called when a look-up table needs to be set-up. -The shape parameter, correspond to the shape of the original -datatset. It is possible to customize the number of point of -the output histogram with the npt parameter which can be -either an integer for an 1D integration or a 2-tuple of -integer in case of a 2D integration. The LUT will have a -different shape: (npt, lut_max_size), the later parameter -being calculated during the instanciation of the splitBBoxLUT -class.

    -

    It is possible to prepare the LUT with a predefine -mask. This operation can speedup the computation of the -later integrations. Instead of applying the patch on the -dataset, it is taken into account during the histogram -computation. If provided the mask_checksum prevent the -re-calculation of the mask. When the mask changes, its -checksum is used to reset (or not) the LUT (which is a very -time consuming operation !)

    -

    It is also possible to restrain the range of the 1D or 2D -pattern with the pos1_range and pos2_range.

    -

    The unit parameter is just propagated to the LUT integrator -for further checkings: The aim is to prevent an integration to -be performed in 2th-space when the LUT was setup in q space.

    + + +
    +
    +class pyFAI.average.ImageAccumulatorFilter
    +

    Bases: pyFAI.average.ImageReductionFilter

    +

    Filter applied in a set of images in which it is possible +to reduce data step by step into a single merged image.

    -
    -setup_LUT(shape, npt, mask=None, pos0_range=None, pos1_range=None, mask_checksum=None, unit=2th_deg)
    -

    Prepare a look-up-table

    +
    +add_image(image)
    +

    Add an image to the filter.

    - +
    Parameters:
      -
    • shape ((int, int)) – shape of the dataset
    • -
    • npt (int or (int, int)) – number of points in the the output pattern
    • -
    • mask (ndarray) – array with masked pixel (1=masked)
    • -
    • pos0_range ((float, float)) – range in radial dimension
    • -
    • pos1_range ((float, float)) – range in azimuthal dimension
    • -
    • mask_checksum (int (or anything else ...)) – checksum of the mask buffer
    • -
    • unit (pyFAI.units.Enum) – use to propagate the LUT object for further checkings
    • -
    -
    Parameters:image (numpy.ndarray) – image to add
    -

    This method is called when a look-up table needs to be set-up. -The shape parameter, correspond to the shape of the original -datatset. It is possible to customize the number of point of -the output histogram with the npt parameter which can be -either an integer for an 1D integration or a 2-tuple of -integer in case of a 2D integration. The LUT will have a -different shape: (npt, lut_max_size), the later parameter -being calculated during the instanciation of the splitBBoxLUT -class.

    -

    It is possible to prepare the LUT with a predefine -mask. This operation can speedup the computation of the -later integrations. Instead of applying the patch on the -dataset, it is taken into account during the histogram -computation. If provided the mask_checksum prevent the -re-calculation of the mask. When the mask changes, its -checksum is used to reset (or not) the LUT (which is a very -time consuming operation !)

    -

    It is also possible to restrain the range of the 1D or 2D -pattern with the pos1_range and pos2_range.

    -

    The unit parameter is just propagated to the LUT integrator -for further checkings: The aim is to prevent an integration to -be performed in 2th-space when the LUT was setup in q space.

    -
    -xrpd(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +get_result()
    +

    Get the result of the filter.

    + +++ + + + + + +
    Returns:result filter
    Return type:numpy.ndarray
    -
    -xrpd2(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    +
    +init(max_images=None)
    +
    -
    -
    -xrpd2_histogram(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +
    +class pyFAI.average.ImageReductionFilter
    +

    Bases: object

    +

    Generic filter applied in a set of images.

    -
    -xrpd2_numpy(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +add_image(image)
    +

    Add an image to the filter.

    + +++ + + + +
    Parameters:image (numpy.ndarray) – image to add
    -
    -xrpd2_splitBBox(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +get_parameters()
    +

    Return a dictionary containing filter parameters

    + +++ + + + +
    Return type:dict
    -
    -xrpd2_splitPixel(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +get_result()
    +

    Get the result of the filter.

    + +++ + + + +
    Returns:result filter
    -
    -xrpd_CSR_OCL(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +init(max_images=None)
    +

    Initialize the filter before using it.

    + +++ + + + +
    Parameters:max_images (int) – Max images supported by the filter
    -
    -
    -xrpd_LUT(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +
    +class pyFAI.average.ImageStackFilter
    +

    Bases: pyFAI.average.ImageReductionFilter

    +

    Filter creating a stack from all images and computing everything at the +end.

    -
    -xrpd_LUT_OCL(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +add_image(image)
    +

    Add an image to the filter.

    + +++ + + + +
    Parameters:image (numpy.ndarray) – image to add
    -
    -xrpd_OpenCL(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    +
    +get_result()
    +
    -
    -xrpd_cython(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    +
    +init(max_images=None)
    +
    -
    -
    -xrpd_numpy(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    -
    -xrpd_splitBBox(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +
    +class pyFAI.average.MaxAveraging
    +

    Bases: pyFAI.average.ImageAccumulatorFilter

    +
    +
    +name = 'max'
    +
    +
    +
    +
    +class pyFAI.average.MeanAveraging
    +

    Bases: pyFAI.average.SumAveraging

    -
    -xrpd_splitPixel(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    +
    +get_result()
    +
    + +
    +
    +name = 'mean'
    +
    -
    -
    -

    integrate_widget Module

    -

    pyFAI-integrate

    -

    A graphical tool (based on PyQt4) for performing azimuthal integration on series of files.

    -
    -class pyFAI.integrate_widget.AIWidget(input_data=None, output_path=None, output_format=None, slow_dim=None, fast_dim=None, json_file='.azimint.json')
    -

    Bases: PyQt4.QtGui.QWidget

    +
    +class pyFAI.average.MinAveraging
    +

    Bases: pyFAI.average.ImageAccumulatorFilter

    -
    -URL = 'http://pyfai.readthedocs.org/en/latest/man/pyFAI-integrate.html'
    +
    +name = 'min'
    -
    -
    -assign_unit()
    -

    assign unit to the corresponding widget

    -
    -
    -detector_changed()
    -
    - -
    -
    -die()
    -
    - -
    -
    -dump(filename=None)
    -

    Dump the status of the current widget to a file in JSON

    - --- - - - - - -
    Parameters:filename (string) – path where to save the config
    Returns:dict with configuration
    +
    +
    +exception pyFAI.average.MonitorNotFound
    +

    Bases: exceptions.Exception

    +

    Raised when monitor information in not found or is not valid.

    +
    +
    +class pyFAI.average.MultiFilesAverageWriter(file_name_pattern, file_format, dry_run=False)
    +

    Bases: pyFAI.average.AverageWriter

    +

    Write reductions into multi files. File headers are duplicated.

    -
    -get_config()
    -

    Read the configuration of the plugin and returns it as a dictionary

    - +
    +__init__(file_name_pattern, file_format, dry_run=False)
    +
    - +
    Returns:dict with all information.
    Parameters:
      +
    • file_name_pattern (str) – File name pattern for the output files. +If it contains “{method_name}”, it is updated for each +reduction writing with the name of the reduction.
    • +
    • file_format (str) – File format used. It is the default +extension file.
    • +
    • dry_run (bool) – If dry_run, the file is created on memory but not +saved on the file system at the end
    • +
    +
    -
    -get_method()
    -

    Return the method name for azimuthal intgration

    +
    +close()
    +

    Close the writer. Must not be used anymore.

    -
    -help()
    -
    - -
    -
    -openCL_changed()
    -
    - -
    -
    -platform_changed()
    -
    - -
    -
    -proceed()
    -
    - -
    -
    -restore(filename='.azimint.json')
    -

    Restore from JSON file the status of the current widget

    +
    +get_fabio_image(algorithm)
    +

    Get the constructed fabio image

    - +
    Parameters:filename (str) – path where the config was saved
    Return type:fabio.fabioimage.FabioImage
    -
    -save_config()
    -
    - -
    -
    -select_darkcurrent()
    -
    - -
    -
    -select_flatfield()
    +
    +write_header(merged_files, nb_frames, monitor_name)
    -
    -select_maskfile()
    +
    +write_reduction(algorithm, data)
    -
    -
    -select_ponifile()
    -
    +
    -
    -
    -select_splinefile()
    +
    +
    +class pyFAI.average.SumAveraging
    +

    Bases: pyFAI.average.ImageAccumulatorFilter

    +
    +
    +name = 'sum'
    -
    -
    -setStackDataObject(stack, stack_name=None)
    -
    +
    -
    -
    -set_config(dico)
    -

    Setup the widget from its description

    +
    +
    +pyFAI.average.average_dark(lstimg, center_method='mean', cutoff=None, quantiles=(0.5, 0.5))
    +

    Averages a serie of dark (or flat) images. +Centers the result on the mean or the median ... +but averages all frames within cutoff*std

    - + + +
    Parameters:dico (dict) – dictionary with description of the widget
    Parameters:
      +
    • lstimg – list of 2D images or a 3D stack
    • +
    • center_method (str) – is the center calculated by a “mean”, “median”, +“quantile”, “std”
    • +
    • cutoff (float or None) – keep all data where (I-center)/std < cutoff
    • +
    • quantiles (tuple(float, float) or None) – 2-tuple of floats average out data between the two +quantiles
    • +
    +
    Returns:

    2D image averaged

    +
    -
    -
    -set_input_data(stack, stack_name=None)
    -
    - -
    -
    -set_ponifile(ponifile=None)
    -
    - -
    -
    -set_validators()
    -

    Set all validators for text entries

    -
    - -
    - -
    -
    -class pyFAI.integrate_widget.Browser(default_url='http://google.com')
    -

    Bases: PyQt4.QtGui.QMainWindow

    -
    -
    -browse()
    -

    Make a web browse on a specific url and show the page on the -Webview widget.

    -
    - -
    - -
    -
    -

    geometry Module

    -
    -
    -class pyFAI.geometry.Geometry(dist=1, poni1=0, poni2=0, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None)
    -

    Bases: object

    -

    This class is an azimuthal integrator based on P. Boesecke’s geometry and -histogram algorithm by Manolo S. del Rio and V.A Sole

    -

    Detector is assumed to be corrected from “raster orientation” effect. -It is not addressed here but rather in the Detector object or at read time. -Considering there is no tilt:

    -
      -
    • Detector fast dimension (dim2) is supposed to be horizontal -(dimension X of the image)
    • -
    • Detector slow dimension (dim1) is supposed to be vertical, upwards -(dimension Y of the image)
    • -
    • The third dimension is chose such as the referential is -orthonormal, so dim3 is along incoming X-ray beam
    • -
    -

    Axis 1 is along first dimension of detector (when not tilted), -this is the slow dimension of the image array in C or Y -x1={1,0,0}

    -

    Axis 2 is along second dimension of detector (when not tilted), -this is the fast dimension of the image in C or X -x2={0,1,0}

    -

    Axis 3 is along the incident X-Ray beam -x3={0,0,1}

    -

    We define the 3 rotation around axis 1, 2 and 3:

    -

    rotM1 = RotationMatrix[rot1,x1] = {{1,0,0},{0,cos[rot1],-sin[rot1]},{0,sin[rot1],cos[rot1]}} -rotM2 = RotationMatrix[rot2,x2] = {{cos[rot2],0,sin[rot2]},{0,1,0},{-sin[rot2],0,cos[rot2]}} -rotM3 = RotationMatrix[rot3,x3] = {{cos[rot3],-sin[rot3],0},{sin[rot3],cos[rot3],0},{0,0,1}}

    -

    Rotations of the detector are applied first Rot around axis 1, -then axis 2 and finally around axis 3:

    -

    R = rotM3.rotM2.rotM1

    -
    -
    R = {{cos[rot2] cos[rot3],cos[rot3] sin[rot1] sin[rot2]-cos[rot1] sin[rot3],cos[rot1] cos[rot3] sin[rot2]+sin[rot1] sin[rot3]},
    -
    {cos[rot2] sin[rot3],cos[rot1] cos[rot3]+sin[rot1] sin[rot2] sin[rot3],-cos[rot3] sin[rot1]+cos[rot1] sin[rot2] sin[rot3]}, -{-sin[rot2],cos[rot2] sin[rot1],cos[rot1] cos[rot2]}}
    -
    -

    In Python notation:

    -

    R.x1 = [cos(rot2)*cos(rot3),cos(rot2)*sin(rot3),-sin(rot2)]

    -

    R.x2 = [cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3),cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3), cos(rot2)*sin(rot1)]

    -

    R.x3 = [cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3),-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3), cos(rot1)*cos(rot2)]

    -
      -
    • Coordinates of the Point of Normal Incidence:

      -

      PONI = R.{0,0,L}

      -
      -
      PONI = [L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)),
      -

      L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)),L*cos(rot1)*cos(rot2)]

      -
      -
      -
    • -
    • Any pixel on detector plan at coordinate (d1, d2) in -meters. Detector is at z=L

      -

      P={d1,d2,L}

      -

      R.P = [t1, t2, t3] -t1 = R.P.x1 = d1*cos(rot2)*cos(rot3) + d2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) + L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) -t2 = R.P.x2 = d1*cos(rot2)*sin(rot3) + d2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) + L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) -t3 = R.P.x3 = d2*cos(rot2)*sin(rot1) - d1*sin(rot2) + L*cos(rot1)*cos(rot2)

      -
    • -
    • Distance sample (origin) to detector point (d1,d2)

      -
      -
      |R.P| = sqrt(pow(Abs(L*cos(rot1)*cos(rot2) + d2*cos(rot2)*sin(rot1) - d1*sin(rot2)),2) +
      -

      pow(Abs(d1*cos(rot2)*cos(rot3) + d2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) + -L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3))),2) + -pow(Abs(d1*cos(rot2)*sin(rot3) + L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + -d2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3))),2))

      -
      -
      -
    • -
    • cos(2theta) is defined as (R.P component along x3) over the distance from origin to data point |R.P|

      -
    • -
    -

    tth = ArcCos [-(R.P).x3/|R.P|]

    -
    -
    tth = Arccos((-(L*cos(rot1)*cos(rot2)) - d2*cos(rot2)*sin(rot1) + d1*sin(rot2))/
    -
    -
    sqrt(pow(Abs(L*cos(rot1)*cos(rot2) + d2*cos(rot2)*sin(rot1) - d1*sin(rot2)),2) +
    -
    -
    pow(Abs(d1*cos(rot2)*cos(rot3) + d2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) +
    -
    -
    L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3))),2) +
    -
    pow(Abs(d1*cos(rot2)*sin(rot3) + L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) +
    -
    -

    d2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3))),2)))

    -
    -
    -
    -
    -
      -
    • tan(2theta) is defined as sqrt(t1**2 + t2**2) / t3
    • -
    -

    tth = ArcTan2 [sqrt(t1**2 + t2**2) , t3 ]

    -

    Getting 2theta from it’s tangeant seems both more precise (around -beam stop very far from sample) and faster by about 25% Currently -there is a swich in the method to follow one path or the other.

    -
      -
    • Tangeant of angle chi is defined as (R.P component along x1) -over (R.P component along x2). Arctan2 should be used in actual -calculation
    • -
    -
    -

    chi = ArcTan[((R.P).x1) / ((R.P).x2)]

    -
    -
    chi = ArcTan2(d1*cos(rot2)*cos(rot3) + d2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) +
    -
    -
    L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)),
    -
    -
    d1*cos(rot2)*sin(rot3) + L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) +
    -
    d2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)))
    -
    -
    +
    +
    +pyFAI.average.average_images(listImages, output=None, threshold=0.1, minimum=None, maximum=None, darks=None, flats=None, filter_='mean', correct_flat_from_dark=False, cutoff=None, quantiles=None, fformat='edf', monitor_key=None)
    +
    +
    Takes a list of filenames and create an average frame discarding all
    +
    saturated pixels.
    -
    -
    -
    -array_from_unit(shape=None, typ='center', unit=2th_deg)
    -

    Generate an array of position in different dimentions (R, Q, -2Theta)

    - - -
    Parameters:
      -
    • shape (ndarray.shape) – shape of the expected array
    • -
    • typ (str) – “center”, “corner” or “delta”
    • -
    • unit (pyFAI.units.Enum) – can be Q, TTH, R for now
    • +
    • listImages – list of string representing the filenames
    • +
    • output – name of the optional output file
    • +
    • threshold – what is the upper limit? all pixel > max*(1-threshold) +are discareded.
    • +
    • minimum – minimum valid value or True
    • +
    • maximum – maximum valid value
    • +
    • darks – list of dark current images for subtraction
    • +
    • flats – list of flat field images for division
    • +
    • filter – can be “min”, “max”, “median”, “mean”, “sum”, “quantiles” +(default=’mean’)
    • +
    • correct_flat_from_dark – shall the flat be re-corrected ?
    • +
    • cutoff – keep all data where (I-center)/std < cutoff
    • +
    • quantiles – 2-tuple containing the lower and upper quantile (0<q<1) +to average out.
    • +
    • fformat – file format of the output image, default: edf
    • +
    • str (monitor_key) – Key containing the monitor. Can be none.
    Returns:

    R, Q or 2Theta array depending on unit

    -
    Return type:

    ndarray

    +
    Returns:

    filename with the data or the data ndarray in case format=None

    -
    -
    -calc_pos_zyx(d0=None, d1=None, d2=None, param=None, corners=False, use_cython=True)
    -

    Calculate the position of a set of points in space in the sample’s centers referential.

    -

    This is usually used for calculating the pixel position in space.

    +
    +
    +pyFAI.average.bounding_box(img)
    +

    Tries to guess the bounding box around a valid massif

    - + + +
    Parameters:
      -
    • d0 – altitude on the point compared to the detector (i.e. z), may be None
    • -
    • d1 – position on the detector along the slow dimention (i.e. y)
    • -
    • d2 – position on the detector along the fastest dimention (i.e. x)
    • -
    • corners – return positions on the corners (instead of center)
    • -
    -
    Parameters:img – 2D array like
    Returns:4-typle (d0_min, d1_min, d0_max, d1_max)
    -
    -
    :return 3-tuple of nd-array, with dim0=along the beam,
    -
    dim1=along slowest dimension -dim2=along fastest dimension
    -
    -
    -
    -calc_transmission(t0, shape=None)
    -

    Defines the absorption correction for a phosphor screen or a scintillator -from t0, the normal transmission of the screen.

    -
    -
    Icor = Iobs(1-t0)/(1-exp(ln(t0)/cos(incidence)))
    -
    1-exp(ln(t0)/cos(incidence)
    -
    let t = —————————–
    -
    1 - t0
    -
    -

    See reference on: -J. Appl. Cryst. (2002). 35, 356–359 G. Wu et al. CCD phosphor

    +
    +
    +pyFAI.average.common_prefix(string_list)
    +

    Return the common prefix of a list of strings

    +

    TODO: move it into utils package

    - + - +
    Parameters:
      -
    • t0 – value of the normal transmission (from 0 to 1)
    • -
    • shape – shape of the array
    • -
    -
    Parameters:string_list (list(str)) – List of strings
    Returns:

    actual

    -
    Return type:str
    -
    -
    -calcfrom1d(tth, I, shape=None, mask=None, dim1_unit=2th_deg, correctSolidAngle=True, dummy=0.0, polarization_factor=None, dark=None, flat=None)
    -

    Computes a 2D image from a 1D integrated profile

    +
    +
    +pyFAI.average.create_algorithm(filter_name, cut_off=None, quantiles=None)
    +

    Factory to create algorithm according to parameters

    - + + + + +
    Parameters:
      -
    • tth – 1D array with radial unit
    • -
    • I – scattering intensity
    • -
    • shape – shape of the image (if not defined by the detector)
    • -
    • dim1_unit – unit for the “tth” array
    • -
    • correctSolidAngle
    • -
    • dummy – value for masked pixels
    • -
    • polarization_factor – set to true to use previously used value
    • -
    • dark – dark current correction
    • -
    • flat – flatfield corrction
    • +
    • cutoff (float or None) – keep all data where (I-center)/std < cutoff
    • +
    • quantiles (tuple(float, float) or None) – 2-tuple of floats average out data between the two +quantiles
    Returns:

    2D image reconstructed

    +
    Returns:

    An algorithm

    +
    Return type:

    ImageReductionFilter

    +
    Raises AlgorithmCreationError:
     

    If it is not possible to create the +algorithm

    -
    -
    -center_array(shape=None, unit='2th')
    -

    Generate a 2D array of the given shape with (i,j) (radial -angle ) for all elements.

    - --- - - - - - -
    Parameters:shape (2-tuple of integer) – expected shape
    Returns:3d array with shape=(*shape,4,2) the two elements are: -* dim3[0]: radial angle 2th, q, r, ... -* dim3[1]: azimuthal angle chi
    +
    +
    +pyFAI.average.f
    +

    alias of SumAveraging

    -
    -
    -chi(d1, d2, path='cython')
    -

    Calculate the chi (azimuthal angle) for the centre of a pixel -at coordinate d1,d2 which in the lab ref has coordinate:

    -

    X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) -X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) -X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2) -hence tan(Chi) = X2 / X1

    +
    +
    +pyFAI.average.is_algorithm_name_exists(filter_name)
    +

    Return true if the name is a name of a filter algorithm

    +
    + +
    +
    +pyFAI.average.remove_saturated_pixel(ds, threshold=0.1, minimum=None, maximum=None)
    +

    Remove saturated fixes from an array inplace.

    -
    Parameters:
      -
    • d1 (float or array of them) – pixel coordinate along the 1st dimention (C convention)
    • -
    • d2 (float or array of them) – pixel coordinate along the 2nd dimention (C convention)
    • -
    • path – can be “tan” (i.e via numpy) or “cython”
    • +
    • ds – a dataset as ndarray
    • +
    • threshold (float) – what is the upper limit? +all pixel > max*(1-threshold) are discareded.
    • +
    • minimum (float) – minumum valid value (or True for auto-guess)
    • +
    • maximum (float) – maximum valid value
    Returns:

    chi, the azimuthal angle in rad

    +
    Returns:

    the input dataset

    +
    +
    +

    azimuthalIntegrator Module

    +
    +
    +class pyFAI.azimuthalIntegrator.AzimuthalIntegrator(dist=1, poni1=0, poni2=0, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None)
    +

    Bases: pyFAI.geometry.Geometry

    +

    This class is an azimuthal integrator based on P. Boesecke’s +geometry and histogram algorithm by Manolo S. del Rio and V.A Sole

    +

    All geometry calculation are done in the Geometry class

    +

    main methods are:

    +
    >>> tth, I = ai.integrate1d(data, npt, unit="2th_deg")
    +>>> q, I, sigma = ai.integrate1d(data, npt, unit="q_nm^-1", error_model="poisson")
    +>>> regrouped = ai.integrate2d(data, npt_rad, npt_azim, unit="q_nm^-1")[0]
    +
    +
    +
    +
    +DEFAULT_METHOD = 'splitbbox'
    +
    +
    -
    -chiArray(shape=None)
    -

    Generate an array of azimuthal angle chi(i,j) for all elements in the detector.

    -

    Azimuthal angles are in radians

    -

    Nota: Refers to the pixel centers !

    - +
    +__init__(dist=1, poni1=0, poni2=0, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None)
    +
    - - - +
    Parameters:shape – the shape of the chi array
    Returns:the chi array as numpy.ndarray
    Parameters:
      +
    • dist (float) – distance sample - detector plan (orthogonal distance, not along the beam), in meter.
    • +
    • poni1 (float) – coordinate of the point of normal incidence along the detector’s first dimension, in meter
    • +
    • poni2 (float) – coordinate of the point of normal incidence along the detector’s second dimension, in meter
    • +
    • rot1 (float) – first rotation from sample ref to detector’s ref, in radians
    • +
    • rot2 (float) – second rotation from sample ref to detector’s ref, in radians
    • +
    • rot3 (float) – third rotation from sample ref to detector’s ref, in radians
    • +
    • pixel1 (float) – Deprecated. Pixel size of the fist dimension of the detector, in meter. +If both pixel1 and pixel2 are not None, detector pixel size is overwritten. +Prefer defining the detector pixel size on the provided detector object. +Prefer defining the detector pixel size on the provided detector +object (detector.pixel1 = 5e-6).
    • +
    • pixel2 (float) – Deprecated. Pixel size of the second dimension of the detector, in meter. +If both pixel1 and pixel2 are not None, detector pixel size is overwritten. +Prefer defining the detector pixel size on the provided detector +object (detector.pixel2 = 5e-6).
    • +
    • splineFile (str) – Deprecated. File containing the geometric distortion of the detector. +If not None, pixel1 and pixel2 are ignored and detector spline is overwritten. +Prefer defining the detector spline manually +(detector.splineFile = "file.spline").
    • +
    • detector (str or pyFAI.Detector) – name of the detector or Detector instance. String +description is deprecated. Prefer using the result of the detector +factory: pyFAI.detector_factory("eiger4m")
    • +
    • wavelength (float) – Wave length used in meter
    • +
    +
    -
    -chi_corner(d1, d2)
    -

    Calculate the chi (azimuthal angle) for the corner of a pixel -at coordinate d1,d2 which in the lab ref has coordinate:

    -

    X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) -X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) -X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2) -hence tan(Chi) = X2 / X1

    +
    +create_mask(data, mask=None, dummy=None, delta_dummy=None, mode='normal')
    +

    Combines various masks into another one.

    - + +
    Parameters:
      -
    • d1 (float or array of them) – pixel coordinate along the 1st dimention (C convention)
    • -
    • d2 (float or array of them) – pixel coordinate along the 2nd dimention (C convention)
    • +
    • data (ndarray) – input array of data
    • +
    • mask (ndarray) – input mask (if none, self.mask is used)
    • +
    • dummy (float) – value of dead pixels
    • +
    • delta_dumy – precision of dummy pixels
    • +
    • mode (str) – can be “normal” or “numpy” (inverted) or “where” applied to the mask
    Returns:

    chi, the azimuthal angle in rad

    +
    Returns:

    the new mask

    +
    Return type:

    ndarray of bool

    -
    - -
    -
    -chia
    -

    chi array in cache

    -
    - -
    -
    -cornerArray(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    - -
    -
    -cornerQArray(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    - -
    -
    -cornerRArray(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    - -
    -
    -cornerRd2Array(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +

    This method combine two masks (dynamic mask from data & +dummy and mask) to generate a new one with the ‘or’ binary +operation. One can adjust the level, with the dummy and +the delta_dummy parameter, when you consider the data +values needs to be masked out.

    +

    This method can work in two different mode:

    +
    +
      +
    • “normal”: False for valid pixels, True for bad pixels
    • +
    • “numpy”: True for valid pixels, false for others
    • +
    +
    +

    This method tries to accomodate various types of masks (like +valid=0 & masked=-1, ...) and guesses if an input mask needs +to be inverted.

    -
    -corner_array(shape=None, unit='2th', use_cython=True)
    -

    Generate a 3D array of the given shape with (i,j) (radial -angle 2th, azimuthal angle chi ) for all elements.

    +
    +dark_correction(data, dark=None)
    +

    Correct for Dark-current effects. +If dark is not defined, correct for a dark set by “set_darkfiles”

    - + - +
    Parameters:shape (2-tuple of integer) – expected shape
    Parameters:
      +
    • data – input ndarray with the image
    • +
    • dark – ndarray with dark noise or None
    • +
    +
    Returns:3d array with shape=(*shape,4,2) the two elements are: -* dim3[0]: radial angle 2th, q, r, ... -* dim3[1]: azimuthal angle chi
    Returns:

    2tuple: corrected_data, dark_actually used (or None)

    +
    -
    -correct_SA_spline
    +
    +darkcurrent
    +
    + +
    +
    +empty
    -
    -cosIncidance(d1, d2, path='cython')
    -

    Calculate the incidence angle (alpha) for current pixels (P). -The poni being the point of normal incidence, -it’s incidence angle is ${alpha} = 0$ hence $cos({alpha}) = 1$

    +
    +flat_correction(data, flat=None)
    +

    Correct for flat field. +If flat is not defined, correct for a flat set by “set_flatfiles”

    -
    Parameters:
      -
    • d1 – 1d or 2d set of points in pixel coord
    • -
    • d2 – 1d or 2d set of points in pixel coord
    • +
    • data – input ndarray with the image
    • +
    • dark – ndarray with dark noise or None
    Returns:

    cosine of the incidence angle

    +
    Returns:

    2tuple: corrected_data, flat_actually used (or None)

    -
    -
    -del_chia()
    -
    - -
    -
    -del_dssa()
    +
    +
    +flatfield
    -
    -del_qa()
    +
    +get_darkcurrent()
    -
    -del_ra()
    +
    +get_empty()
    -
    -del_ttha()
    +
    +get_flatfield()
    -
    -delta2Theta(shape=None)
    -

    Generate a 3D array of the given shape with (i,j) with the max -distance between the center and any corner in 2 theta

    +
    +integrate1d(data, npt, filename=None, correctSolidAngle=True, variance=None, error_model=None, radial_range=None, azimuth_range=None, mask=None, dummy=None, delta_dummy=None, polarization_factor=None, dark=None, flat=None, method='csr', unit=q_nm^-1, safe=True, normalization_factor=1.0, block_size=32, profile=False, all=False)
    +

    Calculate the azimuthal integrated Saxs curve in q(nm^-1) by default

    +

    Multi algorithm implementation (tries to be bullet proof), suitable for SAXS, WAXS, ... and much more

    - - - + - -
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:2D-array containing the max delta angle between a pixel center and any corner in 2theta-angle (rad)
    Parameters:
      +
    • data (ndarray) – 2D array from the Detector/CCD camera
    • +
    • npt (int) – number of points in the output pattern
    • +
    • filename (str) – output filename in 2/3 column ascii format
    • +
    • correctSolidAngle (bool) – correct for solid angle of each pixel if True
    • +
    • variance (ndarray) – array containing the variance of the data. If not available, no error propagation is done
    • +
    • error_model (str) – When the variance is unknown, an error model can be given: “poisson” (variance = I), “azimuthal” (variance = (I-<I>)^2)
    • +
    • radial_range ((float, float), optional) – The lower and upper range of the radial unit. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • +
    • azimuth_range ((float, float), optional) – The lower and upper range of the azimuthal angle in degree. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • +
    • mask (ndarray) – array (same size as image) with 1 for masked pixels, and 0 for valid pixels
    • +
    • dummy (float) – value for dead/masked pixels
    • +
    • delta_dummy (float) – precision for dummy value
    • +
    • polarization_factor (float) – polarization factor between -1 (vertical) and +1 (horizontal). +0 for circular polarization or random, +None for no correction, +True for using the former correction
    • +
    • dark (ndarray) – dark noise image
    • +
    • flat (ndarray) – flat field image
    • +
    • method (str) – can be “numpy”, “cython”, “BBox” or “splitpixel”, “lut”, “csr”, “nosplit_csr”, “full_csr”, “lut_ocl” and “csr_ocl” if you want to go on GPU. To Specify the device: “csr_ocl_1,2”
    • +
    • unit (pyFAI.units.Enum) – Output units, can be “q_nm^-1”, “q_A^-1”, “2th_deg”, “2th_rad”, “r_mm” for now
    • +
    • safe (bool) – Do some extra checks to ensure LUT/CSR is still valid. False is faster.
    • +
    • normalization_factor (float) – Value of a normalization monitor
    • +
    • block_size – size of the block for OpenCL integration (unused?)
    • +
    • profile – set to True to enable profiling in OpenCL
    • +
    • all (bool) – if true return a dictionary with many more parameters (deprecated, please refer to the documentation of Integrate1dResult).
    • +
    +
    -
    - -
    -
    -deltaChi(shape=None)
    -

    Generate a 3D array of the given shape with (i,j) with the max -distance between the center and any corner in chi-angle (rad)

    - --- - + - +
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:

    q/2th/r bins center positions and regrouped intensity (and error array if variance or variance model provided), uneless all==True.

    +
    Returns:2D-array containing the max delta angle between a pixel center and any corner in chi-angle (rad)
    Return type:

    Integrate1dResult, dict

    +
    -
    -deltaQ(shape=None)
    -

    Generate a 2D array of the given shape with (i,j) with the max -distance between the center and any corner in q_vector unit -(nm^-1)

    +
    +integrate2d(data, npt_rad, npt_azim=360, filename=None, correctSolidAngle=True, variance=None, error_model=None, radial_range=None, azimuth_range=None, mask=None, dummy=None, delta_dummy=None, polarization_factor=None, dark=None, flat=None, method='bbox', unit=q_nm^-1, safe=True, normalization_factor=1.0, all=False)
    +

    Calculate the azimuthal regrouped 2d image in q(nm^-1)/chi(deg) by default

    +

    Multi algorithm implementation (tries to be bullet proof)

    - - - + + + + +
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:array 2D containing the max delta Q between a pixel center and any corner in q_vector unit (nm^-1)
    Parameters:
      +
    • data (ndarray) – 2D array from the Detector/CCD camera
    • +
    • npt_rad (int) – number of points in the radial direction
    • +
    • npt_azim (int) – number of points in the azimuthal direction
    • +
    • filename (str) – output image (as edf format)
    • +
    • correctSolidAngle (bool) – correct for solid angle of each pixel if True
    • +
    • variance (ndarray) – array containing the variance of the data. If not available, no error propagation is done
    • +
    • error_model (str) – When the variance is unknown, an error model can be given: “poisson” (variance = I), “azimuthal” (variance = (I-<I>)^2)
    • +
    • radial_range ((float, float), optional) – The lower and upper range of the radial unit. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • +
    • azimuth_range ((float, float), optional) – The lower and upper range of the azimuthal angle in degree. If not provided, range is simply (data.min(), data.max()). Values outside the range are ignored.
    • +
    • mask (ndarray) – array (same size as image) with 1 for masked pixels, and 0 for valid pixels
    • +
    • dummy (float) – value for dead/masked pixels
    • +
    • delta_dummy (float) – precision for dummy value
    • +
    • polarization_factor (float) – polarization factor between -1 (vertical) and +1 (horizontal). 0 for circular polarization or random, None for no correction
    • +
    • dark (ndarray) – dark noise image
    • +
    • flat (ndarray) – flat field image
    • +
    • method (str) – can be “numpy”, “cython”, “BBox” or “splitpixel”, “lut”, “csr; “lut_ocl” and “csr_ocl” if you want to go on GPU. To Specify the device: “csr_ocl_1,2”
    • +
    • unit (pyFAI.units.Enum) – Output units, can be “q_nm^-1”, “q_A^-1”, “2th_deg”, “2th_rad”, “r_mm” for now
    • +
    • safe (bool) – Do some extra checks to ensure LUT is still valid. False is faster.
    • +
    • normalization_factor (float) – Value of a normalization monitor
    • +
    • all (bool) – if true, return many more intermediate results as a dict (deprecated, please refer to the documentation of Integrate2dResult).
    • +
    +
    Returns:

    azimuthaly regrouped intensity, q/2theta/r pos. and chi pos.

    +
    Return type:

    Integrate2dResult, dict

    +
    -
    -deltaR(shape=None)
    -

    Generate a 2D array of the given shape with (i,j) with the max -distance between the center and any corner in radius unit (mm)

    - +
    +reset()
    +

    Reset azimuthal integrator in addition to other arrays.

    +
    + +
    +
    +save1D(filename, dim1, I, error=None, dim1_unit=2th_deg, has_dark=False, has_flat=False, polarization_factor=None, normalization_factor=None)
    +
    - - - +
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:array 2D containing the max delta Q between a pixel center and any corner in q_vector unit (nm^-1)
    Parameters:
      +
    • filename (str) – the filename used to save the 1D integration
    • +
    • dim1 (numpy.ndarray) – the x coordinates of the integrated curve
    • +
    • I (numpy.mdarray) – The integrated intensity
    • +
    • error (numpy.ndarray or None) – the error bar for each intensity
    • +
    • dim1_unit (pyFAI.units.Unit) – the unit of the dim1 array
    • +
    • has_dark (bool) – save the darks filenames (default: no)
    • +
    • has_flat (bool) – save the flat filenames (default: no)
    • +
    • polarization_factor (float) – the polarization factor
    • +
    • normalization_factor (float) – the monitor value
    • +
    +
    +

    This method save the result of a 1D integration.

    -
    -deltaRd2(shape=None)
    -

    Generate a 2D array of the given shape with (i,j) with the max -distance between the center and any corner in unit: reciprocal spacing squarred (1/nm^2)

    - +
    +save2D(filename, I, dim1, dim2, error=None, dim1_unit=2th_deg, has_dark=False, has_flat=False, polarization_factor=None, normalization_factor=None)
    +
    - - - +
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:array 2D containing the max delta (d*)^2 between a pixel center and any corner in reciprocal spacing squarred (1/nm^2)
    Parameters:
      +
    • filename (str) – the filename used to save the 2D histogram
    • +
    • dim1 (numpy.ndarray) – the 1st coordinates of the histogram
    • +
    • dim1 – the 2nd coordinates of the histogram
    • +
    • I (numpy.mdarray) – The integrated intensity
    • +
    • error (numpy.ndarray or None) – the error bar for each intensity
    • +
    • dim1_unit (pyFAI.units.Unit) – the unit of the dim1 array
    • +
    • has_dark (bool) – save the darks filenames (default: no)
    • +
    • has_flat (bool) – save the flat filenames (default: no)
    • +
    • polarization_factor (float) – the polarization factor
    • +
    • normalization_factor (float) – the monitor value
    • +
    +
    +

    This method save the result of a 2D integration.

    -
    -delta_array(shape=None, unit='2th')
    -

    Generate a 2D array of the given shape with (i,j) (delta-radial -angle) for all elements.

    +
    +saxs(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    + +
    +
    +separate(data, npt_rad=1024, npt_azim=512, unit='2th_deg', method='splitpixel', percentile=50, mask=None, restore_mask=True)
    +

    Separate bragg signal from powder/amorphous signal using azimuthal integration, +median filering and projected back before subtraction.

    - + - +
    Parameters:shape (2-tuple of integer) – expected shape
    Parameters:
      +
    • data – input image as numpy array
    • +
    • npt_rad – number of radial points
    • +
    • npt_azim – number of azimuthal points
    • +
    • unit – unit to be used for integration
    • +
    • method – pathway for integration and sort
    • +
    • percentile – which percentile use for cutting out
    • +
    • mask – masked out pixels array
    • +
    • restore_mask – masked pixels have the same value as input data provided
    • +
    +
    Returns:3d array with shape=(*shape,4,2) the two elements are: -* dim3[0]: radial angle 2th, q, r, ... -* dim3[1]: azimuthal angle chi
    Returns:

    bragg, amorphous

    +
    -
    -diffSolidAngle(d1, d2)
    -

    Calculate the solid angle of the current pixels (P) versus the PONI (C)

    -
    -
    Omega(P) A cos(a) SC^2 3 SC^3
    -
    -
    dOmega = ——— = ——— x ——— = cos (a) = ——
    -
    Omega(C) SP^2 A cos(0) SP^3
    -
    -

    cos(a) = SC/SP

    - +
    +set_darkcurrent(dark)
    +
    + +
    +
    +set_darkfiles(files=None, method='mean')
    +
    - - -
    Parameters:
      -
    • d1 – 1d or 2d set of points
    • -
    • d2 – 1d or 2d set of points (same size&shape as d1)
    • +
    Parameters:
      +
    • files (str or list(str) or None) – file(s) used to compute the dark.
    • +
    • method (str) – method used to compute the dark, “mean” or “median”
    Returns:

    solid angle correction array

    -
    +

    Set the dark current from one or mutliple files, avaraged +according to the method provided

    -
    -
    -dist
    +
    +
    +set_empty(value)
    -
    -
    -dssa
    -

    solid angle array in cache

    -
    +
    +
    +set_flatfield(flat)
    +
    -
    -getFit2D()
    -

    Export geometry setup with the geometry of Fit2D

    - +
    +set_flatfiles(files, method='mean')
    +
    - +
    Returns:dict with parameters compatible with fit2D geometry
    Parameters:
      +
    • files (str or list(str) or None) – file(s) used to compute the dark.
    • +
    • method (str) – method used to compute the dark, “mean” or “median”
    • +
    +
    +

    Set the flat field from one or mutliple files, averaged +according to the method provided

    -
    -getPyFAI()
    -

    Export geometry setup with the geometry of PyFAI

    +
    +setup_CSR(shape, npt, mask=None, pos0_range=None, pos1_range=None, mask_checksum=None, unit=2th_deg, split='bbox')
    +

    Prepare a look-up-table

    - +
    Returns:dict with the parameter-set of the PyFAI geometry
    Parameters:
      +
    • shape ((int, int)) – shape of the dataset
    • +
    • npt (int or (int, int)) – number of points in the the output pattern
    • +
    • mask (ndarray) – array with masked pixel (1=masked)
    • +
    • pos0_range ((float, float)) – range in radial dimension
    • +
    • pos1_range ((float, float)) – range in azimuthal dimension
    • +
    • mask_checksum (int (or anything else ...)) – checksum of the mask buffer
    • +
    • unit (pyFAI.units.Enum) – use to propagate the LUT object for further checkings
    • +
    • split – Splitting scheme: valid options are “no”, “bbox”, “full”
    • +
    +
    +

    This method is called when a look-up table needs to be set-up. +The shape parameter, correspond to the shape of the original +datatset. It is possible to customize the number of point of +the output histogram with the npt parameter which can be +either an integer for an 1D integration or a 2-tuple of +integer in case of a 2D integration. The LUT will have a +different shape: (npt, lut_max_size), the later parameter +being calculated during the instanciation of the splitBBoxLUT +class.

    +

    It is possible to prepare the LUT with a predefine +mask. This operation can speedup the computation of the +later integrations. Instead of applying the patch on the +dataset, it is taken into account during the histogram +computation. If provided the mask_checksum prevent the +re-calculation of the mask. When the mask changes, its +checksum is used to reset (or not) the LUT (which is a very +time consuming operation !)

    +

    It is also possible to restrain the range of the 1D or 2D +pattern with the pos1_range and pos2_range.

    +

    The unit parameter is just propagated to the LUT integrator +for further checkings: The aim is to prevent an integration to +be performed in 2th-space when the LUT was setup in q space.

    -
    -getSPD()
    -

    get the SPD like parameter set: For geometry description see -Peter Boesecke J.Appl.Cryst.(2007).40, s423–s427

    -

    Basically the main difference with pyFAI is the order of the axis which are flipped

    +
    +setup_LUT(shape, npt, mask=None, pos0_range=None, pos1_range=None, mask_checksum=None, unit=2th_deg)
    +

    Prepare a look-up-table

    - +
    Returns:dictionnary with those parameters: -SampleDistance: distance from sample to detector at the PONI (orthogonal projection) -Center_1, pixel position of the PONI along fastest axis -Center_2: pixel position of the PONI along slowest axis -Rot_1: rotation around the fastest axis (x) -Rot_2: rotation around the slowest axis (y) -Rot_3: rotation around the axis ORTHOGONAL to the detector plan -PSize_1: pixel size in meter along the fastest dimention -PSize_2: pixel size in meter along the slowst dimention -splineFile: name of the file containing the spline -BSize_1: pixel binning factor along the fastest dimention -BSize_2: pixel binning factor along the slowst dimention -WaveLength: wavelength used in meter
    Parameters:
      +
    • shape ((int, int)) – shape of the dataset
    • +
    • npt (int or (int, int)) – number of points in the the output pattern
    • +
    • mask (ndarray) – array with masked pixel (1=masked)
    • +
    • pos0_range ((float, float)) – range in radial dimension
    • +
    • pos1_range ((float, float)) – range in azimuthal dimension
    • +
    • mask_checksum (int (or anything else ...)) – checksum of the mask buffer
    • +
    • unit (pyFAI.units.Enum) – use to propagate the LUT object for further checkings
    • +
    +
    +

    This method is called when a look-up table needs to be set-up. +The shape parameter, correspond to the shape of the original +datatset. It is possible to customize the number of point of +the output histogram with the npt parameter which can be +either an integer for an 1D integration or a 2-tuple of +integer in case of a 2D integration. The LUT will have a +different shape: (npt, lut_max_size), the later parameter +being calculated during the instanciation of the splitBBoxLUT +class.

    +

    It is possible to prepare the LUT with a predefine +mask. This operation can speedup the computation of the +later integrations. Instead of applying the patch on the +dataset, it is taken into account during the histogram +computation. If provided the mask_checksum prevent the +re-calculation of the mask. When the mask changes, its +checksum is used to reset (or not) the LUT (which is a very +time consuming operation !)

    +

    It is also possible to restrain the range of the 1D or 2D +pattern with the pos1_range and pos2_range.

    +

    The unit parameter is just propagated to the LUT integrator +for further checkings: The aim is to prevent an integration to +be performed in 2th-space when the LUT was setup in q space.

    -
    -get_chia()
    -
    +
    +xrpd(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_correct_solid_angle_for_spline()
    -
    - -
    -
    -get_dist()
    -
    - -
    -
    -get_dssa()
    -
    - -
    -
    -get_mask()
    -
    +
    +xrpd2(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_maskfile()
    -
    +
    +xrpd2_histogram(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_pixel1()
    -
    +
    +xrpd2_numpy(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_pixel2()
    -
    +
    +xrpd2_splitBBox(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_poni1()
    -
    +
    +xrpd2_splitPixel(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_poni2()
    -
    +
    +xrpd_CSR_OCL(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_qa()
    -
    +
    +xrpd_LUT(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_ra()
    -
    +
    +xrpd_LUT_OCL(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_rot1()
    -
    +
    +xrpd_OpenCL(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_rot2()
    -
    +
    +xrpd_cython(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_rot3()
    -
    +
    +xrpd_numpy(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -get_shape(shape=None)
    -

    Guess what is the best shape .... -:param shape: force this value (2-tuple of int) -:return: 2-tuple of int

    +
    +xrpd_splitBBox(*arg, **kw)
    +

    decorator that deprecates the use of a function

    -
    -get_spline()
    -
    +
    +xrpd_splitPixel(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -
    -get_splineFile()
    -
    + +
    +
    +

    multi_geometry Module

    +

    Module for treating simultaneously multiple detector configuration +within a single integration

    +
    +
    +class pyFAI.multi_geometry.MultiGeometry(ais, unit='2th_deg', radial_range=(0, 180), azimuth_range=(-180, 180), wavelength=None, empty=0.0, chi_disc=180)
    +

    Bases: object

    +

    This is an Azimuthal integrator containing multiple geometries (when +the detector is on a goniometer arm)

    -
    -get_ttha()
    -
    +
    +__init__(ais, unit='2th_deg', radial_range=(0, 180), azimuth_range=(-180, 180), wavelength=None, empty=0.0, chi_disc=180)
    +

    Constructor of the multi-geometry integrator +:param ais: list of azimuthal integrators +:param radial_range: common range for integration +:param azimuthal_range: common range for integration +:param empty: value for empty pixels +:param chi_disc: if 0, set the chi_discontinuity at

    +
    -
    -get_wavelength()
    -
    +
    +integrate1d(lst_data, npt=1800, correctSolidAngle=True, lst_variance=None, error_model=None, polarization_factor=None, monitors=None, all=False, lst_mask=None, lst_flat=None)
    +

    Perform 1D azimuthal integration

    + +++ + + + + + + + +
    Parameters:
      +
    • lst_data – list of numpy array
    • +
    • npt – number of points int the integration
    • +
    • correctSolidAngle – correct for solid angle (all processing are then done in absolute solid angle !)
    • +
    • lst_variance (list of ndarray) – list of array containing the variance of the data. If not available, no error propagation is done
    • +
    • error_model (str) – When the variance is unknown, an error model can be given: “poisson” (variance = I), “azimuthal” (variance = (I-<I>)^2)
    • +
    • polarization_factor – Apply polarization correction ? is None: not applies. Else provide a value from -1 to +1
    • +
    • monitors – normalization monitors value (list of floats)
    • +
    • all – return a dict with all information in it (deprecated, please refer to the documentation of Integrate1dResult).
    • +
    • lst_mask – numpy.Array or list of numpy.array which mask the lst_data.
    • +
    • lst_flat – numpy.Array or list of numpy.array which flat the lst_data.
    • +
    +
    Returns:

    2th/I or a dict with everything depending on “all”

    +
    Return type:

    Integrate1dResult, dict

    +
    +
    -
    -load(filename)
    -

    Load the refined parameters from a file.

    +
    +integrate2d(lst_data, npt_rad=1800, npt_azim=3600, correctSolidAngle=True, lst_variance=None, error_model=None, polarization_factor=None, monitors=None, all=False, lst_mask=None, lst_flat=None)
    +

    Performs 2D azimuthal integration of multiples frames, one for each geometry

    - + + + + +
    Parameters:filename (string) – name of the file to load
    Parameters:
      +
    • lst_data – list of numpy array
    • +
    • npt – number of points int the integration
    • +
    • correctSolidAngle – correct for solid angle (all processing are then done in absolute solid angle !)
    • +
    • lst_variance (list of ndarray) – list of array containing the variance of the data. If not available, no error propagation is done
    • +
    • error_model (str) – When the variance is unknown, an error model can be given: “poisson” (variance = I), “azimuthal” (variance = (I-<I>)^2)
    • +
    • polarization_factor – Apply polarization correction ? is None: not applies. Else provide a value from -1 to +1
    • +
    • monitors – normalization monitors value (list of floats)
    • +
    • all – return a dict with all information in it (deprecated, please refer to the documentation of Integrate2dResult).
    • +
    • lst_mask – numpy.Array or list of numpy.array which mask the lst_data.
    • +
    • lst_flat – numpy.Array or list of numpy.array which flat the lst_data.
    • +
    +
    Returns:

    I/2th/chi or a dict with everything depending on “all”

    +
    Return type:

    Integrate2dResult, dict

    +
    -
    -
    -mask
    -
    +
    +
    +set_wavelength(value)
    +

    Changes the wavelength of a group of azimuthal integrators

    +
    + + +
    +
    +

    integrate_widget Module

    +

    pyFAI-integrate

    +

    A graphical tool for performing azimuthal integration on series of files.

    +
    +
    +class pyFAI.integrate_widget.AIWidget(input_data=None, output_path=None, output_format=None, slow_dim=None, fast_dim=None, json_file='.azimint.json')
    +

    Bases: PyQt4.QtGui.QWidget

    -
    -maskfile
    +
    +URL = 'http://pyfai.readthedocs.org/en/latest/man/pyFAI-integrate.html'
    -
    -oversampleArray(myarray)
    +
    +__init__(input_data=None, output_path=None, output_format=None, slow_dim=None, fast_dim=None, json_file='.azimint.json')
    -
    -
    -pixel1
    +
    +
    +assign_unit()
    +

    assign unit to the corresponding widget

    +
    + +
    +
    +detector_changed()
    -
    -
    -pixel2
    +
    +
    +die()
    -
    -polarization(shape=None, factor=None, axis_offset=0)
    -

    Calculate the polarization correction accoding to the -polarization factor:

    -
      -
    • If the polarization factor is None, the correction is not applied (returns 1)
    • -
    • If the polarization factor is 0 (circular polarization), the correction correspond to (1+(cos2θ)^2)/2
    • -
    • If the polarization factor is 1 (linear horizontal polarization), there is no correction in the vertical plane and a node at 2th=90, chi=0
    • -
    • If the polarization factor is -1 (linear vertical polarization), there is no correction in the horizontal plane and a node at 2th=90, chi=90
    • -
    • If the polarization is elliptical, the polarization factor varies between -1 and +1.
    • -
    -

    The axis_offset parameter allows correction for the misalignement of the polarization plane (or ellipse main axis) and the the detector’s X axis.

    +
    +dump(filename=None)
    +

    Dump the status of the current widget to a file in JSON

    - + - +
    Parameters:
      -
    • factor – (Ih-Iv)/(Ih+Iv): varies between 0 (no polarization) and 1 (where division by 0 could occure at 2th=90, chi=0)
    • -
    • axis_offset – Angle between the polarization main axis and detector X direction (in radians !!!)
    • -
    -
    Parameters:filename (string) – path where to save the config
    Returns:

    2D array with polarization correction array (intensity/polarisation)

    -
    Returns:dict with configuration
    -
    -
    -poni1
    -
    - -
    -
    -poni2
    -
    -
    -
    -positionArray(shape=None, corners=False, dtype=<type 'numpy.float64'>)
    -

    Generate an array for the pixel position given the shape of the detector.

    -

    if corners is False, the coordinates of the center of the pixel -is returned in an array of shape: (shape[0], shape[1], 3) -where the 3 coordinates are: -* z: along incident beam, -* y: to the top/sky, -* x: towards the center of the ring

    -

    If is True, the corner of each pixels are then returned. -the output shape is then (shape[0], shape[1], 4, 3)

    +
    +get_config()
    +

    Read the configuration of the plugin and returns it as a dictionary

    - - - +
    Parameters:
      -
    • shape – shape of the array expected
    • -
    • corners – set to true to receive a (...,4,3) array of corner positions
    • -
    • dtype – output format requested
    • -
    -
    Returns:

    3D coodinates as nd-array of size (...,3) or (...,3) (default)

    -
    Returns:dict with all information.
    -

    Nota: this value is not cached and actually generated on demand (costly)

    -
    -qArray(shape=None)
    -

    Generate an array of the given shape with q(i,j) for all -elements.

    +
    +get_method()
    +

    Return the method name for azimuthal intgration

    -
    -qCornerFunct(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    - +
    +help()
    +
    +
    -
    -qFunction(d1, d2, param=None, path='cython')
    -

    Calculates the q value for the center of a given pixel (or set -of pixels) in nm-1

    -

    q = 4pi/lambda sin( 2theta / 2 )

    +
    +openCL_changed()
    +
    + +
    +
    +platform_changed()
    +
    + +
    +
    +proceed()
    +
    + +
    +
    +restore(filename='.azimint.json')
    +

    Restore from JSON file the status of the current widget

    - - - - - +
    Parameters:
      -
    • d1 (scalar or array of scalar) – position(s) in pixel in first dimension (c order)
    • -
    • d2 (scalar or array of scalar) – position(s) in pixel in second dimension (c order)
    • -
    -
    Returns:

    q in in nm^(-1)

    -
    Return type:

    float or array of floats.

    -
    Parameters:filename (str) – path where the config was saved
    -
    -
    -qa
    -

    Q array in cache

    -
    +
    +
    +save_config()
    +
    -
    -rArray(shape=None)
    -

    Generate an array of the given shape with r(i,j) for all elements; -The radius r being in meters.

    +
    +select_darkcurrent()
    +
    + +
    +
    +select_flatfield()
    +
    + +
    +
    +select_maskfile()
    +
    + +
    +
    +select_ponifile()
    +
    + +
    +
    +select_splinefile()
    +
    + +
    +
    +setStackDataObject(stack, stack_name=None)
    +
    + +
    +
    +set_config(dico)
    +

    Setup the widget from its description

    - - - +
    Parameters:shape – expected shape of the detector
    Returns:2d array of the given shape with radius in m from beam center on detector.
    Parameters:dico (dict) – dictionary with description of the widget
    -
    -rCornerFunct(*arg, **kw)
    -

    decorator that deprecates the use of a function

    +
    +set_input_data(stack, stack_name=None)
    +
    + +
    +
    +set_ponifile(ponifile=None)
    +
    + +
    +
    +set_validators()
    +

    Set all validators for text entries

    +
    + +
    + +
    +
    +

    geometry Module

    +

    This modules contrains only one (large) class in charge of:

    +
      +
    • calculating the geometry, i.e. the position in the detector space of each pixel of the detector
    • +
    • manages caches to store intermediate results
    • +
    +
    +
    +class pyFAI.geometry.Geometry(dist=1, poni1=0, poni2=0, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None)
    +

    Bases: object

    +

    This class is an azimuthal integrator based on P. Boesecke’s geometry and +histogram algorithm by Manolo S. del Rio and V.A Sole

    +

    Detector is assumed to be corrected from “raster orientation” effect. +It is not addressed here but rather in the Detector object or at read time. +Considering there is no tilt:

    +
      +
    • Detector fast dimension (dim2) is supposed to be horizontal +(dimension X of the image)
    • +
    • Detector slow dimension (dim1) is supposed to be vertical, upwards +(dimension Y of the image)
    • +
    • The third dimension is chose such as the referential is +orthonormal, so dim3 is along incoming X-ray beam
    • +
    +

    Demonstration of the equation done using Mathematica:

    +
    Axis 1 is allong first dimension of detector (when not tilted), this is the slow dimension of the image array in C or Y
    +In[5]:= x1={1,0,0}
    +Out[5]= {1,0,0}
    + Axis 2 is allong second dimension of detector (when not tilted), this is the fast dimension of the image in C or X
    +In[6]:= x2={0,1,0}
    +Out[6]= {0,1,0}
    +Axis 3 is along the incident X-Ray beam
    +In[7]:= x3={0,0,1}
    +Out[7]= {0,0,1}
    +In[9]:= id3={x1,x2,x3}
    +Out[9]= {{1,0,0},{0,1,0},{0,0,1}}
    +In[10]:= {{1,0,0},{0,1,0},{0,0,1}}
    +Out[10]= {{1,0,0},{0,1,0},{0,0,1}}
    +In[11]:= rotM1=RotationMatrix[rot1,x1]
    +Out[11]= {{1,0,0},{0,Cos[rot1],-Sin[rot1]},{0,Sin[rot1],Cos[rot1]}}
    +In[12]:= rotM2 =  RotationMatrix[rot2,x2]
    +Out[12]= {{Cos[rot2],0,Sin[rot2]},{0,1,0},{-Sin[rot2],0,Cos[rot2]}}
    +In[13]:= rotM3 =  RotationMatrix[rot3,x3]
    +Out[13]= {{Cos[rot3],-Sin[rot3],0},{Sin[rot3],Cos[rot3],0},{0,0,1}}
    +Rotations of the detector are applied first Rot around axis 1, then axis 2 and finally around axis 3
    +In[14]:= R=rotM3.rotM2.rotM1
    +Out[14]= {{Cos[rot2] Cos[rot3],Cos[rot3] Sin[rot1] Sin[rot2]-Cos[rot1] Sin[rot3],Cos[rot1] Cos[rot3] Sin[rot2]+Sin[rot1] Sin[rot3]},{Cos[rot2] Sin[rot3],Cos[rot1] Cos[rot3]+Sin[rot1] Sin[rot2] Sin[rot3],-Cos[rot3] Sin[rot1]+Cos[rot1] Sin[rot2] Sin[rot3]},{-Sin[rot2],Cos[rot2] Sin[rot1],Cos[rot1] Cos[rot2]}}
    +In[15]:= CForm[R.x1]
    +
    +Out[15]//CForm=
    +List(Cos(rot2)*Cos(rot3),Cos(rot2)*Sin(rot3),-Sin(rot2))
    +In[16]:= CForm[R.x2]
    +
    +Out[16]//CForm=
    +List(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3),Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3),Cos(rot2)*Sin(rot1))
    +In[17]:= CForm[R.x3]
    +Out[17]//CForm=
    +List(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3),-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3),Cos(rot1)*Cos(rot2))
    +In[18]:= CForm[Det[R]]
    +Out[18]//CForm=
    +Power(Cos(rot1),2)*Power(Cos(rot2),2)*Power(Cos(rot3),2) + Power(Cos(rot2),2)*Power(Cos(rot3),2)*Power(Sin(rot1),2) + Power(Cos(rot1),2)*Power(Cos(rot3),2)*Power(Sin(rot2),2) + 
    +   Power(Cos(rot3),2)*Power(Sin(rot1),2)*Power(Sin(rot2),2) + Power(Cos(rot1),2)*Power(Cos(rot2),2)*Power(Sin(rot3),2) + Power(Cos(rot2),2)*Power(Sin(rot1),2)*Power(Sin(rot3),2) + 
    +   Power(Cos(rot1),2)*Power(Sin(rot2),2)*Power(Sin(rot3),2) + Power(Sin(rot1),2)*Power(Sin(rot2),2)*Power(Sin(rot3),2)
    +In[13]:=
    +Any pixel on detector plan at coordianate (d1, d2) in meters. Detector is at z=L
    +
    +In[22]:= P={d1,d2,L}
    +CForm[R.P]
    +
    +Out[22]= {d1,d2,L}
    +Out[23]//CForm=
    +List(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),
    +   d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2))
    +In[24]:= t1 = R.P.x1
    +CForm[t1]
    +Out[24]= d1 Cos[rot2] Cos[rot3]+d2 (Cos[rot3] Sin[rot1] Sin[rot2]-Cos[rot1] Sin[rot3])+L (Cos[rot1] Cos[rot3] Sin[rot2]+Sin[rot1] Sin[rot3])
    +Out[25]//CForm=
    +d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))
    +In[26]:= t2 = R.P.x2
    +CForm[t2]
    +Out[26]= d1 Cos[rot2] Sin[rot3]+L (-Cos[rot3] Sin[rot1]+Cos[rot1] Sin[rot2] Sin[rot3])+d2 (Cos[rot1] Cos[rot3]+Sin[rot1] Sin[rot2] Sin[rot3])
    +Out[27]//CForm=
    +d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3))
    +In[28]:= t3=R.P.x3
    +CForm[t3]
    +Out[28]= L Cos[rot1] Cos[rot2]+d2 Cos[rot2] Sin[rot1]-d1 Sin[rot2]
    +Out[29]//CForm=
    +L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2)
    +Distance sample to detector point (d1,d2)
    +(no Mathematica translations)
    +GraphicsBox[
    +TagBox[RasterBox[CompressedData["
    +1:eJxtUstqU1EUDY2iUdSOnBcERwGHDgQf+YNGOrAQSEBBBwlWQfsDcVKsI4sf
    +IAQnGSQtCQ4yyfvVvO69SW7J+9W8GtIkg8SwXfuQSpFu2Pdxzl5rr7XP2bDY
    +Nt+saTSaDzfx2DR/er6zY941XsPPi92Pry1afNxdJS9ejuFwqJNl+XMsFstE
    +o1HijEQio1Qq9bPZbD7SXBHtdnsjGAxK+Xyeut0uTadTms1mNBgMqFwuUyKR
    ++APOd5cxo9HoHjBqqVSis7Mzms/nlMlkyOfziX/GdzodSiaTpCjKqwscar6o
    +qkq9Xo/Oz89pb2+PjEYj2Ww22t7epn6/L/DcF/wdt9u9Di4tPAxarZbgZKzd
    +bmde4jCZTORyuUTPWq1G8Erwb0HdQ2gn+KZ6vU6np6eCm8PhcNDW1hZVKhWx
    +xvusH/P6jronwVCIcpJE2VxOvLvQ5Q8EyGAwkMfjERilUBCYCGrj8fiv8Xj8
    +IIAa1iVJMsnIIWZ4dHRE+1/3hW72pUgK5cALTzyfbzwX4Kt5WSb15IRU8M5w
    +BgcHB2S1WqkL3TxntVgU3CH0g7+XjGs0Gm/D4bDgZS/QQH6/n5xOp+iH/X8z
    +QY+0Xq9fZ9xyudRKknTIGpibZzOZTMQMcYeoWq1SNptlzMzr9T4G5PbFGS4W
    +C12hUHDwbNlHEbr4TMEn7hvW69DwDKV3kGv/3zfUPU2n0z+g6Rj+j/H+jXxv
    +Npvvr/por7qnq+C9G8hbq9Qhr18u+AttYAMa
    +"], {{0, 14}, {14, 0}}, {0, 255},
    +ColorFunction->RGBColor],
    +BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True],
    +Selectable->False],
    +BaseStyle->"ImageGraphics",
    +ImageSize->Magnification[1],
    +ImageSizeRaw->{14, 14},
    +PlotRange->{{0, 14}, {0, 14}}]
    +
    +
    +In[30]:= dist = Norm[R.P]
    +CForm[dist]
    +Out[30]= √(Abs[L Cos[rot1] Cos[rot2]+d2 Cos[rot2] Sin[rot1]-d1 Sin[rot2]]^2+Abs[d1 Cos[rot2] Cos[rot3]+d2 (Cos[rot3] Sin[rot1] Sin[rot2]-Cos[rot1] Sin[rot3])+L (Cos[rot1] Cos[rot3] Sin[rot2]+Sin[rot1] Sin[rot3])]^2+Abs[d1 Cos[rot2] Sin[rot3]+L (-Cos[rot3] Sin[rot1]+Cos[rot1] Sin[rot2] Sin[rot3])+d2 (Cos[rot1] Cos[rot3]+Sin[rot1] Sin[rot2] Sin[rot3])]^2)
    +Out[31]//CForm=
    +Sqrt(Power(Abs(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2)),2) + Power(Abs(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +       L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))),2) + Power(Abs(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3))),
    +     2))
    +cos(2theta) can be defined as (R.P component along x3) over the distance |R.P|
    +In[32]:= tthc = ArcCos [-(R.P).x3/Norm[R.P]]
    +CForm[tthc]
    +
    +Out[32]= ArcCos[(-L Cos[rot1] Cos[rot2]-d2 Cos[rot2] Sin[rot1]+d1 Sin[rot2])/(√(Abs[L Cos[rot1] Cos[rot2]+d2 Cos[rot2] Sin[rot1]-d1 Sin[rot2]]^2+Abs[d1 Cos[rot2] Cos[rot3]+d2 (Cos[rot3] Sin[rot1] Sin[rot2]-Cos[rot1] Sin[rot3])+L (Cos[rot1] Cos[rot3] Sin[rot2]+Sin[rot1] Sin[rot3])]^2+Abs[d1 Cos[rot2] Sin[rot3]+L (-Cos[rot3] Sin[rot1]+Cos[rot1] Sin[rot2] Sin[rot3])+d2 (Cos[rot1] Cos[rot3]+Sin[rot1] Sin[rot2] Sin[rot3])]^2))]
    +Out[33]//CForm=
    +ArcCos((-(L*Cos(rot1)*Cos(rot2)) - d2*Cos(rot2)*Sin(rot1) + d1*Sin(rot2))/
    +    Sqrt(Power(Abs(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2)),2) + Power(Abs(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +         L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))),2) + Power(Abs(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + 
    +         d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3))),2)))
    +
    +
    +
    +In[41]:= ttht = ArcTan[t3,Sqrt[t1^2 + t2^2]]
    +
    +CForm[ttht]
    +
    +
    +Out[41]= ArcTan[L Cos[rot1] Cos[rot2]+d2 Cos[rot2] Sin[rot1]-d1 Sin[rot2],√((d1 Cos[rot2] Cos[rot3]+d2 (Cos[rot3] Sin[rot1] Sin[rot2]-Cos[rot1] Sin[rot3])+L (Cos[rot1] Cos[rot3] Sin[rot2]+Sin[rot1] Sin[rot3]))^2+(d1 Cos[rot2] Sin[rot3]+L (-Cos[rot3] Sin[rot1]+Cos[rot1] Sin[rot2] Sin[rot3])+d2 (Cos[rot1] Cos[rot3]+Sin[rot1] Sin[rot2] Sin[rot3]))^2)]
    +Out[42]//CForm=
    +ArcTan(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),
    +      2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +Tangeant of angle chi is defined as (R.P component along x1) over (R.P component along x2). Arctan2 should be used in actual calculation
    +In[36]:= chi =ArcTan[t1  , t2]
    +CForm[chi]
    +Out[36]= ArcTan[d1 Cos[rot2] Cos[rot3]+d2 (Cos[rot3] Sin[rot1] Sin[rot2]-Cos[rot1] Sin[rot3])+L (Cos[rot1] Cos[rot3] Sin[rot2]+Sin[rot1] Sin[rot3]),d1 Cos[rot2] Sin[rot3]+L (-Cos[rot3] Sin[rot1]+Cos[rot1] Sin[rot2] Sin[rot3])+d2 (Cos[rot1] Cos[rot3]+Sin[rot1] Sin[rot2] Sin[rot3])]
    +Out[37]//CForm=
    +ArcTan(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),
    +   d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)))
    +Coodinates of the Point of Normal Incidence
    +
    +In[38]:= PONI = R.{0,0,L}
    +CForm[PONI]
    +Out[38]= {L (Cos[rot1] Cos[rot3] Sin[rot2]+Sin[rot1] Sin[rot3]),L (-Cos[rot3] Sin[rot1]+Cos[rot1] Sin[rot2] Sin[rot3]),L Cos[rot1] Cos[rot2]}
    +Out[39]//CForm=
    +List(L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)),L*Cos(rot1)*Cos(rot2))
    +Derivatives of 2Theta
    +In[43]:= CForm[D[ttht,d1]]
    +Out[43]//CForm=
    +((L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2))*(2*Cos(rot2)*Cos(rot3)*(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +           L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))) + 2*Cos(rot2)*Sin(rot3)*
    +         (d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)))))/
    +    (2.*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))*
    +      (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +          L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +     + (Sin(rot2)*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))/
    +    (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),
    +       2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))
    +In[44]:= CForm[D[ttht,d2]]
    +
    +Out[44]//CForm=
    +((L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2))*(2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3))*
    +         (d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))) + 
    +        2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3))*(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)))))/
    +    (2.*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))*
    +      (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +          L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +     - (Cos(rot2)*Sin(rot1)*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))/
    +    (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),
    +       2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))
    +In[47]:= CForm[D[ttht,L]]
    +Out[47]//CForm=
    +((L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2))*(2*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))*
    +         (d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))) + 
    +        2*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3))*(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)))))/
    +    (2.*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))*
    +      (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +          L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +     - (Cos(rot1)*Cos(rot2)*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))/
    +    (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),
    +       2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))
    +In[48]:= CForm[D[ttht,rot1]]
    +Out[48]//CForm=
    +((L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2))*(2*(L*(-(Cos(rot3)*Sin(rot1)*Sin(rot2)) + Cos(rot1)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)))*
    +         (d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))) + 
    +        2*(d2*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + L*(-(Cos(rot1)*Cos(rot3)) - Sin(rot1)*Sin(rot2)*Sin(rot3)))*
    +         (d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)))))/
    +    (2.*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))*
    +      (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +          L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +     - ((d2*Cos(rot1)*Cos(rot2) - L*Cos(rot2)*Sin(rot1))*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))/
    +    (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),
    +       2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))
    +In[49]:= CForm[D[ttht,rot2]]
    +Out[49]//CForm=
    +((L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2))*(2*(L*Cos(rot1)*Cos(rot2)*Cos(rot3) + d2*Cos(rot2)*Cos(rot3)*Sin(rot1) - d1*Cos(rot3)*Sin(rot2))*
    +         (d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3))) + 
    +        2*(L*Cos(rot1)*Cos(rot2)*Sin(rot3) + d2*Cos(rot2)*Sin(rot1)*Sin(rot3) - d1*Sin(rot2)*Sin(rot3))*
    +         (d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)))))/
    +    (2.*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +        Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))*
    +      (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +          L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +     - ((-(d1*Cos(rot2)) - L*Cos(rot1)*Sin(rot2) - d2*Sin(rot1)*Sin(rot2))*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +          L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +     /(Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +        L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))
    +In[50]:= CForm[D[ttht,rot3]]
    +Out[50]//CForm=
    +((L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2))*(2*(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)))*
    +        (-(d1*Cos(rot2)*Sin(rot3)) + L*(Cos(rot3)*Sin(rot1) - Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(-(Cos(rot1)*Cos(rot3)) - Sin(rot1)*Sin(rot2)*Sin(rot3))) + 
    +       2*(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)))*
    +        (d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)))))/
    +   (2.*Sqrt(Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + 
    +       Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2))*
    +     (Power(L*Cos(rot1)*Cos(rot2) + d2*Cos(rot2)*Sin(rot1) - d1*Sin(rot2),2) + Power(d1*Cos(rot2)*Cos(rot3) + d2*(Cos(rot3)*Sin(rot1)*Sin(rot2) - Cos(rot1)*Sin(rot3)) + 
    +         L*(Cos(rot1)*Cos(rot3)*Sin(rot2) + Sin(rot1)*Sin(rot3)),2) + Power(d1*Cos(rot2)*Sin(rot3) + L*(-(Cos(rot3)*Sin(rot1)) + Cos(rot1)*Sin(rot2)*Sin(rot3)) + d2*(Cos(rot1)*Cos(rot3) + Sin(rot1)*Sin(rot2)*Sin(rot3)),2)))
    +
    +
    +
    +
    +__init__(dist=1, poni1=0, poni2=0, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None)
    +
    +++ + + + +
    Parameters:
      +
    • dist – distance sample - detector plan (orthogonal distance, not along the beam), in meter.
    • +
    • poni1 – coordinate of the point of normal incidence along the detector’s first dimension, in meter
    • +
    • poni2 – coordinate of the point of normal incidence along the detector’s second dimension, in meter
    • +
    • rot1 – first rotation from sample ref to detector’s ref, in radians
    • +
    • rot2 – second rotation from sample ref to detector’s ref, in radians
    • +
    • rot3 – third rotation from sample ref to detector’s ref, in radians
    • +
    • pixel1 (float) – Deprecated. Pixel size of the fist dimension of the detector, in meter. +If both pixel1 and pixel2 are not None, detector pixel size is overwritten. +Prefer defining the detector pixel size on the provided detector object. +Prefer defining the detector pixel size on the provided detector +object (detector.pixel1 = 5e-6).
    • +
    • pixel2 (float) – Deprecated. Pixel size of the second dimension of the detector, in meter. +If both pixel1 and pixel2 are not None, detector pixel size is overwritten. +Prefer defining the detector pixel size on the provided detector +object (detector.pixel2 = 5e-6).
    • +
    • splineFile (str) – Deprecated. File containing the geometric distortion of the detector. +If not None, pixel1 and pixel2 are ignored and detector spline is overwritten. +Prefer defining the detector spline manually +(detector.splineFile = "file.spline").
    • +
    • detector (str or pyFAI.Detector) – name of the detector or Detector instance. String +description is deprecated. Prefer using the result of the detector +factory: pyFAI.detector_factory("eiger4m")
    • +
    • wavelength (float) – Wave length used in meter
    • +
    +
    -
    -rFunction(d1, d2, param=None, path='cython')
    -

    Calculates the radius value for the center of a given pixel -(or set of pixels) in m

    -
    -
    r = distance to the incident beam
    +
    +array_from_unit(shape=None, typ='center', unit=2th_deg)
    +

    Generate an array of position in different dimentions (R, Q, +2Theta)

    - -
    Parameters:
      -
    • d1 (scalar or array of scalar) – position(s) in pixel in first dimension (c order)
    • -
    • d2 (scalar or array of scalar) – position(s) in pixel in second dimension (c order)
    • +
    • shape (ndarray.shape) – shape of the expected array
    • +
    • typ (str) – “center”, “corner” or “delta”
    • +
    • unit (pyFAI.units.Enum) – can be Q, TTH, R for now
    Returns:

    r in in m

    +
    Returns:

    R, Q or 2Theta array depending on unit

    Return type:

    float or array of floats.

    +
    Return type:

    ndarray

    -
    -
    -ra
    -

    R array in cache

    -
    -
    -
    -rd2Array(shape=None)
    -

    Generate an array of the given shape with (d*(i,j))^2 for all pixels.

    -

    d*^2 is the reciprocal spacing squared in inverse nm squared

    +
    +calc_pos_zyx(d0=None, d1=None, d2=None, param=None, corners=False, use_cython=True)
    +

    Calculate the position of a set of points in space in the sample’s centers referential.

    +

    This is usually used for calculating the pixel position in space.

    - + + +
    Parameters:shape – expected shape of the detector
    Parameters:
      +
    • d0 – altitude on the point compared to the detector (i.e. z), may be None
    • +
    • d1 – position on the detector along the slow dimention (i.e. y)
    • +
    • d2 – position on the detector along the fastest dimention (i.e. x)
    • +
    • corners – return positions on the corners (instead of center)
    • +
    +
    Returns:

    3-tuple of nd-array, with dim0=along the beam, +dim1=along slowest dimension +dim2=along fastest dimension

    +
    -

    :return:2d array of the given shape with reciprocal spacing squared

    -
    -read(filename)
    -

    Load the refined parameters from a file.

    +
    +calc_transmission(t0, shape=None)
    +

    Defines the absorption correction for a phosphor screen or a scintillator +from t0, the normal transmission of the screen.

    +
    +

    Icor = \frac{Iobs(1-t0)}{1-exp(ln(t0)/cos(incidence))}
+
+let_t = \frac{1-exp(ln(t0)/cos(incidence))}{1 - t0}

    +

    See reference on: +J. Appl. Cryst. (2002). 35, 356–359 G. Wu et al. CCD phosphor

    - + + +
    Parameters:filename (string) – name of the file to load
    Parameters:
      +
    • t0 – value of the normal transmission (from 0 to 1)
    • +
    • shape – shape of the array
    • +
    +
    Returns:

    actual

    +
    -
    -reset()
    -

    reset most arrays that are cached: used when a parameter -changes.

    -
    - -
    -
    -rot1
    -
    - -
    -
    -rot2
    -
    - -
    -
    -rot3
    -
    - -
    -
    -save(filename)
    -

    Save the geometry parameters.

    +
    +calcfrom1d(tth, I, shape=None, mask=None, dim1_unit=2th_deg, correctSolidAngle=True, dummy=0.0, polarization_factor=None, dark=None, flat=None)
    +

    Computes a 2D image from a 1D integrated profile

    - + + +
    Parameters:filename (string) – name of the file where to save the parameters
    Parameters:
      +
    • tth – 1D array with radial unit
    • +
    • I – scattering intensity
    • +
    • shape – shape of the image (if not defined by the detector)
    • +
    • dim1_unit – unit for the “tth” array
    • +
    • correctSolidAngle
    • +
    • dummy – value for masked pixels
    • +
    • polarization_factor – set to true to use previously used value
    • +
    • dark – dark current correction
    • +
    • flat – flatfield corrction
    • +
    +
    Returns:

    2D image reconstructed

    +
    -
    -setChiDiscAtPi()
    -

    Set the position of the discontinuity of the chi axis between --pi and +pi. This is the default behavour

    -
    - -
    -
    -setChiDiscAtZero()
    -

    Set the position of the discontinuity of the chi axis between -0 and 2pi. By default it is between pi and -pi

    +
    +center_array(shape=None, unit='2th')
    +

    Generate a 2D array of the given shape with (i,j) (radial +angle ) for all elements.

    + +++ + + + + + +
    Parameters:shape (2-tuple of integer) – expected shape
    Returns:3d array with shape=(*shape,4,2) the two elements are: +- dim3[0]: radial angle 2th, q, r... +- dim3[1]: azimuthal angle chi
    -
    -setFit2D(directDist, centerX, centerY, tilt=0.0, tiltPlanRotation=0.0, pixelX=None, pixelY=None, splineFile=None)
    -

    Set the Fit2D-like parameter set: For geometry description see -HPR 1996 (14) pp-240

    -

    Warning: Fit2D flips automatically images depending on their file-format. -By reverse engineering we noticed this behavour for Tiff and Mar345 images (at least). -To obtaine correct result you will have to flip images using numpy.flipud.

    +
    +chi(d1, d2, path='cython')
    +

    Calculate the chi (azimuthal angle) for the centre of a pixel +at coordinate d1,d2 which in the lab ref has coordinate:

    +

    X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) +X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) +X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2) +hence tan(Chi) = X2 / X1

    - + +
    Parameters:
      -
    • direct – direct distance from sample to detector along the incident beam (in millimeter as in fit2d)
    • -
    • tilt – tilt in degrees
    • -
    • tiltPlanRotation – Rotation (in degrees) of the tilt plan arround the Z-detector axis -* 0deg -> Y does not move, +X goes to Z<0 -* 90deg -> X does not move, +Y goes to Z<0 -* 180deg -> Y does not move, +X goes to Z>0 -* 270deg -> X does not move, +Y goes to Z>0
    • -
    • pixelX,pixelY – as in fit2d they ar given in micron, not in meter
    • -
    • centerY (centerX,) – pixel position of the beam center
    • -
    • splineFile – name of the file containing the spline
    • +
    Parameters:
      +
    • d1 (float or array of them) – pixel coordinate along the 1st dimention (C convention)
    • +
    • d2 (float or array of them) – pixel coordinate along the 2nd dimention (C convention)
    • +
    • path – can be “tan” (i.e via numpy) or “cython”
    Returns:

    chi, the azimuthal angle in rad

    +
    -
    -setOversampling(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    - -
    -
    -setPyFAI(**kwargs)
    -

    set the geometry from a pyFAI-like dict

    +
    +chiArray(shape=None)
    +

    Generate an array of azimuthal angle chi(i,j) for all elements in the detector.

    +

    Azimuthal angles are in radians

    +

    Nota: Refers to the pixel centers !

    + +++ + + + + + +
    Parameters:shape – the shape of the chi array
    Returns:the chi array as numpy.ndarray
    -
    -setSPD(SampleDistance, Center_1, Center_2, Rot_1=0, Rot_2=0, Rot_3=0, PSize_1=None, PSize_2=None, splineFile=None, BSize_1=1, BSize_2=1, WaveLength=None)
    -

    Set the SPD like parameter set: For geometry description see -Peter Boesecke J.Appl.Cryst.(2007).40, s423–s427

    -

    Basically the main difference with pyFAI is the order of the axis which are flipped

    +
    +chi_corner(d1, d2)
    +

    Calculate the chi (azimuthal angle) for the corner of a pixel +at coordinate d1,d2 which in the lab ref has coordinate:

    +

    X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) +X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) +X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2) +hence tan(Chi) = X2 / X1

    - + + +
    Parameters:SampleDistance – distance from sample to detector at the PONI (orthogonal projection)
    Parameters:
      +
    • d1 (float or array of them) – pixel coordinate along the 1st dimention (C convention)
    • +
    • d2 (float or array of them) – pixel coordinate along the 2nd dimention (C convention)
    • +
    +
    Returns:

    chi, the azimuthal angle in rad

    +
    -

    :param Center_1, pixel position of the PONI along fastest axis -:param Center_2: pixel position of the PONI along slowest axis -:param Rot_1: rotation around the fastest axis (x) -:param Rot_2: rotation around the slowest axis (y) -:param Rot_3: rotation around the axis ORTHOGONAL to the detector plan -:param PSize_1: pixel size in meter along the fastest dimention -:param PSize_2: pixel size in meter along the slowst dimention -:param splineFile: name of the file containing the spline -:param BSize_1: pixel binning factor along the fastest dimention -:param BSize_2: pixel binning factor along the slowst dimention -:param WaveLength: wavelength used

    -
    -
    -set_chia(_)
    -
    - -
    -
    -set_correct_solid_angle_for_spline(value)
    -
    - -
    -
    -set_dist(value)
    -
    - -
    -
    -set_dssa(_)
    -
    - -
    -
    -set_mask(mask)
    -
    - -
    -
    -set_maskfile(maskfile)
    -
    +
    +
    +chia
    +

    chi array in cache

    +
    -
    -set_pixel1(pixel1)
    -
    +
    +cornerArray(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -set_pixel2(pixel2)
    -
    +
    +cornerQArray(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -set_poni1(value)
    -
    +
    +cornerRArray(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -set_poni2(value)
    -
    +
    +cornerRd2Array(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -set_qa(_)
    -
    +
    +corner_array(shape=None, unit=None, use_cython=True)
    +

    Generate a 3D array of the given shape with (i,j) (radial +angle 2th, azimuthal angle chi ) for all elements.

    + +++ + + + + + +
    Parameters:shape (2-tuple of integer) – expected shape
    Returns:3d array with shape=(*shape,4,2) the two elements are: +- dim3[0]: radial angle 2th, q, r... +- dim3[1]: azimuthal angle chi
    +
    -
    -
    -set_ra(_)
    +
    +
    +correct_SA_spline
    -
    -set_rot1(value)
    -
    +
    +cosIncidance(d1, d2, path='cython')
    +

    Calculate the incidence angle (alpha) for current pixels (P). +The poni being the point of normal incidence, +it’s incidence angle is ${alpha} = 0$ hence $cos({alpha}) = 1$

    + +++ + + + + + +
    Parameters:
      +
    • d1 – 1d or 2d set of points in pixel coord
    • +
    • d2 – 1d or 2d set of points in pixel coord
    • +
    +
    Returns:

    cosine of the incidence angle

    +
    +
    -
    -set_rot2(value)
    +
    +del_chia()
    -
    -set_rot3(value)
    +
    +del_dssa()
    -
    -set_spline(spline)
    +
    +del_qa()
    -
    -set_splineFile(splineFile)
    +
    +del_ra()
    -
    -set_ttha(_)
    +
    +del_ttha()
    -
    -set_wavelength(value)
    -
    - -
    -
    -classmethod sload(filename)
    -

    A static method combining the constructor and the loader from -a file

    +
    +delta2Theta(shape=None)
    +

    Generate a 3D array of the given shape with (i,j) with the max +distance between the center and any corner in 2 theta

    - + - +
    Parameters:filename (string) – name of the file to load
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:instance of Gerometry of AzimuthalIntegrator set-up with the parameter from the file.
    Returns:2D-array containing the max delta angle between a pixel center and any corner in 2theta-angle (rad)
    -
    -solidAngleArray(shape=None, order=3, absolute=False)
    -

    Generate an array for the solid angle correction -given the shape of the detector.

    -

    solid_angle = cos(incidence)^3

    +
    +deltaChi(shape=None)
    +

    Generate a 3D array of the given shape with (i,j) with the max +distance between the center and any corner in chi-angle (rad)

    - + - + + +
    Parameters:
      -
    • shape – shape of the array expected
    • -
    • order – should be 3, power of the formula just obove
    • -
    • absolute – the absolute solid angle is calculated as:
    • -
    -
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:2D-array containing the max delta angle between a pixel center and any corner in chi-angle (rad)
    -

    SA = pix1*pix2/dist^2 * cos(incidence)^3

    -
    -
    -spline
    -
    - -
    -
    -splineFile
    -
    -
    -
    -tth(d1, d2, param=None, path='cython')
    -

    Calculates the 2theta value for the center of a given pixel -(or set of pixels)

    +
    +deltaQ(shape=None)
    +

    Generate a 2D array of the given shape with (i,j) with the max +distance between the center and any corner in q_vector unit +(nm^-1)

    - - - + - +
    Parameters:
      -
    • d1 (scalar or array of scalar) – position(s) in pixel in first dimension (c order)
    • -
    • d2 (scalar or array of scalar) – position(s) in pixel in second dimension (c order)
    • -
    • path – can be “cos”, “tan” or “cython”
    • -
    -
    Returns:

    2theta in radians

    -
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Return type:

    float or array of floats.

    -
    Returns:array 2D containing the max delta Q between a pixel center and any corner in q_vector unit (nm^-1)
    -
    -tth_corner(*arg, **kw)
    -

    decorator that deprecates the use of a function

    -
    - -
    -
    -ttha
    -

    2theta array in cache

    +
    +deltaR(shape=None)
    +

    Generate a 2D array of the given shape with (i,j) with the max +distance between the center and any corner in radius unit (mm)

    + +++ + + + + + +
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:array 2D containing the max delta Q between a pixel center and any corner in q_vector unit (nm^-1)
    -
    -twoThetaArray(shape=None)
    -

    Generate an array of two-theta(i,j) in radians for each pixel in detector

    -

    the 2theta array values are in radians

    +
    +deltaRd2(shape=None)
    +

    Generate a 2D array of the given shape with (i,j) with the max +distance between the center and any corner in unit: reciprocal spacing squarred (1/nm^2)

    - + - +
    Parameters:shape – shape of the detector
    Parameters:shape – The shape of the detector array: 2-tuple of integer
    Returns:array of 2theta position in radians
    Returns:array 2D containing the max delta (d*)^2 between a pixel center and any corner in reciprocal spacing squarred (1/nm^2)
    -
    -
    -wavelength
    -
    -
    -
    -write(filename)
    -

    Save the geometry parameters.

    +
    +delta_array(shape=None, unit='2th')
    +

    Generate a 2D array of the given shape with (i,j) (delta-radial +angle) for all elements.

    - + + +
    Parameters:filename (string) – name of the file where to save the parameters
    Parameters:shape (2-tuple of integer) – expected shape
    Returns:3d array with shape=(*shape,4,2) the two elements are:
      +
    • dim3[0]: radial angle 2th, q, r...
    • +
    • dim3[1]: azimuthal angle chi
    • +
    +
    - - -
    -
    -

    geometryRefinement Module

    -
    -
    -class pyFAI.geometryRefinement.GeometryRefinement(data, dist=1, poni1=None, poni2=None, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    -

    Bases: pyFAI.azimuthalIntegrator.AzimuthalIntegrator

    -
    -anneal(maxiter=1000000)
    -
    +
    +diffSolidAngle(d1, d2)
    +

    Calculate the solid angle of the current pixels (P) versus the PONI (C)

    +
    +

    dOmega = \frac{Omega(P)}{Omega(C)}
+       = \frac{A \cdot cos(a)}{SP^2} \cdot \frac{SC^2}{A \cdot cos(0)}
+       = \frac{3}{cos(a)}
+       = \frac{SC^3}{SP^3}
 
-<dl class= -

    -calc_2th(rings, wavelength=None)
    -
    +cos(a) = \frac{SC}{SP}"/>

    +
    - + +
    Parameters:
      -
    • rings – indices of the rings. starts at 0 and self.dSpacing should be long enough !!!
    • -
    • wavelength – wavelength in meter
    • +
    Parameters:
      +
    • d1 – 1d or 2d set of points
    • +
    • d2 – 1d or 2d set of points (same size&shape as d1)
    Returns:

    solid angle correction array

    +
    -
    -
    -chi2(param=None)
    +
    +
    +dist
    -
    -
    -chi2_wavelength(param=None)
    -
    +
    +
    +dssa
    +

    solid angle array in cache

    +
    -
    -confidence(with_rot=True)
    -

    Confidence interval obtained from the second derivative of the error function -next to its minimum value.

    -

    Note the confidence interval increases with the number of points which is “surprizing”

    +
    +getFit2D()
    +

    Export geometry setup with the geometry of Fit2D

    - - - +
    Parameters:with_rot – if true include rot1 & rot2 in the parameter set.
    Returns:std_dev, confidence
    Returns:dict with parameters compatible with fit2D geometry
    -
    -curve_fit(with_rot=True)
    -

    Refine the geometry and provide confidence interval -Use curve_fit from scipy.optimize to not only refine the geometry (unconstrained fit)

    +
    +getPyFAI()
    +

    Export geometry setup with the geometry of PyFAI

    - - - +
    Parameters:with_rot – include rotation intro error measurment
    Returns:std_dev, confidence
    Returns:dict with the parameter-set of the PyFAI geometry
    -
    -
    -dist_max
    -
    - -
    -
    -dist_min
    -
    +
    +
    +getSPD()
    +

    get the SPD like parameter set: For geometry description see +Peter Boesecke J.Appl.Cryst.(2007).40, s423–s427

    +

    Basically the main difference with pyFAI is the order of the axis which are flipped

    + +++ + + + +
    Returns:dictionnary with those parameters: +SampleDistance: distance from sample to detector at the PONI (orthogonal projection) +Center_1, pixel position of the PONI along fastest axis +Center_2: pixel position of the PONI along slowest axis +Rot_1: rotation around the fastest axis (x) +Rot_2: rotation around the slowest axis (y) +Rot_3: rotation around the axis ORTHOGONAL to the detector plan +PSize_1: pixel size in meter along the fastest dimention +PSize_2: pixel size in meter along the slowst dimention +splineFile: name of the file containing the spline +BSize_1: pixel binning factor along the fastest dimention +BSize_2: pixel binning factor along the slowst dimention +WaveLength: wavelength used in meter
    +
    -
    -get_dist_max()
    +
    +get_chia()
    -
    -get_dist_min()
    +
    +get_correct_solid_angle_for_spline()
    -
    -get_poni1_max()
    +
    +get_dist()
    -
    -get_poni1_min()
    +
    +get_dssa()
    -
    -get_poni2_max()
    +
    +get_mask()
    -
    -get_poni2_min()
    +
    +get_maskfile()
    -
    -get_rot1_max()
    +
    +get_pixel1()
    -
    -get_rot1_min()
    +
    +get_pixel2()
    -
    -get_rot2_max()
    +
    +get_poni1()
    -
    -get_rot2_min()
    +
    +get_poni2()
    -
    -get_rot3_max()
    +
    +get_qa()
    -
    -get_rot3_min()
    +
    +get_ra()
    -
    -get_wavelength_max()
    +
    +get_rot1()
    -
    -get_wavelength_min()
    +
    +get_rot2()
    -
    -guess_poni()
    -

    Poni can be guessed by the centroid of the ring with lowest 2Theta

    -
    - -
    -
    -poni1_max
    -
    - -
    -
    -poni1_min
    -
    - -
    -
    -poni2_max
    -
    - -
    -
    -poni2_min
    -
    - -
    -
    -refine1()
    -
    - -
    -
    -refine2(maxiter=1000000, fix=['wavelength'])
    -
    - -
    -
    -refine2_wavelength(maxiter=1000000, fix=['wavelength'])
    -
    - -
    -
    -residu1(param, d1, d2, rings)
    +
    +get_rot3()
    -
    -residu1_wavelength(param, d1, d2, rings)
    -
    +
    +get_shape(shape=None)
    +

    Guess what is the best shape ....

    + +++ + + + + + +
    Parameters:shape – force this value (2-tuple of int)
    Returns:2-tuple of int
    +
    -
    -residu2(param, d1, d2, rings)
    +
    +get_spline()
    -
    -residu2_wavelength(param, d1, d2, rings)
    +
    +get_splineFile()
    -
    -residu2_wavelength_weighted(param, d1, d2, rings, weight)
    +
    +get_ttha()
    -
    -residu2_weighted(param, d1, d2, rings, weight)
    +
    +get_wavelength()
    -
    -roca()
    -

    run roca to optimise the parameter set

    +
    +load(filename)
    +

    Load the refined parameters from a file.

    + +++ + + + +
    Parameters:filename (string) – name of the file to load
    -
    -rot1_max
    -
    - -
    -
    -rot1_min
    +
    +mask
    -
    -rot2_max
    +
    +maskfile
    -
    -
    -rot2_min
    +
    +
    +oversampleArray(myarray)
    -
    -rot3_max
    +
    +pixel1
    -
    -rot3_min
    -
    - -
    -
    -set_dist_max(value)
    -
    - -
    -
    -set_dist_min(value)
    -
    - -
    -
    -set_poni1_max(value)
    -
    - -
    -
    -set_poni1_min(value)
    -
    - -
    -
    -set_poni2_max(value)
    +
    +pixel2
    -
    -set_poni2_min(value)
    -
    +
    +polarization(shape=None, factor=None, axis_offset=0)
    +

    Calculate the polarization correction accoding to the +polarization factor:

    +
      +
    • If the polarization factor is None, the correction is not applied (returns 1)
    • +
    • If the polarization factor is 0 (circular polarization), the correction correspond to (1+(cos2θ)^2)/2
    • +
    • If the polarization factor is 1 (linear horizontal polarization), there is no correction in the vertical plane and a node at 2th=90, chi=0
    • +
    • If the polarization factor is -1 (linear vertical polarization), there is no correction in the horizontal plane and a node at 2th=90, chi=90
    • +
    • If the polarization is elliptical, the polarization factor varies between -1 and +1.
    • +
    +

    The axis_offset parameter allows correction for the misalignement of the polarization plane (or ellipse main axis) and the the detector’s X axis.

    + +++ + + + + + +
    Parameters:
      +
    • factor – (Ih-Iv)/(Ih+Iv): varies between 0 (no polarization) and 1 (where division by 0 could occure at 2th=90, chi=0)
    • +
    • axis_offset – Angle between the polarization main axis and detector X direction (in radians !!!)
    • +
    +
    Returns:

    2D array with polarization correction array (intensity/polarisation)

    +
    +
    -
    -
    -set_rot1_max(value)
    +
    +
    +poni1
    -
    -
    -set_rot1_min(value)
    +
    +
    +poni2
    -
    -set_rot2_max(value)
    -
    +
    +positionArray(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -set_rot2_min(value)
    -
    +
    +position_array(shape=None, corners=False, dtype=<type 'numpy.float64'>, use_cython=True)
    +

    Generate an array for the pixel position given the shape of the detector.

    +

    if corners is False, the coordinates of the center of the pixel +is returned in an array of shape: (shape[0], shape[1], 3) +where the 3 coordinates are: +* z: along incident beam, +* y: to the top/sky, +* x: towards the center of the ring

    +

    If is True, the corner of each pixels are then returned. +the output shape is then (shape[0], shape[1], 4, 3)

    + +++ + + + + + +
    Parameters:
      +
    • shape – shape of the array expected
    • +
    • corners – set to true to receive a (...,4,3) array of corner positions
    • +
    • dtype – output format requested. Double precision is needed for fitting the geometry
    • +
    • use_cython ((bool)) – set to false to test the Python path (slower)
    • +
    +
    Returns:

    3D coodinates as nd-array of size (...,3) or (...,3) (default)

    +
    +

    Nota: this value is not cached and actually generated on demand (costly)

    +
    -
    -set_rot3_max(value)
    -
    +
    +qArray(shape=None)
    +

    Generate an array of the given shape with q(i,j) for all +elements.

    +
    -
    -set_rot3_min(value)
    -
    +
    +qCornerFunct(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -set_tolerance(value=10)
    -

    Set the tolerance for a refinement of the geometry; in percent of the original value

    +
    +qFunction(d1, d2, param=None, path='cython')
    +

    Calculates the q value for the center of a given pixel (or set +of pixels) in nm-1

    +

    q = 4pi/lambda sin( 2theta / 2 )

    - + + + + +
    Parameters:value – Tolerance as a percentage
    Parameters:
      +
    • d1 (scalar or array of scalar) – position(s) in pixel in first dimension (c order)
    • +
    • d2 (scalar or array of scalar) – position(s) in pixel in second dimension (c order)
    • +
    +
    Returns:

    q in in nm^(-1)

    +
    Return type:

    float or array of floats.

    +
    -
    -
    -set_wavelength_max(value)
    -
    - -
    -
    -set_wavelength_min(value)
    -
    +
    +
    +qa
    +

    Q array in cache

    +
    -
    -simplex(maxiter=1000000)
    -
    - -
    -
    -wavelength_max
    -
    - -
    -
    -wavelength_min
    -
    - - - -
    -
    -

    detectors Module

    -

    Description of all detectors with a factory to instantiate them

    -
    -
    -class pyFAI.detectors.ADSC_Q210(pixel1=5.1e-05, pixel2=5.1e-05)
    -

    Bases: pyFAI.detectors.Detector

    -

    ADSC Quantum 210r detector, 2x2 chips

    -

    Informations from -http://www.adsc-xray.com/products/ccd-detectors/q210r-ccd-detector/

    -

    Question: how are the gaps handled ?

    -
    -
    -MAX_SHAPE = (4096, 4096)
    -
    - -
    -
    -aliases = ['Quantum 210']
    -
    - -
    -
    -force_pixel = True
    -
    - -
    - -
    -
    -class pyFAI.detectors.ADSC_Q270(pixel1=6.48e-05, pixel2=6.48e-05)
    -

    Bases: pyFAI.detectors.Detector

    -

    ADSC Quantum 270r detector, 2x2 chips

    -

    Informations from -http://www.adsc-xray.com/products/ccd-detectors/q270-ccd-detector/

    -

    Question: how are the gaps handled ?

    -
    -
    -MAX_SHAPE = (4168, 4168)
    -
    - -
    -
    -aliases = ['Quantum 270']
    -
    - -
    -
    -force_pixel = True
    -
    - -
    - -
    -
    -class pyFAI.detectors.ADSC_Q315(pixel1=5.1e-05, pixel2=5.1e-05)
    -

    Bases: pyFAI.detectors.Detector

    -

    ADSC Quantum 315r detector, 3x3 chips

    -

    Informations from -http://www.adsc-xray.com/products/ccd-detectors/q315r-ccd-detector/

    -

    Question: how are the gaps handled ?

    -
    -
    -MAX_SHAPE = (6144, 6144)
    -
    - -
    -
    -aliases = ['Quantum 315']
    -
    - -
    -
    -force_pixel = True
    -
    - +
    +rArray(shape=None)
    +

    Generate an array of the given shape with r(i,j) for all elements; +The radius r being in meters.

    + +++ + + + + + +
    Parameters:shape – expected shape of the detector
    Returns:2d array of the given shape with radius in m from beam center on detector.
    -
    -
    -class pyFAI.detectors.ADSC_Q4(pixel1=8.2e-05, pixel2=8.2e-05)
    -

    Bases: pyFAI.detectors.Detector

    -

    ADSC Quantum 4r detector, 2x2 chips

    -

    Informations from -http://proteincrystallography.org/detectors/adsc.php

    -

    Question: how are the gaps handled ?

    -
    -
    -MAX_SHAPE = (2304, 2304)
    -
    - -
    -
    -aliases = ['Quantum 4']
    -
    - -
    -
    -force_pixel = True
    -
    - +
    +
    +rCornerFunct(*arg, **kw)
    +

    decorator that deprecates the use of a function

    -
    -
    -class pyFAI.detectors.Aarhus(pixel1=2.5e-05, pixel2=2.5e-05, radius=0.3)
    -

    Bases: pyFAI.detectors.Detector

    -

    Cylindrical detector made of a bent imaging-plate. -Developped at the Danish university of Aarhus -r = 1.2m or 0.3m

    -

    The image has to be laid-out horizontally

    -

    Nota: the detector is bending towards the sample, hence reducing the sample-detector distance. -This is why z<0 (or p3<0)

    -

    TODO: update cython code for 3d detectors -use expand2d instead of outer product with ones

    -
    -
    -IS_FLAT = False
    -
    - -
    -
    -MAX_SHAPE = (1000, 16000)
    -
    -
    -
    -calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    -

    Calculate the position of each pixel center in cartesian coordinate -and in meter of a couple of coordinates. -The half pixel offset is taken into account here !!! -Adapted to Nexus detector definition

    +
    +rFunction(d1, d2, param=None, path='cython')
    +

    Calculates the radius value for the center of a given pixel +(or set of pixels) in m

    +
    +
    r = distance to the incident beam
    - -
    Parameters:
      -
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • -
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • -
    • center – retrieve the coordinate of the center of the pixel
    • -
    • use_cython – set to False to test Python implementeation
    • +
    • d1 (scalar or array of scalar) – position(s) in pixel in first dimension (c order)
    • +
    • d2 (scalar or array of scalar) – position(s) in pixel in second dimension (c order)
    Returns:

    position in meter of the center of each pixels.

    +
    Returns:

    r in in m

    Return type:

    ndarray

    +
    Return type:

    float or array of floats.

    -

    d1 and d2 must have the same shape, returned array will have -the same shape.

    -
    -force_pixel = True
    -
    +
    +ra
    +

    R array in cache

    +
    -
    -get_pixel_corners(use_cython=True)
    -

    Calculate the position of the corner of the pixels

    -

    This should be overwritten by class representing non-contiguous detector (Xpad, ...)

    +
    +rd2Array(shape=None)
    +

    Generate an array of the given shape with (d*(i,j))^2 for all pixels.

    +

    d*^2 is the reciprocal spacing squared in inverse nm squared

    - + + +
    Returns:4D array containing: -pixel index (slow dimension) -pixel index (fast dimension) -corner index (A, B, C or D), triangles or hexagons can be handled the same way -vertex position (z,y,x)
    Parameters:shape – expected shape of the detector
    Returns:2d array of the given shape with reciprocal spacing squared
    +
    +
    +read(filename)
    +

    Load the refined parameters from a file.

    + +++ + + + +
    Parameters:filename (string) – name of the file to load
    -
    -
    -class pyFAI.detectors.Apex2(pixel1=0.00012, pixel2=0.00012)
    -

    Bases: pyFAI.detectors.Detector

    -

    BrukerApex2 detector

    -

    Actually a derivative from the Fairchild detector with higher binning

    -
    -
    -DEFAULT_PIXEL1 = 6e-05
    -
    - -
    -
    -DEFAULT_PIXEL2 = 6e-05
    -
    +
    +
    +reset()
    +

    reset most arrays that are cached: used when a parameter +changes.

    +
    -
    -MAX_SHAPE = (1024, 1024)
    +
    +rot1
    -
    -aliases = ['ApexII', 'Bruker']
    +
    +rot2
    -
    -force_pixel = True
    -
    - -
    - -
    -
    -class pyFAI.detectors.Basler(pixel=3.75e-06)
    -

    Bases: pyFAI.detectors.Detector

    -

    Basler camera are simple CCD camara over GigaE

    -
    -
    -MAX_SHAPE = (966, 1296)
    -
    - -
    -
    -aliases = ['aca1300']
    -
    - -
    -
    -force_pixel = True
    -
    - -
    - -
    -
    -class pyFAI.detectors.Detector(pixel1=None, pixel2=None, splineFile=None, max_shape=None)
    -

    Bases: object

    -

    Generic class representing a 2D detector

    -
    -
    -API_VERSION = '1.0'
    -
    - -
    -
    -IS_CONTIGUOUS = True
    -
    - -
    -
    -IS_FLAT = True
    -
    - -
    -
    -aliases = []
    -
    - -
    -
    -binning
    +
    +rot3
    -
    -calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    -

    Calculate the position of each pixel center in cartesian coordinate -and in meter of a couple of coordinates. -The half pixel offset is taken into account here !!! -Adapted to Nexus detector definition

    +
    +save(filename)
    +

    Save the geometry parameters.

    - - - - - +
    Parameters:
      -
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • -
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • -
    • center – retrieve the coordinate of the center of the pixel, unless gives one corner
    • -
    • use_cython – set to False to test Python implementation
    • -
    -
    Returns:

    position in meter of the center of each pixels.

    -
    Return type:

    3xndarray, the later being None if IS_FLAT

    -
    Parameters:filename (string) – name of the file where to save the parameters
    -

    d1 and d2 must have the same shape, returned array will have -the same shape.

    -

    pos_z is None for flat detectors

    -
    -calc_mask()
    -

    Method calculating the mask for a given detector

    -

    Detectors with gaps should overwrite this method with -something actually calculating the mask!

    - --- - - - - - -
    Returns:the mask with valid pixel to 0
    Return type:numpy ndarray of int8 or None
    +
    +setChiDiscAtPi()
    +

    Set the position of the discontinuity of the chi axis between +-pi and +pi. This is the default behavour

    -
    -
    -classmethod factory(name, config=None)
    -

    A kind of factory...

    +
    +
    +setChiDiscAtZero()
    +

    Set the position of the discontinuity of the chi axis between +0 and 2pi. By default it is between pi and -pi

    +
    + +
    +
    +setFit2D(directDist, centerX, centerY, tilt=0.0, tiltPlanRotation=0.0, pixelX=None, pixelY=None, splineFile=None)
    +

    Set the Fit2D-like parameter set: For geometry description see +HPR 1996 (14) pp-240

    +

    Warning: Fit2D flips automatically images depending on their file-format. +By reverse engineering we noticed this behavour for Tiff and Mar345 images (at least). +To obtaine correct result you will have to flip images using numpy.flipud.

    - - - - -
    Parameters:
      -
    • name (str) – name of a detector
    • -
    • config (dict or JSON representation of it.) – configuration of the detector
    • +
    Parameters:
      +
    • direct – direct distance from sample to detector along the incident beam (in millimeter as in fit2d)
    • +
    • tilt – tilt in degrees
    • +
    • tiltPlanRotation – Rotation (in degrees) of the tilt plan arround the Z-detector axis +* 0deg -> Y does not move, +X goes to Z<0 +* 90deg -> X does not move, +Y goes to Z<0 +* 180deg -> Y does not move, +X goes to Z>0 +* 270deg -> X does not move, +Y goes to Z>0
    • +
    • pixelX,pixelY – as in fit2d they ar given in micron, not in meter
    • +
    • centerY (centerX,) – pixel position of the beam center
    • +
    • splineFile – name of the file containing the spline
    Returns:

    an instance of the right detector, set-up if possible

    -
    Return type:

    pyFAI.detectors.Detector

    -
    -
    -
    -force_pixel = False
    -
    +
    +
    +setOversampling(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    -
    -getFit2D()
    -

    Helper method to serialize the description of a detector using the Fit2d units

    - --- - - - - - -
    Returns:representation of the detector easy to serialize
    Return type:dict
    +
    +setPyFAI(**kwargs)
    +

    set the geometry from a pyFAI-like dict

    -
    -getPyFAI()
    -

    Helper method to serialize the description of a detector using the pyFAI way -with everything in S.I units.

    +
    +setSPD(SampleDistance, Center_1, Center_2, Rot_1=0, Rot_2=0, Rot_3=0, PSize_1=None, PSize_2=None, splineFile=None, BSize_1=1, BSize_2=1, WaveLength=None)
    +

    Set the SPD like parameter set: For geometry description see +Peter Boesecke J.Appl.Cryst.(2007).40, s423–s427

    +

    Basically the main difference with pyFAI is the order of the axis which are flipped

    - - - +
    Returns:representation of the detector easy to serialize
    Return type:dict
    Parameters:
      +
    • SampleDistance – distance from sample to detector at the PONI (orthogonal projection)
    • +
    • Center_1 – pixel position of the PONI along fastest axis
    • +
    • Center_2 – pixel position of the PONI along slowest axis
    • +
    • Rot_1 – rotation around the fastest axis (x)
    • +
    • Rot_2 – rotation around the slowest axis (y)
    • +
    • Rot_3 – rotation around the axis ORTHOGONAL to the detector plan
    • +
    • PSize_1 – pixel size in meter along the fastest dimention
    • +
    • PSize_2 – pixel size in meter along the slowst dimention
    • +
    • splineFile – name of the file containing the spline
    • +
    • BSize_1 – pixel binning factor along the fastest dimention
    • +
    • BSize_2 – pixel binning factor along the slowst dimention
    • +
    • WaveLength – wavelength used
    • +
    +
    -
    -get_binning()
    +
    +set_chia(_)
    -
    -get_mask()
    +
    +set_correct_solid_angle_for_spline(value)
    -
    -get_maskfile()
    +
    +set_dist(value)
    -
    -get_name()
    -

    Get a meaningful name for detector

    -
    +
    +set_dssa(_)
    +
    -
    -get_pixel1()
    +
    +set_mask(mask)
    -
    -get_pixel2()
    +
    +set_maskfile(maskfile)
    -
    -get_pixel_corners()
    -

    Calculate the position of the corner of the pixels

    -

    This should be overwritten by class representing non-contiguous detector (Xpad, ...)

    -

    Precision float32 is ok: precision of 1µm for a detector size of 1m

    - --- - - - -
    Returns:4D array containing: -pixel index (slow dimension) -pixel index (fast dimension) -corner index (A, B, C or D), triangles or hexagons can be handled the same way -vertex position (z,y,x)
    -
    +
    +set_pixel1(pixel1)
    +
    -
    -get_splineFile()
    +
    +set_pixel2(pixel2)
    -
    -guess_binning(data)
    -

    Guess the binning/mode depending on the image shape -:param data: 2-tuple with the shape of the image or the image with a .shape attribute.

    -
    - -
    -
    -mask
    +
    +set_poni1(value)
    -
    -
    -maskfile
    +
    +
    +set_poni2(value)
    -
    -
    -name
    -

    Get a meaningful name for detector

    -
    +
    +
    +set_qa(_)
    +
    -
    -
    -pixel1
    +
    +
    +set_ra(_)
    -
    -
    -pixel2
    +
    +
    +set_rot1(value)
    -
    -
    -registry = {'imxpads10': <class 'pyFAI.detectors.ImXPadS10'>, 'rayonix_mx225hs': <class 'pyFAI.detectors.RayonixMx225hs'>, 'd5': <class 'pyFAI.detectors.Xpad_flat'>, 'thaleselectronics': <class 'pyFAI.detectors.Pixium'>, 'imxpad_s10': <class 'pyFAI.detectors.ImXPadS10'>, 'rayonix_mx340hs': <class 'pyFAI.detectors.RayonixMx340hs'>, 'condor': <class 'pyFAI.detectors.Fairchild'>, 'pilatuscdte2m': <class 'pyFAI.detectors.PilatusCdTe2M'>, 'oxd_titan': <class 'pyFAI.detectors.Titan'>, 'dexela_2923': <class 'pyFAI.detectors.Dexela2923'>, 'pilatus6m': <class 'pyFAI.detectors.Pilatus6M'>, 'titan_2k_x_2k': <class 'pyFAI.detectors.Titan'>, 'hf_262k': <class 'pyFAI.detectors.HF_262k'>, 'rayonixmx225': <class 'pyFAI.detectors.RayonixMx225'>, 'rayonixsx200': <class 'pyFAI.detectors.RayonixSx200'>, 'eiger4m': <class 'pyFAI.detectors.Eiger4M'>, 'rayonix_lx170': <class 'pyFAI.detectors.RayonixLx170'>, 'pilatuscdte300kw': <class 'pyFAI.detectors.PilatusCdTe300kw'>, 'pilatus300k': <class 'pyFAI.detectors.Pilatus300k'>, 'quantum_270': <class 'pyFAI.detectors.ADSC_Q270'>, 'rayonixmx300': <class 'pyFAI.detectors.RayonixMx300'>, 'pilatuscdte1m': <class 'pyFAI.detectors.PilatusCdTe1M'>, 'perkin': <class 'pyFAI.detectors.Perkin'>, 'rayonixmx340hs': <class 'pyFAI.detectors.RayonixMx340hs'>, 'rayonix_mx325': <class 'pyFAI.detectors.RayonixMx325'>, 'adsc_q270': <class 'pyFAI.detectors.ADSC_Q270'>, 'oxdtitan': <class 'pyFAI.detectors.Titan'>, 'dexela2923': <class 'pyFAI.detectors.Dexela2923'>, 'xpads540flat': <class 'pyFAI.detectors.Xpad_flat'>, 'titan': <class 'pyFAI.detectors.Titan'>, 'aarhus': <class 'pyFAI.detectors.Aarhus'>, 'rayonix_mx425hs': <class 'pyFAI.detectors.RayonixMx425hs'>, 'hf_4m': <class 'pyFAI.detectors.HF_4M'>, 'pilatuscdte300k': <class 'pyFAI.detectors.PilatusCdTe300k'>, 'thales_electronics': <class 'pyFAI.detectors.Pixium'>, 'rayonixmx300hs': <class 'pyFAI.detectors.RayonixMx300hs'>, 'pixium4700detector': <class 'pyFAI.detectors.Pixium'>, 'agilenttitan': <class 'pyFAI.detectors.Titan'>, 'rayonixsx165': <class 'pyFAI.detectors.RayonixSx165'>, 'pilatus100k': <class 'pyFAI.detectors.Pilatus100k'>, 'perkin_elmer': <class 'pyFAI.detectors.Perkin'>, 'aca1300': <class 'pyFAI.detectors.Basler'>, 'quantum315': <class 'pyFAI.detectors.ADSC_Q315'>, 'rayonixsx85hs': <class 'pyFAI.detectors.RayonixSx85hs'>, 'imxpads140': <class 'pyFAI.detectors.ImXPadS140'>, 'rayonix_mx170': <class 'pyFAI.detectors.RayonixMx170'>, 'pilatus300kw': <class 'pyFAI.detectors.Pilatus300kw'>, 'hf-130k': <class 'pyFAI.detectors.HF_130K'>, 'rayonixsx30hs': <class 'pyFAI.detectors.RayonixSx30hs'>, 'mar345': <class 'pyFAI.detectors.Mar345'>, 'perkindetector': <class 'pyFAI.detectors.Perkin'>, 'rayonix_lx255hs': <class 'pyFAI.detectors.RayonixLx255'>, 'rayonix_mx225': <class 'pyFAI.detectors.RayonixMx225'>, 'eiger1m': <class 'pyFAI.detectors.Eiger1M'>, 'mar_345': <class 'pyFAI.detectors.Mar345'>, 'pilatus2m': <class 'pyFAI.detectors.Pilatus2M'>, 'hf-1m': <class 'pyFAI.detectors.HF_1M'>, 'fairchildcondor486:90': <class 'pyFAI.detectors.Fairchild'>, 'rayonixmx170': <class 'pyFAI.detectors.RayonixMx170'>, 'mar165': <class 'pyFAI.detectors.RayonixSx165'>, 'hf_2m': <class 'pyFAI.detectors.HF_2M'>, 'titan2kx2k': <class 'pyFAI.detectors.Titan'>, 'rayonix_mx300hs': <class 'pyFAI.detectors.RayonixMx300hs'>, 'hf-9.4m': <class 'pyFAI.detectors.HF_9M'>, 'fairchild_condor_486:90': <class 'pyFAI.detectors.Fairchild'>, 'hf-262k': <class 'pyFAI.detectors.HF_262k'>, 'xpad_flat': <class 'pyFAI.detectors.Xpad_flat'>, 'quantum_315': <class 'pyFAI.detectors.ADSC_Q315'>, 'pi': <class 'pyFAI.detectors.RaspberryPi'>, 'pilatus1m': <class 'pyFAI.detectors.Pilatus1M'>, 'xpad_s540_flat': <class 'pyFAI.detectors.Xpad_flat'>, 'pixium_4700_detector': <class 'pyFAI.detectors.Pixium'>, 'basler': <class 'pyFAI.detectors.Basler'>, 'rayonix_sx200': <class 'pyFAI.detectors.RayonixSx200'>, 'quantum270': <class 'pyFAI.detectors.ADSC_Q270'>, 'perkin_detector': <class 'pyFAI.detectors.Perkin'>, 'mar3450': <class 'pyFAI.detectors.Mar345'>, 'pixium': <class 'pyFAI.detectors.Pixium'>, 'fairchild': <class 'pyFAI.detectors.Fairchild'>, 'raspberry': <class 'pyFAI.detectors.RaspberryPi'>, 'rayonixmx225hs': <class 'pyFAI.detectors.RayonixMx225hs'>, 'apexii': <class 'pyFAI.detectors.Apex2'>, 'quantum_210': <class 'pyFAI.detectors.ADSC_Q210'>, 'bruker': <class 'pyFAI.detectors.Apex2'>, 'raspberrypi': <class 'pyFAI.detectors.RaspberryPi'>, 'rayonixmx425hs': <class 'pyFAI.detectors.RayonixMx425hs'>, 'eiger16m': <class 'pyFAI.detectors.Eiger16M'>, 'imxpads70': <class 'pyFAI.detectors.ImXPadS70'>, 'rayonix_sx30hs': <class 'pyFAI.detectors.RayonixSx30hs'>, 'hf_130k': <class 'pyFAI.detectors.HF_130K'>, 'agilent_titan': <class 'pyFAI.detectors.Titan'>, 'rayonixlx255hs': <class 'pyFAI.detectors.RayonixLx255'>, 'rayonix133': <class 'pyFAI.detectors.Rayonix133'>, 'rayonix_lx255': <class 'pyFAI.detectors.RayonixLx255'>, 'perkinelmer': <class 'pyFAI.detectors.Perkin'>, 'rayonix': <class 'pyFAI.detectors.Rayonix'>, 'rayonix_sx165': <class 'pyFAI.detectors.RayonixSx165'>, 'adsc_q4': <class 'pyFAI.detectors.ADSC_Q4'>, 'rayonixlx255': <class 'pyFAI.detectors.RayonixLx255'>, 'apex2': <class 'pyFAI.detectors.Apex2'>, 'hf-2.4m': <class 'pyFAI.detectors.HF_2M'>, 'detector': <class 'pyFAI.detectors.Detector'>, 'imxpad_s140': <class 'pyFAI.detectors.ImXPadS140'>, 'adsc_q210': <class 'pyFAI.detectors.ADSC_Q210'>, 'quantum4': <class 'pyFAI.detectors.ADSC_Q4'>, 'rayonixlx170': <class 'pyFAI.detectors.RayonixLx170'>, 'hf_9m': <class 'pyFAI.detectors.HF_9M'>, 'quantum210': <class 'pyFAI.detectors.ADSC_Q210'>, 'hf_1m': <class 'pyFAI.detectors.HF_1M'>, 'mar133': <class 'pyFAI.detectors.Rayonix133'>, 'pilatus200k': <class 'pyFAI.detectors.Pilatus200k'>, 'imxpad_s70': <class 'pyFAI.detectors.ImXPadS70'>, 'adsc_q315': <class 'pyFAI.detectors.ADSC_Q315'>, 'rayonixmx325': <class 'pyFAI.detectors.RayonixMx325'>, 'rayonix_sx85hs': <class 'pyFAI.detectors.RayonixSx85hs'>, 'eiger9m': <class 'pyFAI.detectors.Eiger9M'>, 'hf-4m': <class 'pyFAI.detectors.HF_4M'>, 'rayonix_mx300': <class 'pyFAI.detectors.RayonixMx300'>, 'quantum_4': <class 'pyFAI.detectors.ADSC_Q4'>}
    +
    +
    +set_rot2(value)
    -
    -save(filename)
    -

    Saves the detector description into a NeXus file, adapted from: -http://download.nexusformat.org/sphinx/classes/base_classes/NXdetector.html -Main differences:

    -
    -
      -
    • differentiate pixel center from pixel corner offsets
    • -
    • store all offsets are ndarray according to slow/fast dimension (not x, y)
    • -
    -
    +
    +set_rot3(value)
    +
    + +
    +
    +set_spline(spline)
    +
    + +
    +
    +set_splineFile(splineFile)
    +
    + +
    +
    +set_ttha(_)
    +
    + +
    +
    +set_wavelength(value)
    +
    + +
    +
    +classmethod sload(filename)
    +

    A static method combining the constructor and the loader from +a file

    - + + +
    Parameters:filename – name of the file on the disc
    Parameters:filename (string) – name of the file to load
    Returns:instance of Gerometry of AzimuthalIntegrator set-up with the parameter from the file.
    -
    -setFit2D(**kwarg)
    -

    Twin method of getFit2D: setup a detector instance according to a description

    +
    +solidAngleArray(shape=None, order=3, absolute=False)
    +

    Generate an array for the solid angle correction +given the shape of the detector.

    +

    solid_angle = cos(incidence)^3

    - +
    Parameters:kwarg – dictionary containing pixel1, pixel2 and splineFile
    Parameters:
      +
    • shape – shape of the array expected
    • +
    • order – should be 3, power of the formula just obove
    • +
    • absolute – the absolute solid angle is calculated as:
    • +
    +
    +

    SA = pix1*pix2/dist^2 * cos(incidence)^3

    +
    +
    +spline
    +
    + +
    +
    +splineFile
    +
    +
    -
    -setPyFAI(**kwarg)
    -

    Twin method of getPyFAI: setup a detector instance according to a description

    +
    +tth(d1, d2, param=None, path='cython')
    +

    Calculates the 2theta value for the center of a given pixel +(or set of pixels)

    - + + + + +
    Parameters:kwarg – dictionary containing detector, pixel1, pixel2 and splineFile
    Parameters:
      +
    • d1 (scalar or array of scalar) – position(s) in pixel in first dimension (c order)
    • +
    • d2 (scalar or array of scalar) – position(s) in pixel in second dimension (c order)
    • +
    • path – can be “cos”, “tan” or “cython”
    • +
    +
    Returns:

    2theta in radians

    +
    Return type:

    float or array of floats.

    +
    -
    -set_binning(bin_size=(1, 1))
    -

    Set the “binning” of the detector,

    +
    +tth_corner(*arg, **kw)
    +

    decorator that deprecates the use of a function

    +
    + +
    +
    +ttha
    +

    2theta array in cache

    +
    + +
    +
    +twoThetaArray(shape=None)
    +

    Generate an array of two-theta(i,j) in radians for each pixel in detector

    +

    the 2theta array values are in radians

    - + + +
    Parameters:bin_size ((int, int)) – binning as integer or tuple of integers.
    Parameters:shape – shape of the detector
    Returns:array of 2theta position in radians
    +
    +
    +wavelength
    +
    +
    -
    -set_config(config)
    -

    Sets the configuration of the detector. This implies: -- Orientation: integers -- Binning -- ROI

    -

    The configuration is either a python dictionary or a JSON string or a file containing this JSON configuration

    -

    keys in that dictionary are : -“orientation”: integers from 0 to 7 -“binning”: integer or 2-tuple of integers. If only one integer is provided, -“offset”: coordinate (in pixels) of the start of the detector

    +
    +write(filename)
    +

    Save the geometry parameters.

    + +++ + + + +
    Parameters:filename (string) – name of the file where to save the parameters
    -
    -
    -set_dx(dx=None)
    -

    set the pixel-wise displacement along X (dim2):

    +
    +
    +

    geometryRefinement Module

    +
    +
    +class pyFAI.geometryRefinement.GeometryRefinement(data, dist=1, poni1=None, poni2=None, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    +

    Bases: pyFAI.azimuthalIntegrator.AzimuthalIntegrator

    -
    -set_dy(dy=None)
    -

    set the pixel-wise displacement along Y (dim1):

    +
    +__init__(data, dist=1, poni1=None, poni2=None, rot1=0, rot2=0, rot3=0, pixel1=None, pixel2=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    +
    +++ + + + +
    Parameters:
      +
    • data – ndarray float64 shape = n, 3 +col0: pos in dim0 (in pixels) +col1: pos in dim1 (in pixels) +col2: ring index in calibrant object
    • +
    • dist – guessed sample-detector distance (optional, in m)
    • +
    • poni1 – guessed PONI coordinate along the Y axis (optional, in m)
    • +
    • poni2 – guessed PONI coordinate along the X axis (optional, in m)
    • +
    • rot1 – guessed tilt of the detector around the Y axis (optional, in rad)
    • +
    • rot2 – guessed tilt of the detector around the X axis (optional, in rad)
    • +
    • rot3 – guessed tilt of the detector around the incoming beam axis (optional, in rad)
    • +
    • pixel1 – Pixel size along the vertical direction of the detector (in m), almost mandatory
    • +
    • pixel2 – Pixel size along the horizontal direction of the detector (in m), almost mandatory
    • +
    • splineFile – file describing the detector as 2 cubic splines. Replaces pixel1 & pixel2
    • +
    • detector – name of the detector or Detector instance. Replaces splineFile, pixel1 & pixel2
    • +
    • wavelength – wavelength in m (1.54e-10)
    • +
    • calibrant – instance of pyFAI.calibrant.Calibrant containing the d-Spacing
    • +
    +
    -
    -set_mask(mask)
    +
    +anneal(maxiter=1000000)
    -
    -set_maskfile(maskfile)
    -
    +
    +calc_2th(rings, wavelength=None)
    +
    +++ + + + +
    Parameters:
      +
    • rings – indices of the rings. starts at 0 and self.dSpacing should be long enough !!!
    • +
    • wavelength – wavelength in meter
    • +
    +
    +
    -
    -set_pixel1(value)
    +
    +chi2(param=None)
    -
    -set_pixel2(value)
    +
    +chi2_wavelength(param=None)
    -
    -set_splineFile(splineFile)
    -
    +
    +confidence(with_rot=True)
    +

    Confidence interval obtained from the second derivative of the error function +next to its minimum value.

    +

    Note the confidence interval increases with the number of points which is “surprizing”

    + +++ + + + + + +
    Parameters:with_rot – if true include rot1 & rot2 in the parameter set.
    Returns:std_dev, confidence
    +
    + +
    +
    +curve_fit(with_rot=True)
    +

    Refine the geometry and provide confidence interval +Use curve_fit from scipy.optimize to not only refine the geometry (unconstrained fit)

    + +++ + + + + + +
    Parameters:with_rot – include rotation intro error measurment
    Returns:std_dev, confidence
    +
    -
    -splineFile
    +
    +dist_max
    -
    -uniform_pixel = True
    +
    +dist_min
    - +
    +
    +get_dist_max()
    +
    -
    -
    -class pyFAI.detectors.DetectorMeta(name, bases, dct)
    -

    Bases: type

    -

    Metaclass used to register all detector classes inheriting from Detector

    -
    +
    +
    +get_dist_min()
    +
    -
    -
    -class pyFAI.detectors.Dexela2923(pixel1=7.5e-05, pixel2=7.5e-05)
    -

    Bases: pyFAI.detectors.Detector

    -

    Dexela CMOS family detector

    -
    -
    -MAX_SHAPE = (3888, 3072)
    +
    +
    +get_poni1_max()
    -
    -
    -aliases = ['Dexela 2923']
    +
    +
    +get_poni1_min()
    -
    -
    -force_pixel = True
    +
    +
    +get_poni2_max()
    -
    +
    +
    +get_poni2_min()
    +
    -
    -
    -class pyFAI.detectors.Eiger(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    -

    Bases: pyFAI.detectors.Detector

    -

    Eiger detector: generic description containing mask algorithm

    -
    -
    -MODULE_GAP = (37, 10)
    +
    +
    +get_rot1_max()
    -
    -
    -MODULE_SIZE = (514, 1030)
    +
    +
    +get_rot1_min()
    -
    -calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    -

    Calculate the position of each pixel center in cartesian coordinate -and in meter of a couple of coordinates. -The half pixel offset is taken into account here !!!

    - --- - - - - - - - -
    Parameters:
      -
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • -
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • -
    -
    Returns:

    p1, p2 position in meter of the center of each pixels.

    -
    Return type:

    2-tuple of numpy.ndarray

    -
    -

    d1 and d2 must have the same shape, returned array will have -the same shape.

    -
    +
    +get_rot2_max()
    +
    -
    -calc_mask()
    -

    Returns a generic mask for Pilatus detectors...

    -
    +
    +get_rot2_min()
    +
    -
    -
    -force_pixel = True
    +
    +
    +get_rot3_max()
    -
    +
    +
    +get_rot3_min()
    +
    -
    -
    -class pyFAI.detectors.Eiger16M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    -

    Bases: pyFAI.detectors.Eiger

    -

    Eiger 16M detector

    -
    -
    -MAX_SHAPE = (4371, 4150)
    +
    +
    +get_wavelength_max()
    +
    + +
    +
    +get_wavelength_min()
    +
    +
    +guess_poni()
    +

    Poni can be guessed by the centroid of the ring with lowest 2Theta

    -
    -
    -class pyFAI.detectors.Eiger1M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    -

    Bases: pyFAI.detectors.Eiger

    -

    Eiger 1M detector

    -
    -MAX_SHAPE = (1065, 1030)
    +
    +poni1_max
    -
    - -
    -
    -class pyFAI.detectors.Eiger4M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    -

    Bases: pyFAI.detectors.Eiger

    -

    Eiger 4M detector

    -
    -MAX_SHAPE = (2167, 2070)
    +
    +poni1_min
    -
    +
    +
    +poni2_max
    +
    -
    -
    -class pyFAI.detectors.Eiger9M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    -

    Bases: pyFAI.detectors.Eiger

    -

    Eiger 9M detector

    -
    -MAX_SHAPE = (3269, 3110)
    +
    +poni2_min
    -
    +
    +
    +refine1()
    +
    -
    -
    -class pyFAI.detectors.FReLoN(splineFile=None)
    -

    Bases: pyFAI.detectors.Detector

    -

    FReLoN detector: -The spline is mandatory to correct for geometric distortion of the taper

    -

    TODO: create automatically a mask that removes pixels out of the “valid reagion”

    -
    -calc_mask()
    -

    Returns a generic mask for Frelon detectors... -All pixels which (center) turns to be out of the valid region are by default discarded

    -
    +
    +refine2(maxiter=1000000, fix=None)
    +
    -
    +
    +
    +refine2_wavelength(maxiter=1000000, fix=None)
    +
    -
    -
    -class pyFAI.detectors.Fairchild(pixel1=1.5e-05, pixel2=1.5e-05)
    -

    Bases: pyFAI.detectors.Detector

    -

    Fairchild Condor 486:90 detector

    -
    -
    -MAX_SHAPE = (4096, 4096)
    +
    +
    +residu1(param, d1, d2, rings)
    -
    -
    -aliases = ['Fairchild', 'Condor', 'Fairchild Condor 486:90']
    +
    +
    +residu1_wavelength(param, d1, d2, rings)
    -
    -
    -force_pixel = True
    +
    +
    +residu2(param, d1, d2, rings)
    -
    -
    -uniform_pixel = True
    +
    +
    +residu2_wavelength(param, d1, d2, rings)
    +
    + +
    +
    +residu2_wavelength_weighted(param, d1, d2, rings, weight)
    +
    + +
    +
    +residu2_weighted(param, d1, d2, rings, weight)
    +
    +
    +roca()
    +

    run roca to optimise the parameter set

    -
    -
    -class pyFAI.detectors.HF_130K(pixel1=0.00015, pixel2=0.00015)
    -

    Bases: pyFAI.detectors.Detector

    -

    ADSC HF-130K 1 module

    -

    Informations from -http://www.adsc-xray.com/products/pixel-array-detectors/hf-130k/

    -
    -MAX_SHAPE = (256, 512)
    +
    +rot1_max
    -
    -aliases = ['HF-130k']
    +
    +rot1_min
    -
    -force_pixel = True
    +
    +rot2_max
    -
    - -
    -
    -class pyFAI.detectors.HF_1M(pixel1=0.00015, pixel2=0.00015)
    -

    Bases: pyFAI.detectors.Detector

    -

    ADSC HF-1M 2x4 modules

    -

    Informations from -http://www.adsc-xray.com/products/pixel-array-detectors/hf-1m/

    -

    Nota: gaps between modules is not known/described

    -
    -MAX_SHAPE = (1024, 1024)
    +
    +rot2_min
    -
    -aliases = ['HF-1M']
    +
    +rot3_max
    -
    -force_pixel = True
    +
    +rot3_min
    +
    + +
    +
    +set_dist_max(value)
    +
    + +
    +
    +set_dist_min(value)
    +
    + +
    +
    +set_poni1_max(value)
    +
    + +
    +
    +set_poni1_min(value)
    +
    + +
    +
    +set_poni2_max(value)
    +
    + +
    +
    +set_poni2_min(value)
    +
    + +
    +
    +set_rot1_max(value)
    +
    + +
    +
    +set_rot1_min(value)
    +
    + +
    +
    +set_rot2_max(value)
    +
    +
    +set_rot2_min(value)
    +
    + +
    +
    +set_rot3_max(value)
    +
    + +
    +
    +set_rot3_min(value)
    +
    + +
    +
    +set_tolerance(value=10)
    +

    Set the tolerance for a refinement of the geometry; in percent of the original value

    + +++ + + + +
    Parameters:value – Tolerance as a percentage
    -
    -
    -class pyFAI.detectors.HF_262k(pixel1=0.00015, pixel2=0.00015)
    -

    Bases: pyFAI.detectors.Detector

    -

    ADSC HF-262k 2 module

    -

    Informations from -http://www.adsc-xray.com/products/pixel-array-detectors/hf-262k/

    -

    Nota: gaps between modules is not known/described

    -
    -
    -MAX_SHAPE = (512, 512)
    +
    +
    +set_wavelength_max(value)
    +
    + +
    +
    +set_wavelength_min(value)
    +
    + +
    +
    +simplex(maxiter=1000000)
    -
    -aliases = ['HF-262k']
    +
    +wavelength_max
    -
    -force_pixel = True
    +
    +wavelength_min
    +
    +
    +

    detectors Module

    +

    Description of all detectors with a factory to instantiate them

    -
    -class pyFAI.detectors.HF_2M(pixel1=0.00015, pixel2=0.00015)
    +
    +class pyFAI.detectors.ADSC_Q210(pixel1=5.1e-05, pixel2=5.1e-05)

    Bases: pyFAI.detectors.Detector

    -

    ADSC HF-1M 3x6 modules

    +

    ADSC Quantum 210r detector, 2x2 chips

    Informations from -http://www.adsc-xray.com/products/pixel-array-detectors/hf-2.4m/

    -

    Nota: gaps between modules is not known/described

    +http://www.adsc-xray.com/products/ccd-detectors/q210r-ccd-detector/

    +

    Question: how are the gaps handled ?

    -
    -MAX_SHAPE = (1536, 1536)
    +
    +MAX_SHAPE = (4096, 4096)
    +
    + +
    +
    +__init__(pixel1=5.1e-05, pixel2=5.1e-05)
    -
    -aliases = ['HF-2.4M']
    +
    +aliases = ['Quantum 210']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.HF_4M(pixel1=0.00015, pixel2=0.00015)
    +
    +class pyFAI.detectors.ADSC_Q270(pixel1=6.48e-05, pixel2=6.48e-05)

    Bases: pyFAI.detectors.Detector

    -

    ADSC HF-4M 4x8 modules

    +

    ADSC Quantum 270r detector, 2x2 chips

    Informations from -http://www.adsc-xray.com/products/pixel-array-detectors/hf-4m/

    +http://www.adsc-xray.com/products/ccd-detectors/q270-ccd-detector/

    +

    Question: how are the gaps handled ?

    -
    -MAX_SHAPE = (2048, 2048)
    +
    +MAX_SHAPE = (4168, 4168)
    +
    + +
    +
    +__init__(pixel1=6.48e-05, pixel2=6.48e-05)
    -
    -aliases = ['HF-4M']
    +
    +aliases = ['Quantum 270']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.HF_9M(pixel1=0.00015, pixel2=0.00015)
    +
    +class pyFAI.detectors.ADSC_Q315(pixel1=5.1e-05, pixel2=5.1e-05)

    Bases: pyFAI.detectors.Detector

    -

    ADSC HF-130K 1 module

    +

    ADSC Quantum 315r detector, 3x3 chips

    Informations from -http://www.adsc-xray.com/products/pixel-array-detectors/hf-9-4m/

    +http://www.adsc-xray.com/products/ccd-detectors/q315r-ccd-detector/

    +

    Question: how are the gaps handled ?

    -
    -MAX_SHAPE = (3072, 3072)
    +
    +MAX_SHAPE = (6144, 6144)
    +
    + +
    +
    +__init__(pixel1=5.1e-05, pixel2=5.1e-05)
    -
    -aliases = ['HF-9.4M']
    +
    +aliases = ['Quantum 315']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.ImXPadS10(pixel1=0.00013, pixel2=0.00013, max_shape=None, module_size=None)
    +
    +class pyFAI.detectors.ADSC_Q4(pixel1=8.2e-05, pixel2=8.2e-05)

    Bases: pyFAI.detectors.Detector

    -

    ImXPad detector: ImXPad s10 detector with 1x1modules

    +

    ADSC Quantum 4r detector, 2x2 chips

    +

    Informations from +http://proteincrystallography.org/detectors/adsc.php

    +

    Question: how are the gaps handled ?

    -
    -BORDER_SIZE_RELATIVE = 2.5
    +
    +MAX_SHAPE = (2304, 2304)
    +
    + +
    +
    +__init__(pixel1=8.2e-05, pixel2=8.2e-05)
    -
    -MAX_SHAPE = (120, 80)
    +
    +aliases = ['Quantum 4']
    -
    -MODULE_SIZE = (120, 80)
    +
    +force_pixel = True
    +
    + +
    +
    +class pyFAI.detectors.Aarhus(pixel1=2.5e-05, pixel2=2.5e-05, radius=0.3)
    +

    Bases: pyFAI.detectors.Detector

    +

    Cylindrical detector made of a bent imaging-plate. +Developped at the Danish university of Aarhus +r = 1.2m or 0.3m

    +

    The image has to be laid-out horizontally

    +

    Nota: the detector is bending towards the sample, hence reducing the sample-detector distance. +This is why z<0 (or p3<0)

    +

    TODO: update cython code for 3d detectors +use expand2d instead of outer product with ones

    -
    -PIXEL_SIZE = (0.00013, 0.00013)
    +
    +IS_FLAT = False
    -
    -aliases = ['Imxpad S10']
    +
    +MAX_SHAPE = (1000, 16000)
    -
    -calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    +
    +__init__(pixel1=2.5e-05, pixel2=2.5e-05, radius=0.3)
    +
    + +
    +
    +calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)

    Calculate the position of each pixel center in cartesian coordinate and in meter of a couple of coordinates. -The half pixel offset is taken into account here !!!

    +The half pixel offset is taken into account here !!! +Adapted to Nexus detector definition

    @@ -3456,6 +3724,8 @@

    Navigation

    @@ -3471,29 +3741,16 @@

    Navigation

    the same shape.

    -
    -
    -calc_mask()
    -

    Calculate the mask

    -
    +
    +
    +force_pixel = True
    +
    -
    -calc_pixels_edges()
    -

    Calculate the position of the pixel edges

    -
    - -
    -
    -force_pixel = True
    -
    - -
    -
    -get_pixel_corners()
    +
    +get_pixel_corners(use_cython=True)

    Calculate the position of the corner of the pixels

    This should be overwritten by class representing non-contiguous detector (Xpad, ...)

    -

    Precision float32 is ok: precision of 1µm for a detector size of 1m

    Parameters:
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • +
    • center – retrieve the coordinate of the center of the pixel
    • +
    • use_cython – set to False to test Python implementeation
    @@ -3508,1133 +3765,3687 @@

    Navigation

    -
    -
    -uniform_pixel = False
    -
    -
    -
    -class pyFAI.detectors.ImXPadS140(pixel1=0.00013, pixel2=0.00013)
    -

    Bases: pyFAI.detectors.ImXPadS10

    -

    ImXPad detector: ImXPad s140 detector with 2x7modules

    +
    +class pyFAI.detectors.Apex2(pixel1=0.00012, pixel2=0.00012)
    +

    Bases: pyFAI.detectors.Detector

    +

    BrukerApex2 detector

    +

    Actually a derivative from the Fairchild detector with higher binning

    -
    -BORDER_PIXEL_SIZE_RELATIVE = 2.5
    +
    +DEFAULT_PIXEL1 = 6e-05
    -
    -MAX_SHAPE = (240, 560)
    +
    +DEFAULT_PIXEL2 = 6e-05
    -
    -MODULE_SIZE = (120, 80)
    +
    +MAX_SHAPE = (1024, 1024)
    -
    -
    -PIXEL_SIZE = (0.00013, 0.00013)
    -
    +
    +
    +__init__(pixel1=0.00012, pixel2=0.00012)
    +

    Defaults to 2x2 binning

    +
    -
    -aliases = ['Imxpad S140']
    +
    +aliases = ['ApexII', 'Bruker']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.ImXPadS70(pixel1=0.00013, pixel2=0.00013)
    -

    Bases: pyFAI.detectors.ImXPadS10

    -

    ImXPad detector: ImXPad s70 detector with 1x7modules

    -
    -
    -BORDER_SIZE_RELATIVE = 2.5
    -
    - -
    -
    -MAX_SHAPE = (120, 560)
    -
    - -
    -
    -MODULE_SIZE = (120, 80)
    -
    - +
    +class pyFAI.detectors.Basler(pixel=3.75e-06)
    +

    Bases: pyFAI.detectors.Detector

    +

    Basler camera are simple CCD camara over GigaE

    -
    -PIXEL_EDGES = None
    +
    +MAX_SHAPE = (966, 1296)
    -
    -
    -PIXEL_SIZE = (0.00013, 0.00013)
    +
    +
    +__init__(pixel=3.75e-06)
    -
    -aliases = ['Imxpad S70']
    +
    +aliases = ['aca1300']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.Mar345(pixel1=0.0001, pixel2=0.0001)
    -

    Bases: pyFAI.detectors.Detector

    -

    Mar345 Imaging plate detector

    -

    In this detector, pixels are always square -The valid image size are 2300, 2000, 1600, 1200, 3450, 3000, 2400, 1800

    +
    +class pyFAI.detectors.Detector(pixel1=None, pixel2=None, splineFile=None, max_shape=None)
    +

    Bases: object

    +

    Generic class representing a 2D detector

    -
    -MAX_SHAPE = (3450, 3450)
    +
    +API_VERSION = '1.0'
    -
    -VALID_SIZE = {2000: 0.00015, 1600: 0.00015, 3000: 0.0001, 2400: 0.0001, 3450: 0.0001, 1200: 0.00015, 2300: 0.00015, 1800: 0.0001}
    +
    +IS_CONTIGUOUS = True
    -
    -aliases = ['MAR 345', 'Mar3450']
    +
    +IS_FLAT = True
    -
    -calc_mask()
    +
    +__init__(pixel1=None, pixel2=None, splineFile=None, max_shape=None)
    +
    +++ + + + +
    Parameters:
      +
    • pixel1 (float) – size of the pixel in meter along the slow dimension (often Y)
    • +
    • pixel2 (float) – size of the pixel in meter along the fast dimension (often X)
    • +
    • splineFile (str) – path to file containing the geometric correction.
    • +
    • max_shape (2-tuple of integrers) – maximum size of the detector
    • +
    +
    +
    + +
    +
    +aliases = []
    -
    -force_pixel = True
    +
    +binning
    -
    -guess_binning(data)
    -

    Guess the binning/mode depending on the image shape -:param data: 2-tuple with the shape of the image or the image with a .shape attribute.

    -
    - +
    +calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    +

    Calculate the position of each pixel center in cartesian coordinate +and in meter of a couple of coordinates. +The half pixel offset is taken into account here !!! +Adapted to Nexus detector definition

    + +++ + + + + + + + +
    Parameters:
      +
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • +
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • +
    • center – retrieve the coordinate of the center of the pixel, unless gives one corner
    • +
    • use_cython – set to False to test Python implementation
    • +
    +
    Returns:

    position in meter of the center of each pixels.

    +
    Return type:

    3xndarray, the later being None if IS_FLAT

    +
    +

    d1 and d2 must have the same shape, returned array will have +the same shape.

    +

    pos_z is None for flat detectors

    -
    -
    -class pyFAI.detectors.NexusDetector(filename=None)
    -

    Bases: pyFAI.detectors.Detector

    -

    Class representing a 2D detector loaded from a NeXus file

    -
    -getFit2D()
    -

    Helper method to serialize the description of a detector using the Fit2d units

    +
    +calc_mask()
    +

    Method calculating the mask for a given detector

    +

    Detectors with gaps should overwrite this method with +something actually calculating the mask!

    - + - +
    Returns:representation of the detector easy to serialize
    Returns:the mask with valid pixel to 0
    Return type:dict
    Return type:numpy ndarray of int8 or None
    -
    -
    -getPyFAI()
    -

    Helper method to serialize the description of a detector using the pyFAI way -with everything in S.I units.

    +
    +
    +classmethod factory(name, config=None)
    +

    A kind of factory...

    - + - + + +
    Returns:representation of the detector easy to serialize
    Parameters:
      +
    • name (str) – name of a detector
    • +
    • config (dict or JSON representation of it.) – configuration of the detector
    • +
    +
    Return type:dict
    Returns:

    an instance of the right detector, set-up if possible

    +
    Return type:

    pyFAI.detectors.Detector

    +
    +
    +
    +force_pixel = False
    +
    +
    -
    -load(filename)
    -

    Loads the detector description from a NeXus file, adapted from: -http://download.nexusformat.org/sphinx/classes/base_classes/NXdetector.html

    +
    +getFit2D()
    +

    Helper method to serialize the description of a detector using the Fit2d units

    - + + +
    Parameters:filename – name of the file on the disk
    Returns:representation of the detector easy to serialize
    Return type:dict
    -
    -
    -classmethod sload(filename)
    -

    Instantiate the detector description from a NeXus file, adapted from: -http://download.nexusformat.org/sphinx/classes/base_classes/NXdetector.html

    +
    +
    +getPyFAI()
    +

    Helper method to serialize the description of a detector using the pyFAI way +with everything in S.I units.

    - + - +
    Parameters:filename – name of the file on the disk
    Returns:representation of the detector easy to serialize
    Returns:Detector instance
    Return type:dict
    -
    - -
    -
    -class pyFAI.detectors.Perkin(pixel1=0.0002, pixel2=0.0002)
    -

    Bases: pyFAI.detectors.Detector

    -

    Perkin detector

    -
    -
    -DEFAULT_PIXEL1 = 0.0002
    +
    +
    +get_binning()
    -
    -
    -DEFAULT_PIXEL2 = 0.0002
    +
    +
    +get_mask()
    -
    -
    -MAX_SHAPE = (4096, 4096)
    +
    +
    +get_maskfile()
    +
    + +
    +
    +get_name()
    +

    Get a meaningful name for detector

    +
    + +
    +
    +get_pixel1()
    +
    + +
    +
    +get_pixel2()
    +
    + +
    +
    +get_pixel_corners()
    +

    Calculate the position of the corner of the pixels

    +

    This should be overwritten by class representing non-contiguous detector (Xpad, ...)

    +

    Precision float32 is ok: precision of 1µm for a detector size of 1m

    + +++ + + + +
    Returns:4D array containing: +pixel index (slow dimension) +pixel index (fast dimension) +corner index (A, B, C or D), triangles or hexagons can be handled the same way +vertex position (z,y,x)
    +
    + +
    +
    +get_splineFile()
    +
    +
    +guess_binning(data)
    +

    Guess the binning/mode depending on the image shape +:param data: 2-tuple with the shape of the image or the image with a .shape attribute.

    +
    +
    -
    -aliases = ['Perkin detector', 'Perkin Elmer']
    +
    +mask
    -
    -force_pixel = True
    +
    +maskfile
    +
    +
    +name
    +

    Get a meaningful name for detector

    -
    -
    -class pyFAI.detectors.Pilatus(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Detector

    -

    Pilatus detector: generic description containing mask algorithm

    -

    Sub-classed by Pilatus1M, Pilatus2M and Pilatus6M

    -
    -MODULE_GAP = (17, 7)
    +
    +pixel1
    -
    -MODULE_SIZE = (195, 487)
    +
    +pixel2
    +
    + +
    +
    +registry = {'pilatus1m_cdte': <class 'pyFAI.detectors.PilatusCdTe1M'>, 'imxpads10': <class 'pyFAI.detectors.ImXPadS10'>, 'pilatus1mcdte': <class 'pyFAI.detectors.PilatusCdTe1M'>, 'rayonix_mx225hs': <class 'pyFAI.detectors.RayonixMx225hs'>, 'pilatus_cdte_2m': <class 'pyFAI.detectors.PilatusCdTe2M'>, 'd5': <class 'pyFAI.detectors.Xpad_flat'>, 'eiger_500k': <class 'pyFAI.detectors.Eiger500k'>, 'rayonix_mx170-hs': <class 'pyFAI.detectors.RayonixMx170'>, 'imxpad_s10': <class 'pyFAI.detectors.ImXPadS10'>, 'rayonix_mx340hs': <class 'pyFAI.detectors.RayonixMx340hs'>, 'condor': <class 'pyFAI.detectors.Fairchild'>, 'eiger16m': <class 'pyFAI.detectors.Eiger16M'>, 'pilatus_1m': <class 'pyFAI.detectors.Pilatus1M'>, 'oxd_titan': <class 'pyFAI.detectors.Titan'>, 'perkin_detector': <class 'pyFAI.detectors.Perkin'>, 'pilatus6m': <class 'pyFAI.detectors.Pilatus6M'>, 'titan_2k_x_2k': <class 'pyFAI.detectors.Titan'>, 'hf_262k': <class 'pyFAI.detectors.HF_262k'>, 'thales_electronics': <class 'pyFAI.detectors.Pixium'>, 'rayonixlx255': <class 'pyFAI.detectors.RayonixLx255'>, 'rayonixsx200': <class 'pyFAI.detectors.RayonixSx200'>, 'eiger4m': <class 'pyFAI.detectors.Eiger4M'>, 'rayonix_lx170': <class 'pyFAI.detectors.RayonixLx170'>, 'pilatuscdte300kw': <class 'pyFAI.detectors.PilatusCdTe300kw'>, 'pilatus300k': <class 'pyFAI.detectors.Pilatus300k'>, 'picamv2': <class 'pyFAI.detectors.RaspberryPi8M'>, 'picamv1': <class 'pyFAI.detectors.RaspberryPi5M'>, 'quantum_270': <class 'pyFAI.detectors.ADSC_Q270'>, 'rayonixmx300': <class 'pyFAI.detectors.RayonixMx300'>, 'pilatus300kw_cdte': <class 'pyFAI.detectors.PilatusCdTe300kw'>, 'rayonixlx225hs': <class 'pyFAI.detectors.RayonixLx255'>, 'pilatuscdte1m': <class 'pyFAI.detectors.PilatusCdTe1M'>, 'raspberrypi5m': <class 'pyFAI.detectors.RaspberryPi5M'>, 'pilatus_cdte_300kw': <class 'pyFAI.detectors.PilatusCdTe300kw'>, 'perkin': <class 'pyFAI.detectors.Perkin'>, 'rayonixmx340hs': <class 'pyFAI.detectors.RayonixMx340hs'>, 'rayonix_mx325': <class 'pyFAI.detectors.RayonixMx325'>, 'picam_v2': <class 'pyFAI.detectors.RaspberryPi8M'>, 'adsc_q270': <class 'pyFAI.detectors.ADSC_Q270'>, 'rayonixmx170hs': <class 'pyFAI.detectors.RayonixMx170'>, 'pilatus_6m': <class 'pyFAI.detectors.Pilatus6M'>, 'oxdtitan': <class 'pyFAI.detectors.Titan'>, 'dexela2923': <class 'pyFAI.detectors.Dexela2923'>, 'xpads540flat': <class 'pyFAI.detectors.Xpad_flat'>, 'titan': <class 'pyFAI.detectors.Titan'>, 'aarhus': <class 'pyFAI.detectors.Aarhus'>, 'rayonix_mx425hs': <class 'pyFAI.detectors.RayonixMx425hs'>, 'hf_4m': <class 'pyFAI.detectors.HF_4M'>, 'pilatuscdte2m': <class 'pyFAI.detectors.PilatusCdTe2M'>, 'pilatuscdte300k': <class 'pyFAI.detectors.PilatusCdTe300k'>, 'pilatus_1m_cdte': <class 'pyFAI.detectors.PilatusCdTe1M'>, 'pilatus_300kw': <class 'pyFAI.detectors.Pilatus300kw'>, 'rayonixmx170-hs': <class 'pyFAI.detectors.RayonixMx170'>, 'rayonixmx300hs': <class 'pyFAI.detectors.RayonixMx300hs'>, 'pixium4700detector': <class 'pyFAI.detectors.Pixium'>, 'thaleselectronics': <class 'pyFAI.detectors.Pixium'>, 'agilenttitan': <class 'pyFAI.detectors.Titan'>, 'eiger500k': <class 'pyFAI.detectors.Eiger500k'>, 'rayonixsx165': <class 'pyFAI.detectors.RayonixSx165'>, 'pilatus100k': <class 'pyFAI.detectors.Pilatus100k'>, 'rayonix_lx170-hs': <class 'pyFAI.detectors.RayonixLx170'>, 'perkin_elmer': <class 'pyFAI.detectors.Perkin'>, 'aca1300': <class 'pyFAI.detectors.Basler'>, 'quantum315': <class 'pyFAI.detectors.ADSC_Q315'>, 'quantum4': <class 'pyFAI.detectors.ADSC_Q4'>, 'rayonixsx85hs': <class 'pyFAI.detectors.RayonixSx85hs'>, 'eiger_4m': <class 'pyFAI.detectors.Eiger4M'>, 'imxpads140': <class 'pyFAI.detectors.ImXPadS140'>, 'rayonix_mx170': <class 'pyFAI.detectors.RayonixMx170'>, 'pilatus300kw': <class 'pyFAI.detectors.Pilatus300kw'>, 'hf-130k': <class 'pyFAI.detectors.HF_130K'>, 'pilatus_100k': <class 'pyFAI.detectors.Pilatus100k'>, 'rayonixsx30hs': <class 'pyFAI.detectors.RayonixSx30hs'>, 'mar345': <class 'pyFAI.detectors.Mar345'>, 'perkindetector': <class 'pyFAI.detectors.Perkin'>, 'rayonix_mx425_hs': <class 'pyFAI.detectors.RayonixMx425hs'>, 'rayonix_mx225': <class 'pyFAI.detectors.RayonixMx225'>, 'eiger1m': <class 'pyFAI.detectors.Eiger1M'>, 'mar_345': <class 'pyFAI.detectors.Mar345'>, 'pilatus2m': <class 'pyFAI.detectors.Pilatus2M'>, 'hf_9m': <class 'pyFAI.detectors.HF_9M'>, 'rayonixlx170hs': <class 'pyFAI.detectors.RayonixLx170'>, 'hf-1m': <class 'pyFAI.detectors.HF_1M'>, 'eiger_1m': <class 'pyFAI.detectors.Eiger1M'>, 'rayonix_lx170_hs': <class 'pyFAI.detectors.RayonixLx170'>, 'rayonixmx170': <class 'pyFAI.detectors.RayonixMx170'>, 'pilatus2mcdte': <class 'pyFAI.detectors.PilatusCdTe2M'>, 'mar165': <class 'pyFAI.detectors.RayonixSx165'>, 'rayonixlx255-hs': <class 'pyFAI.detectors.RayonixLx255'>, 'pilatus_200k': <class 'pyFAI.detectors.Pilatus200k'>, 'hf_2m': <class 'pyFAI.detectors.HF_2M'>, 'titan2kx2k': <class 'pyFAI.detectors.Titan'>, 'pilatus_cdte_1m': <class 'pyFAI.detectors.PilatusCdTe1M'>, 'hf-9.4m': <class 'pyFAI.detectors.HF_9M'>, 'fairchild_condor_486:90': <class 'pyFAI.detectors.Fairchild'>, 'hf-262k': <class 'pyFAI.detectors.HF_262k'>, 'xpad_flat': <class 'pyFAI.detectors.Xpad_flat'>, 'quantum_315': <class 'pyFAI.detectors.ADSC_Q315'>, 'eiger_16m': <class 'pyFAI.detectors.Eiger16M'>, 'pilatus_300k': <class 'pyFAI.detectors.Pilatus300k'>, 'raspberrypi8m': <class 'pyFAI.detectors.RaspberryPi8M'>, 'pilatus1m': <class 'pyFAI.detectors.Pilatus1M'>, 'xpad_s540_flat': <class 'pyFAI.detectors.Xpad_flat'>, 'pixium_4700_detector': <class 'pyFAI.detectors.Pixium'>, 'basler': <class 'pyFAI.detectors.Basler'>, 'pilatus2m_cdte': <class 'pyFAI.detectors.PilatusCdTe2M'>, 'rayonix_sx200': <class 'pyFAI.detectors.RayonixSx200'>, 'quantum270': <class 'pyFAI.detectors.ADSC_Q270'>, 'dexela_2923': <class 'pyFAI.detectors.Dexela2923'>, 'mar3450': <class 'pyFAI.detectors.Mar345'>, 'pixium': <class 'pyFAI.detectors.Pixium'>, 'fairchild': <class 'pyFAI.detectors.Fairchild'>, 'rayonixmx225hs': <class 'pyFAI.detectors.RayonixMx225hs'>, 'apexii': <class 'pyFAI.detectors.Apex2'>, 'quantum_210': <class 'pyFAI.detectors.ADSC_Q210'>, 'bruker': <class 'pyFAI.detectors.Apex2'>, 'pilatus300kwcdte': <class 'pyFAI.detectors.PilatusCdTe300kw'>, 'pilatus_2m': <class 'pyFAI.detectors.Pilatus2M'>, 'rayonixmx425hs': <class 'pyFAI.detectors.RayonixMx425hs'>, 'imxpads70': <class 'pyFAI.detectors.ImXPadS70'>, 'pilatus_300k_cdte': <class 'pyFAI.detectors.PilatusCdTe300k'>, 'rayonix_sx30hs': <class 'pyFAI.detectors.RayonixSx30hs'>, 'eiger9m': <class 'pyFAI.detectors.Eiger9M'>, 'agilent_titan': <class 'pyFAI.detectors.Titan'>, 'rayonixlx255hs': <class 'pyFAI.detectors.RayonixLx255'>, 'rayonix133': <class 'pyFAI.detectors.Rayonix133'>, 'rayonix_lx255': <class 'pyFAI.detectors.RayonixLx255'>, 'rayonixlx170-hs': <class 'pyFAI.detectors.RayonixLx170'>, 'perkinelmer': <class 'pyFAI.detectors.Perkin'>, 'rayonix': <class 'pyFAI.detectors.Rayonix'>, 'rayonix_sx165': <class 'pyFAI.detectors.RayonixSx165'>, 'rayonix_mx300hs': <class 'pyFAI.detectors.RayonixMx300hs'>, 'rayonix_lx255-hs': <class 'pyFAI.detectors.RayonixLx255'>, 'adsc_q4': <class 'pyFAI.detectors.ADSC_Q4'>, 'rayonixmx225': <class 'pyFAI.detectors.RayonixMx225'>, 'rayonix_sx30_hs': <class 'pyFAI.detectors.RayonixSx30hs'>, 'apex2': <class 'pyFAI.detectors.Apex2'>, 'hf-2.4m': <class 'pyFAI.detectors.HF_2M'>, 'pilatus_cdte_300k': <class 'pyFAI.detectors.PilatusCdTe300k'>, 'detector': <class 'pyFAI.detectors.Detector'>, 'pilatus_2m_cdte': <class 'pyFAI.detectors.PilatusCdTe2M'>, 'picam_v1': <class 'pyFAI.detectors.RaspberryPi5M'>, 'imxpad_s140': <class 'pyFAI.detectors.ImXPadS140'>, 'fairchildcondor486:90': <class 'pyFAI.detectors.Fairchild'>, 'adsc_q210': <class 'pyFAI.detectors.ADSC_Q210'>, 'pilatus300kcdte': <class 'pyFAI.detectors.PilatusCdTe300k'>, 'rayonixlx170': <class 'pyFAI.detectors.RayonixLx170'>, 'pilatus300k_cdte': <class 'pyFAI.detectors.PilatusCdTe300k'>, 'rayonix_sx85_hs': <class 'pyFAI.detectors.RayonixSx85hs'>, 'rayonix_mx170_hs': <class 'pyFAI.detectors.RayonixMx170'>, 'rayonix_lx_255hs': <class 'pyFAI.detectors.RayonixLx255'>, 'quantum210': <class 'pyFAI.detectors.ADSC_Q210'>, 'hf_1m': <class 'pyFAI.detectors.HF_1M'>, 'rayonix_mx225_hs': <class 'pyFAI.detectors.RayonixMx225hs'>, 'mar133': <class 'pyFAI.detectors.Rayonix133'>, 'pilatus200k': <class 'pyFAI.detectors.Pilatus200k'>, 'hf_130k': <class 'pyFAI.detectors.HF_130K'>, 'pilatus_300kw_cdte': <class 'pyFAI.detectors.PilatusCdTe300kw'>, 'imxpad_s70': <class 'pyFAI.detectors.ImXPadS70'>, 'adsc_q315': <class 'pyFAI.detectors.ADSC_Q315'>, 'rayonixmx325': <class 'pyFAI.detectors.RayonixMx325'>, 'rayonix_sx85hs': <class 'pyFAI.detectors.RayonixSx85hs'>, 'eiger_9m': <class 'pyFAI.detectors.Eiger9M'>, 'rayonix_mx300_hs': <class 'pyFAI.detectors.RayonixMx300hs'>, 'hf-4m': <class 'pyFAI.detectors.HF_4M'>, 'rayonix_mx300': <class 'pyFAI.detectors.RayonixMx300'>, 'quantum_4': <class 'pyFAI.detectors.ADSC_Q4'>}
    -
    -calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    -

    Calculate the position of each pixel center in cartesian coordinate -and in meter of a couple of coordinates. -The half pixel offset is taken into account here !!!

    +
    +save(filename)
    +

    Saves the detector description into a NeXus file, adapted from: +http://download.nexusformat.org/sphinx/classes/base_classes/NXdetector.html +Main differences:

    +
    +
      +
    • differentiate pixel center from pixel corner offsets
    • +
    • store all offsets are ndarray according to slow/fast dimension (not x, y)
    • +
    +
    - + - + +
    Parameters:
      -
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • -
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • -
    -
    Parameters:filename – name of the file on the disc
    Returns:

    position in meter of the center of each pixels.

    -
    +
    + +
    +
    +setFit2D(**kwarg)
    +

    Twin method of getFit2D: setup a detector instance according to a description

    + +++ + - + +
    Parameters:kwarg – dictionary containing pixel1, pixel2 and splineFile
    Return type:

    ndarray

    -
    +
    + +
    +
    +setPyFAI(**kwarg)
    +

    Twin method of getPyFAI: setup a detector instance according to a description

    + +++ +
    Parameters:kwarg – dictionary containing detector, pixel1, pixel2 and splineFile
    -

    d1 and d2 must have the same shape, returned array will have -the same shape.

    -
    -calc_mask()
    -

    Returns a generic mask for Pilatus detectors...

    +
    +set_binning(bin_size=(1, 1))
    +

    Set the “binning” of the detector,

    + +++ + + + +
    Parameters:bin_size ((int, int)) – binning as integer or tuple of integers.
    -
    -
    -force_pixel = True
    -
    +
    +
    +set_config(config)
    +

    Sets the configuration of the detector. This implies: +- Orientation: integers +- Binning +- ROI

    +

    The configuration is either a python dictionary or a JSON string or a file containing this JSON configuration

    +

    keys in that dictionary are : +“orientation”: integers from 0 to 7 +“binning”: integer or 2-tuple of integers. If only one integer is provided, +“offset”: coordinate (in pixels) of the start of the detector

    +
    -
    -get_splineFile()
    -
    +
    +set_dx(dx=None)
    +

    set the pixel-wise displacement along X (dim2):

    +
    -
    -set_splineFile(splineFile=None)
    -

    In this case splinefile is a couple filenames

    +
    +set_dy(dy=None)
    +

    set the pixel-wise displacement along Y (dim1):

    -
    -
    -splineFile
    +
    +
    +set_mask(mask)
    -
    +
    +
    +set_maskfile(maskfile)
    +
    -
    -
    -class pyFAI.detectors.Pilatus100k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus 100k detector

    -
    -
    -MAX_SHAPE = (195, 487)
    +
    +
    +set_pixel1(value)
    -
    +
    +
    +set_pixel2(value)
    +
    -
    -
    -class pyFAI.detectors.Pilatus1M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus 1M detector

    -
    -
    -MAX_SHAPE = (1043, 981)
    +
    +
    +set_splineFile(splineFile)
    -
    +
    +
    +splineFile
    +
    -
    -
    -class pyFAI.detectors.Pilatus200k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus 200k detector

    -
    -MAX_SHAPE = (407, 487)
    +
    +uniform_pixel = True
    -
    -class pyFAI.detectors.Pilatus2M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus 2M detector

    -
    -
    -MAX_SHAPE = (1679, 1475)
    +
    +class pyFAI.detectors.DetectorMeta(name, bases, dct)
    +

    Bases: type

    +

    Metaclass used to register all detector classes inheriting from Detector

    +
    +
    +__init__(name, bases, dct)
    -
    -class pyFAI.detectors.Pilatus300k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus 300k detector

    +
    +class pyFAI.detectors.Dexela2923(pixel1=7.5e-05, pixel2=7.5e-05)
    +

    Bases: pyFAI.detectors.Detector

    +

    Dexela CMOS family detector

    -
    -MAX_SHAPE = (619, 487)
    +
    +MAX_SHAPE = (3888, 3072)
    -
    +
    +
    +__init__(pixel1=7.5e-05, pixel2=7.5e-05)
    +
    -
    -
    -class pyFAI.detectors.Pilatus300kw(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus 300k-wide detector

    -
    -MAX_SHAPE = (195, 1475)
    +
    +aliases = ['Dexela 2923']
    +
    + +
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.Pilatus6M(pixel1=0.000172, pixel2=0.000172)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus 6M detector

    +
    +class pyFAI.detectors.Eiger(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.Detector

    +

    Eiger detector: generic description containing mask algorithm

    -
    -MAX_SHAPE = (2527, 2463)
    +
    +MODULE_GAP = (37, 10)
    -
    +
    +
    +MODULE_SIZE = (514, 1030)
    +
    -
    -
    -class pyFAI.detectors.PilatusCdTe(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.Pilatus

    -

    Pilatus CdTe detector: Like the Pilatus with an extra 3 pixel in the middle -of every module (vertically)

    -
    -calc_mask()
    -

    Returns a generic mask for Pilatus detectors...

    +
    +__init__(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    +
    + +
    +
    +calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    +

    Calculate the position of each pixel center in cartesian coordinate +and in meter of a couple of coordinates. +The half pixel offset is taken into account here !!!

    + +++ + + + + + + + +
    Parameters:
      +
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • +
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • +
    +
    Returns:

    p1, p2 position in meter of the center of each pixels.

    +
    Return type:

    2-tuple of numpy.ndarray

    +
    +

    d1 and d2 must have the same shape, returned array will have +the same shape.

    +
    +
    +calc_mask()
    +

    Returns a generic mask for Pilatus detectors...

    -
    -
    -class pyFAI.detectors.PilatusCdTe1M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.PilatusCdTe

    -

    Pilatus CdTe 1M detector

    -
    -MAX_SHAPE = (1043, 981)
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.PilatusCdTe2M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.PilatusCdTe

    -

    Pilatus CdTe 2M detector

    +
    +class pyFAI.detectors.Eiger16M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.Eiger

    +

    Eiger 16M detector

    -
    -MAX_SHAPE = (1679, 1475)
    +
    +MAX_SHAPE = (4371, 4150)
    -
    - -
    -
    -class pyFAI.detectors.PilatusCdTe300k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.PilatusCdTe

    -

    Pilatus CdTe 300k detector

    -
    -MAX_SHAPE = (619, 487)
    +
    +aliases = ['Eiger 16M']
    -
    -class pyFAI.detectors.PilatusCdTe300kw(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    -

    Bases: pyFAI.detectors.PilatusCdTe

    -

    Pilatus CdTe 300k-wide detector

    +
    +class pyFAI.detectors.Eiger1M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.Eiger

    +

    Eiger 1M detector

    -
    -MAX_SHAPE = (195, 1475)
    +
    +MAX_SHAPE = (1065, 1030)
    +
    + +
    +
    +aliases = ['Eiger 1M']
    -
    -class pyFAI.detectors.Pixium(pixel1=0.000308, pixel2=0.000308)
    -

    Bases: pyFAI.detectors.Detector

    -

    PIXIUM 4700 detector

    -

    High energy X ray diffraction using the Pixium 4700 flat panel detector -J E Daniels, M Drakopoulos, et al.; Journal of Synchrotron Radiation 16(Pt 4):463-8 · August 2009

    +
    +class pyFAI.detectors.Eiger4M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.Eiger

    +

    Eiger 4M detector

    -
    -DEFAULT_PIXEL1 = 0.000154
    +
    +MAX_SHAPE = (2167, 2070)
    -
    -DEFAULT_PIXEL2 = 0.000154
    +
    +aliases = ['Eiger 4M']
    -
    -
    -MAX_SHAPE = (1910, 2480)
    -
    +
    +
    +
    +class pyFAI.detectors.Eiger500k(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.Eiger

    +

    Eiger 1M detector

    -
    -aliases = ['Pixium 4700 detector', 'Thales Electronics']
    +
    +MAX_SHAPE = (512, 1030)
    -
    -force_pixel = True
    +
    +aliases = ['Eiger 500k']
    -
    -class pyFAI.detectors.RaspberryPi(pixel1=1.4e-06, pixel2=1.4e-06)
    -

    Bases: pyFAI.detectors.Detector

    -

    5 Mpix detector from Raspberry Pi

    +
    +class pyFAI.detectors.Eiger9M(pixel1=7.5e-05, pixel2=7.5e-05, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.Eiger

    +

    Eiger 9M detector

    -
    -MAX_SHAPE = (1944, 2592)
    +
    +MAX_SHAPE = (3269, 3110)
    -
    -aliases = ['Raspberry', 'Pi']
    +
    +aliases = ['Eiger 9M']
    -
    -
    -force_pixel = True
    +
    + +
    +
    +class pyFAI.detectors.FReLoN(splineFile=None)
    +

    Bases: pyFAI.detectors.Detector

    +

    FReLoN detector: +The spline is mandatory to correct for geometric distortion of the taper

    +

    TODO: create automatically a mask that removes pixels out of the “valid reagion”

    +
    +
    +__init__(splineFile=None)
    +
    +
    +calc_mask()
    +

    Returns a generic mask for Frelon detectors... +All pixels which (center) turns to be out of the valid region are by default discarded

    +
    +
    -
    -class pyFAI.detectors.Rayonix(pixel1=3.2e-05, pixel2=3.2e-05)
    +
    +class pyFAI.detectors.Fairchild(pixel1=1.5e-05, pixel2=1.5e-05)

    Bases: pyFAI.detectors.Detector

    +

    Fairchild Condor 486:90 detector

    -
    -BINNED_PIXEL_SIZE = {1: 3.2e-05}
    +
    +MAX_SHAPE = (4096, 4096)
    -
    -
    -MAX_SHAPE = (4096, 4096)
    +
    +
    +__init__(pixel1=1.5e-05, pixel2=1.5e-05)
    -
    -binning
    +
    +aliases = ['Fairchild', 'Condor', 'Fairchild Condor 486:90']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -
    -get_binning()
    +
    +
    +uniform_pixel = True
    -
    -
    -guess_binning(data)
    -

    Guess the binning/mode depending on the image shape -:param data: 2-tuple with the shape of the image or the image with a .shape attribute.

    -
    - -
    -
    -set_binning(bin_size=(1, 1))
    -

    Set the “binning” of the detector,

    - --- - - - -
    Parameters:bin_size (int or (int, int)) – set the binning of the detector
    -
    -
    -
    -class pyFAI.detectors.Rayonix133(pixel1=6.4e-05, pixel2=6.4e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix 133 2D CCD detector detector also known as mar133

    -

    Personnal communication from M. Blum

    -

    What should be the default binning factor for those cameras ?

    -

    Circular detector

    +
    +class pyFAI.detectors.HF_130K(pixel1=0.00015, pixel2=0.00015)
    +

    Bases: pyFAI.detectors.Detector

    +

    ADSC HF-130K 1 module

    +

    Informations from +http://www.adsc-xray.com/products/pixel-array-detectors/hf-130k/

    -
    -BINNED_PIXEL_SIZE = {8: 0.000256, 1: 3.2e-05, 2: 6.4e-05, 4: 0.000128}
    +
    +MAX_SHAPE = (256, 512)
    -
    -
    -MAX_SHAPE = (4096, 4096)
    +
    +
    +__init__(pixel1=0.00015, pixel2=0.00015)
    -
    -aliases = ['MAR133']
    +
    +aliases = ['HF-130k']
    -
    -
    -calc_mask()
    -

    Circular mask

    -
    -
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixLx170(pixel1=4.42708e-05, pixel2=4.42708e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix lx170 2d CCD Detector (2x1 CCDs).

    -

    Nota: this is the same for lx170hs

    +
    +class pyFAI.detectors.HF_1M(pixel1=0.00015, pixel2=0.00015)
    +

    Bases: pyFAI.detectors.Detector

    +

    ADSC HF-1M 2x4 modules

    +

    Informations from +http://www.adsc-xray.com/products/pixel-array-detectors/hf-1m/

    +

    Nota: gaps between modules is not known/described

    -
    -BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    +MAX_SHAPE = (1024, 1024)
    -
    -
    -MAX_SHAPE = (1920, 3840)
    +
    +
    +__init__(pixel1=0.00015, pixel2=0.00015)
    -
    -aliases = ['Rayonix lx170']
    +
    +aliases = ['HF-1M']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixLx255(pixel1=4.42708e-05, pixel2=4.42708e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix lx255 2d Detector (3x1 CCDs)

    -

    Nota: this detector is also called lx255hs

    +
    +class pyFAI.detectors.HF_262k(pixel1=0.00015, pixel2=0.00015)
    +

    Bases: pyFAI.detectors.Detector

    +

    ADSC HF-262k 2 module

    +

    Informations from +http://www.adsc-xray.com/products/pixel-array-detectors/hf-262k/

    +

    Nota: gaps between modules is not known/described

    -
    -BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    +MAX_SHAPE = (512, 512)
    +
    + +
    +
    +__init__(pixel1=0.00015, pixel2=0.00015)
    -
    -MAX_SHAPE = (1920, 5760)
    +
    +aliases = ['HF-262k']
    -
    -aliases = ['Rayonix lx255', 'Rayonix lx255hs']
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixMx170(pixel1=4.42708e-05, pixel2=4.42708e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx170 2d CCD Detector (2x2 CCDs).

    -

    Nota: this is the same for mx170hs

    +
    +class pyFAI.detectors.HF_2M(pixel1=0.00015, pixel2=0.00015)
    +

    Bases: pyFAI.detectors.Detector

    +

    ADSC HF-1M 3x6 modules

    +

    Informations from +http://www.adsc-xray.com/products/pixel-array-detectors/hf-2.4m/

    +

    Nota: gaps between modules is not known/described

    -
    -BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    +MAX_SHAPE = (1536, 1536)
    +
    + +
    +
    +__init__(pixel1=0.00015, pixel2=0.00015)
    -
    -MAX_SHAPE = (3840, 3840)
    +
    +aliases = ['HF-2.4M']
    -
    -aliases = ['Rayonix mx170']
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixMx225(pixel1=7.3242e-05, pixel2=7.3242e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx225 2D CCD detector detector

    -

    Nota: this is the same definition for mx225he -Personnal communication from M. Blum

    +
    +class pyFAI.detectors.HF_4M(pixel1=0.00015, pixel2=0.00015)
    +

    Bases: pyFAI.detectors.Detector

    +

    ADSC HF-4M 4x8 modules

    +

    Informations from +http://www.adsc-xray.com/products/pixel-array-detectors/hf-4m/

    -
    -BINNED_PIXEL_SIZE = {8: 0.000292969, 1: 3.6621e-05, 2: 7.3242e-05, 3: 0.000109971, 4: 0.000146484}
    +
    +MAX_SHAPE = (2048, 2048)
    -
    -
    -MAX_SHAPE = (6144, 6144)
    +
    +
    +__init__(pixel1=0.00015, pixel2=0.00015)
    -
    -aliases = ['Rayonix mx225']
    +
    +aliases = ['HF-4M']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixMx225hs(pixel1=7.8125e-05, pixel2=7.8125e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx225hs 2D CCD detector detector

    -

    Pixel size from a personnal communication from M. Blum

    +
    +class pyFAI.detectors.HF_9M(pixel1=0.00015, pixel2=0.00015)
    +

    Bases: pyFAI.detectors.Detector

    +

    ADSC HF-130K 1 module

    +

    Informations from +http://www.adsc-xray.com/products/pixel-array-detectors/hf-9-4m/

    -
    -BINNED_PIXEL_SIZE = {1: 3.90625e-05, 2: 7.8125e-05, 3: 0.0001171875, 4: 0.00015625, 5: 0.0001953125, 6: 0.000234375, 8: 0.0003125, 10: 0.000390625}
    +
    +MAX_SHAPE = (3072, 3072)
    -
    -
    -MAX_SHAPE = (5760, 5760)
    +
    +
    +__init__(pixel1=0.00015, pixel2=0.00015)
    -
    -aliases = ['Rayonix mx225hs']
    +
    +aliases = ['HF-9.4M']
    -
    -force_pixel = True
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixMx300(pixel1=7.3242e-05, pixel2=7.3242e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx300 2D detector (4x4 CCDs)

    -

    Pixel size from a personnal communication from M. Blum

    +
    +class pyFAI.detectors.ImXPadS10(pixel1=0.00013, pixel2=0.00013, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.Detector

    +

    ImXPad detector: ImXPad s10 detector with 1x1modules

    -
    -BINNED_PIXEL_SIZE = {8: 0.000292969, 1: 3.6621e-05, 2: 7.3242e-05, 3: 0.000109971, 4: 0.000146484}
    +
    +BORDER_SIZE_RELATIVE = 2.5
    -
    -MAX_SHAPE = (8192, 8192)
    +
    +MAX_SHAPE = (120, 80)
    -
    -aliases = ['Rayonix mx300']
    +
    +MODULE_SIZE = (120, 80)
    -
    -force_pixel = True
    +
    +PIXEL_SIZE = (0.00013, 0.00013)
    -
    - -
    -
    -class pyFAI.detectors.RayonixMx300hs(pixel1=7.8125e-05, pixel2=7.8125e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx300hs 2D detector (4x4 CCDs)

    -

    Pixel size from a personnal communication from M. Blum

    -
    -
    -BINNED_PIXEL_SIZE = {1: 3.90625e-05, 2: 7.8125e-05, 3: 0.0001171875, 4: 0.00015625, 5: 0.0001953125, 6: 0.000234375, 8: 0.0003125, 10: 0.000390625}
    +
    +
    +__init__(pixel1=0.00013, pixel2=0.00013, max_shape=None, module_size=None)
    -
    -MAX_SHAPE = (7680, 7680)
    +
    +aliases = ['Imxpad S10']
    +
    +
    +calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    +

    Calculate the position of each pixel center in cartesian coordinate +and in meter of a couple of coordinates. +The half pixel offset is taken into account here !!!

    + +++ + + + + + + + +
    Parameters:
      +
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • +
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • +
    +
    Returns:

    position in meter of the center of each pixels.

    +
    Return type:

    ndarray

    +
    +

    d1 and d2 must have the same shape, returned array will have +the same shape.

    +
    + +
    +
    +calc_mask()
    +

    Calculate the mask

    +
    + +
    +
    +calc_pixels_edges()
    +

    Calculate the position of the pixel edges

    +
    +
    -
    -aliases = ['Rayonix mx300hs']
    +
    +force_pixel = True
    +
    +
    +get_pixel_corners(d1=None, d2=None)
    +

    Calculate the position of the corner of the pixels

    +

    This should be overwritten by class representing non-contiguous detector (Xpad, ...)

    +

    Precision float32 is ok: precision of 1µm for a detector size of 1m

    + +++ + + + +
    Returns:4D array containing: +pixel index (slow dimension) +pixel index (fast dimension) +corner index (A, B, C or D), triangles or hexagons can be handled the same way +vertex position (z,y,x)
    +
    +
    -
    -force_pixel = True
    +
    +uniform_pixel = False
    -
    -class pyFAI.detectors.RayonixMx325(pixel1=7.9346e-05, pixel2=7.9346e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx325 and mx325he 2D detector (4x4 CCD chips)

    -

    Pixel size from a personnal communication from M. Blum

    +
    +class pyFAI.detectors.ImXPadS140(pixel1=0.00013, pixel2=0.00013)
    +

    Bases: pyFAI.detectors.ImXPadS10

    +

    ImXPad detector: ImXPad s140 detector with 2x7modules

    -
    -BINNED_PIXEL_SIZE = {8: 0.000317383, 1: 3.9673e-05, 2: 7.9346e-05, 3: 0.000119135, 4: 0.000158691}
    +
    +BORDER_PIXEL_SIZE_RELATIVE = 2.5
    -
    -MAX_SHAPE = (8192, 8192)
    +
    +MAX_SHAPE = (240, 560)
    -
    -aliases = ['Rayonix mx325']
    +
    +MODULE_SIZE = (120, 80)
    +
    + +
    +
    +PIXEL_SIZE = (0.00013, 0.00013)
    +
    + +
    +
    +__init__(pixel1=0.00013, pixel2=0.00013)
    +
    + +
    +
    +aliases = ['Imxpad S140']
    +
    + +
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixMx340hs(pixel1=8.85417e-05, pixel2=8.85417e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx340hs 2D detector (4x4 CCDs)

    -

    Pixel size from a personnal communication from M. Blum

    +
    +class pyFAI.detectors.ImXPadS70(pixel1=0.00013, pixel2=0.00013)
    +

    Bases: pyFAI.detectors.ImXPadS10

    +

    ImXPad detector: ImXPad s70 detector with 1x7modules

    -
    -BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    +BORDER_SIZE_RELATIVE = 2.5
    -
    -MAX_SHAPE = (7680, 7680)
    +
    +MAX_SHAPE = (120, 560)
    -
    -aliases = ['Rayonix mx340hs']
    +
    +MODULE_SIZE = (120, 80)
    -
    -force_pixel = True
    +
    +PIXEL_EDGES = None
    +
    + +
    +
    +PIXEL_SIZE = (0.00013, 0.00013)
    +
    + +
    +
    +__init__(pixel1=0.00013, pixel2=0.00013)
    +
    + +
    +
    +aliases = ['Imxpad S70']
    +
    + +
    +
    +force_pixel = True
    -
    -class pyFAI.detectors.RayonixMx425hs(pixel1=4.42708e-05, pixel2=4.42708e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix mx425hs 2D CCD camera (5x5 CCD chip)

    -

    Pixel size from a personnal communication from M. Blum

    +
    +class pyFAI.detectors.Mar345(pixel1=0.0001, pixel2=0.0001)
    +

    Bases: pyFAI.detectors.Detector

    +

    Mar345 Imaging plate detector

    +

    In this detector, pixels are always square +The valid image size are 2300, 2000, 1600, 1200, 3450, 3000, 2400, 1800

    -
    -BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    +MAX_SHAPE = (3450, 3450)
    -
    -MAX_SHAPE = (9600, 9600)
    +
    +VALID_SIZE = {2000: 0.00015, 1600: 0.00015, 3000: 0.0001, 2400: 0.0001, 3450: 0.0001, 1200: 0.00015, 2300: 0.00015, 1800: 0.0001}
    +
    + +
    +
    +__init__(pixel1=0.0001, pixel2=0.0001)
    -
    -aliases = ['Rayonix mx425hs']
    +
    +aliases = ['MAR 345', 'Mar3450']
    +
    + +
    +
    +calc_mask()
    +
    + +
    +
    +force_pixel = True
    +
    +
    +guess_binning(data)
    +

    Guess the binning/mode depending on the image shape +:param data: 2-tuple with the shape of the image or the image with a .shape attribute.

    +
    +
    -
    -class pyFAI.detectors.RayonixSx165(pixel1=3.95e-05, pixel2=3.95e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix sx165 2d Detector also known as MAR165.

    -

    Circular detector

    +
    +class pyFAI.detectors.NexusDetector(filename=None)
    +

    Bases: pyFAI.detectors.Detector

    +

    Class representing a 2D detector loaded from a NeXus file

    +
    +
    +__init__(filename=None)
    +
    + +
    +
    +getFit2D()
    +

    Helper method to serialize the description of a detector using the Fit2d units

    + +++ + + + + + +
    Returns:representation of the detector easy to serialize
    Return type:dict
    +
    + +
    +
    +getPyFAI()
    +

    Helper method to serialize the description of a detector using the pyFAI way +with everything in S.I units.

    + +++ + + + + + +
    Returns:representation of the detector easy to serialize
    Return type:dict
    +
    + +
    +
    +load(filename)
    +

    Loads the detector description from a NeXus file, adapted from: +http://download.nexusformat.org/sphinx/classes/base_classes/NXdetector.html

    + +++ + + + +
    Parameters:filename – name of the file on the disk
    +
    + +
    +
    +classmethod sload(filename)
    +

    Instantiate the detector description from a NeXus file, adapted from: +http://download.nexusformat.org/sphinx/classes/base_classes/NXdetector.html

    + +++ + + + + + +
    Parameters:filename – name of the file on the disk
    Returns:Detector instance
    +
    + +
    + +
    +
    +class pyFAI.detectors.Perkin(pixel1=0.0002, pixel2=0.0002)
    +

    Bases: pyFAI.detectors.Detector

    +

    Perkin detector

    -
    -BINNED_PIXEL_SIZE = {8: 0.000316, 1: 3.95e-05, 2: 7.9e-05, 3: 0.000118616, 4: 0.000158}
    +
    +DEFAULT_PIXEL1 = 0.0002
    -
    -MAX_SHAPE = (4096, 4096)
    +
    +DEFAULT_PIXEL2 = 0.0002
    -
    -aliases = ['MAR165', 'Rayonix Sx165']
    +
    +MAX_SHAPE = (4096, 4096)
    +
    + +
    +
    +__init__(pixel1=0.0002, pixel2=0.0002)
    +
    + +
    +
    +aliases = ['Perkin detector', 'Perkin Elmer']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Detector

    +

    Pilatus detector: generic description containing mask algorithm

    +

    Sub-classed by Pilatus1M, Pilatus2M and Pilatus6M

    +
    +
    +MODULE_GAP = (17, 7)
    +
    + +
    +
    +MODULE_SIZE = (195, 487)
    -
    -calc_mask()
    -

    Circular mask

    +
    +__init__(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +
    + +
    +
    +calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    +

    Calculate the position of each pixel center in cartesian coordinate +and in meter of a couple of coordinates. +The half pixel offset is taken into account here !!!

    + +++ + + + + + + + +
    Parameters:
      +
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • +
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • +
    +
    Returns:

    position in meter of the center of each pixels.

    +
    Return type:

    ndarray

    +
    +

    d1 and d2 must have the same shape, returned array will have +the same shape.

    +
    + +
    +
    +calc_mask()
    +

    Returns a generic mask for Pilatus detectors...

    +
    + +
    +
    +force_pixel = True
    +
    + +
    +
    +get_splineFile()
    +
    + +
    +
    +set_splineFile(splineFile=None)
    +

    In this case splinefile is a couple filenames

    +
    + +
    +
    +splineFile
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus100k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus 100k detector

    +
    +
    +MAX_SHAPE = (195, 487)
    +
    + +
    +
    +aliases = ['Pilatus 100k']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus1M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus 1M detector

    +
    +
    +MAX_SHAPE = (1043, 981)
    +
    + +
    +
    +aliases = ['Pilatus 1M']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus200k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus 200k detector

    +
    +
    +MAX_SHAPE = (407, 487)
    +
    + +
    +
    +aliases = ['Pilatus 200k']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus2M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus 2M detector

    +
    +
    +MAX_SHAPE = (1679, 1475)
    +
    + +
    +
    +aliases = ['Pilatus 2M']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus300k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus 300k detector

    +
    +
    +MAX_SHAPE = (619, 487)
    +
    + +
    +
    +aliases = ['Pilatus 300k']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus300kw(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus 300k-wide detector

    +
    +
    +MAX_SHAPE = (195, 1475)
    +
    + +
    +
    +aliases = ['Pilatus 300kw']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pilatus6M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus 6M detector

    +
    +
    +MAX_SHAPE = (2527, 2463)
    +
    + +
    +
    +aliases = ['Pilatus 6M']
    +
    + +
    + +
    +
    +class pyFAI.detectors.PilatusCdTe(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.Pilatus

    +

    Pilatus CdTe detector: Like the Pilatus with an extra 3 pixel in the middle +of every module (vertically)

    +
    +
    +calc_mask()
    +

    Returns a generic mask for Pilatus detectors...

    +
    + +
    + +
    +
    +class pyFAI.detectors.PilatusCdTe1M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.PilatusCdTe

    +

    Pilatus CdTe 1M detector

    +
    +
    +MAX_SHAPE = (1043, 981)
    +
    + +
    +
    +aliases = ['Pilatus CdTe 1M', 'Pilatus 1M CdTe', 'Pilatus1M CdTe', 'Pilatus1MCdTe']
    +
    + +
    + +
    +
    +class pyFAI.detectors.PilatusCdTe2M(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.PilatusCdTe

    +

    Pilatus CdTe 2M detector

    +
    +
    +MAX_SHAPE = (1679, 1475)
    +
    + +
    +
    +aliases = ['Pilatus CdTe 2M', 'Pilatus 2M CdTe', 'Pilatus2M CdTe', 'Pilatus2MCdTe']
    +
    + +
    + +
    +
    +class pyFAI.detectors.PilatusCdTe300k(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.PilatusCdTe

    +

    Pilatus CdTe 300k detector

    +
    +
    +MAX_SHAPE = (619, 487)
    +
    + +
    +
    +aliases = ['Pilatus CdTe 300k', 'Pilatus 300k CdTe', 'Pilatus300k CdTe', 'Pilatus300kCdTe']
    +
    + +
    + +
    +
    +class pyFAI.detectors.PilatusCdTe300kw(pixel1=0.000172, pixel2=0.000172, max_shape=None, module_size=None, x_offset_file=None, y_offset_file=None)
    +

    Bases: pyFAI.detectors.PilatusCdTe

    +

    Pilatus CdTe 300k-wide detector

    +
    +
    +MAX_SHAPE = (195, 1475)
    +
    + +
    +
    +aliases = ['Pilatus CdTe 300kw', 'Pilatus 300kw CdTe', 'Pilatus300kw CdTe', 'Pilatus300kwCdTe']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Pixium(pixel1=0.000308, pixel2=0.000308)
    +

    Bases: pyFAI.detectors.Detector

    +

    PIXIUM 4700 detector

    +

    High energy X ray diffraction using the Pixium 4700 flat panel detector +J E Daniels, M Drakopoulos, et al.; Journal of Synchrotron Radiation 16(Pt 4):463-8 · August 2009

    +
    +
    +DEFAULT_PIXEL1 = 0.000154
    +
    + +
    +
    +DEFAULT_PIXEL2 = 0.000154
    +
    + +
    +
    +MAX_SHAPE = (1910, 2480)
    +
    + +
    +
    +__init__(pixel1=0.000308, pixel2=0.000308)
    +

    Defaults to 2x2 binning

    +
    + +
    +
    +aliases = ['Pixium 4700 detector', 'Thales Electronics']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RaspberryPi5M(pixel1=1.4e-06, pixel2=1.4e-06)
    +

    Bases: pyFAI.detectors.Detector

    +

    5 Mpix detector from Raspberry Pi

    +
    +
    +MAX_SHAPE = (1944, 2592)
    +
    + +
    +
    +__init__(pixel1=1.4e-06, pixel2=1.4e-06)
    +
    + +
    +
    +aliases = ['Picam v1']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RaspberryPi8M(pixel1=1.12e-06, pixel2=1.12e-06)
    +

    Bases: pyFAI.detectors.Detector

    +

    8 Mpix detector from Raspberry Pi

    +
    +
    +MAX_SHAPE = (2464, 3280)
    +
    + +
    +
    +__init__(pixel1=1.12e-06, pixel2=1.12e-06)
    +
    + +
    +
    +aliases = ['Picam v2']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.Rayonix(pixel1=3.2e-05, pixel2=3.2e-05)
    +

    Bases: pyFAI.detectors.Detector

    +
    +
    +BINNED_PIXEL_SIZE = {1: 3.2e-05}
    +
    + +
    +
    +MAX_SHAPE = (4096, 4096)
    +
    + +
    +
    +__init__(pixel1=3.2e-05, pixel2=3.2e-05)
    +
    + +
    +
    +binning
    +
    + +
    +
    +force_pixel = True
    +
    + +
    +
    +get_binning()
    +
    + +
    +
    +guess_binning(data)
    +

    Guess the binning/mode depending on the image shape +:param data: 2-tuple with the shape of the image or the image with a .shape attribute.

    +
    + +
    +
    +set_binning(bin_size=(1, 1))
    +

    Set the “binning” of the detector,

    + +++ + + + +
    Parameters:bin_size (int or (int, int)) – set the binning of the detector
    +
    + +
    + +
    +
    +class pyFAI.detectors.Rayonix133(pixel1=6.4e-05, pixel2=6.4e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix 133 2D CCD detector detector also known as mar133

    +

    Personnal communication from M. Blum

    +

    What should be the default binning factor for those cameras ?

    +

    Circular detector

    +
    +
    +BINNED_PIXEL_SIZE = {8: 0.000256, 1: 3.2e-05, 2: 6.4e-05, 4: 0.000128}
    +
    + +
    +
    +MAX_SHAPE = (4096, 4096)
    +
    + +
    +
    +__init__(pixel1=6.4e-05, pixel2=6.4e-05)
    +
    + +
    +
    +aliases = ['MAR133']
    +
    + +
    +
    +calc_mask()
    +

    Circular mask

    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixLx170(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix lx170 2d CCD Detector (2x1 CCDs).

    +

    Nota: this is the same for lx170hs

    +
    +
    +BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    + +
    +
    +MAX_SHAPE = (1920, 3840)
    +
    + +
    +
    +__init__(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +
    + +
    +
    +aliases = ['Rayonix LX170', 'Rayonix LX170-HS', 'Rayonix LX170 HS', 'RayonixLX170HS']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixLx255(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix lx255 2d Detector (3x1 CCDs)

    +

    Nota: this detector is also called lx255hs

    +
    +
    +BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    + +
    +
    +MAX_SHAPE = (1920, 5760)
    +
    + +
    +
    +__init__(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +
    + +
    +
    +aliases = ['Rayonix LX255', 'Rayonix LX255-HS', 'Rayonix LX 255HS', 'RayonixLX225HS']
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx170(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx170 2d CCD Detector (2x2 CCDs).

    +

    Nota: this is the same for mx170hs

    +
    +
    +BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    + +
    +
    +MAX_SHAPE = (3840, 3840)
    +
    + +
    +
    +__init__(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +
    + +
    +
    +aliases = ['Rayonix MX170', 'Rayonix MX170-HS', 'RayonixMX170HS', 'Rayonix MX170 HS']
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx225(pixel1=7.3242e-05, pixel2=7.3242e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx225 2D CCD detector detector

    +

    Nota: this is the same definition for mx225he +Personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {8: 0.000292969, 1: 3.6621e-05, 2: 7.3242e-05, 3: 0.000109971, 4: 0.000146484}
    +
    + +
    +
    +MAX_SHAPE = (6144, 6144)
    +
    + +
    +
    +__init__(pixel1=7.3242e-05, pixel2=7.3242e-05)
    +
    + +
    +
    +aliases = ['Rayonix MX225']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx225hs(pixel1=7.8125e-05, pixel2=7.8125e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx225hs 2D CCD detector detector

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {1: 3.90625e-05, 2: 7.8125e-05, 3: 0.0001171875, 4: 0.00015625, 5: 0.0001953125, 6: 0.000234375, 8: 0.0003125, 10: 0.000390625}
    +
    + +
    +
    +MAX_SHAPE = (5760, 5760)
    +
    + +
    +
    +__init__(pixel1=7.8125e-05, pixel2=7.8125e-05)
    +
    + +
    +
    +aliases = ['Rayonix MX225HS', 'Rayonix MX225 HS']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx300(pixel1=7.3242e-05, pixel2=7.3242e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx300 2D detector (4x4 CCDs)

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {8: 0.000292969, 1: 3.6621e-05, 2: 7.3242e-05, 3: 0.000109971, 4: 0.000146484}
    +
    + +
    +
    +MAX_SHAPE = (8192, 8192)
    +
    + +
    +
    +__init__(pixel1=7.3242e-05, pixel2=7.3242e-05)
    +
    + +
    +
    +aliases = ['Rayonix mx300']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx300hs(pixel1=7.8125e-05, pixel2=7.8125e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx300hs 2D detector (4x4 CCDs)

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {1: 3.90625e-05, 2: 7.8125e-05, 3: 0.0001171875, 4: 0.00015625, 5: 0.0001953125, 6: 0.000234375, 8: 0.0003125, 10: 0.000390625}
    +
    + +
    +
    +MAX_SHAPE = (7680, 7680)
    +
    + +
    +
    +__init__(pixel1=7.8125e-05, pixel2=7.8125e-05)
    +
    + +
    +
    +aliases = ['Rayonix MX300HS', 'Rayonix MX300 HS']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx325(pixel1=7.9346e-05, pixel2=7.9346e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx325 and mx325he 2D detector (4x4 CCD chips)

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {8: 0.000317383, 1: 3.9673e-05, 2: 7.9346e-05, 3: 0.000119135, 4: 0.000158691}
    +
    + +
    +
    +MAX_SHAPE = (8192, 8192)
    +
    + +
    +
    +__init__(pixel1=7.9346e-05, pixel2=7.9346e-05)
    +
    + +
    +
    +aliases = ['Rayonix MX325']
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx340hs(pixel1=8.85417e-05, pixel2=8.85417e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx340hs 2D detector (4x4 CCDs)

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    + +
    +
    +MAX_SHAPE = (7680, 7680)
    +
    + +
    +
    +__init__(pixel1=8.85417e-05, pixel2=8.85417e-05)
    +
    + +
    +
    +aliases = ['Rayonix MX340HS', 'Rayonix MX340HS']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixMx425hs(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix mx425hs 2D CCD camera (5x5 CCD chip)

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    + +
    +
    +MAX_SHAPE = (9600, 9600)
    +
    + +
    +
    +__init__(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +
    + +
    +
    +aliases = ['Rayonix MX425HS', 'Rayonix MX425 HS']
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixSx165(pixel1=3.95e-05, pixel2=3.95e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix sx165 2d Detector also known as MAR165.

    +

    Circular detector

    +
    +
    +BINNED_PIXEL_SIZE = {8: 0.000316, 1: 3.95e-05, 2: 7.9e-05, 3: 0.000118616, 4: 0.000158}
    +
    + +
    +
    +MAX_SHAPE = (4096, 4096)
    +
    + +
    +
    +__init__(pixel1=3.95e-05, pixel2=3.95e-05)
    +
    + +
    +
    +aliases = ['MAR165', 'Rayonix Sx165']
    +
    + +
    +
    +calc_mask()
    +

    Circular mask

    +
    + +
    +
    +force_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixSx200(pixel1=4.8e-05, pixel2=4.8e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix sx200 2d CCD Detector.

    +

    Pixel size are personnal communication from M. Blum.

    +
    +
    +BINNED_PIXEL_SIZE = {8: 0.000384, 1: 4.8e-05, 2: 9.6e-05, 3: 0.000144, 4: 0.000192}
    +
    + +
    +
    +MAX_SHAPE = (4096, 4096)
    +
    + +
    +
    +__init__(pixel1=4.8e-05, pixel2=4.8e-05)
    +
    + +
    +
    +aliases = ['Rayonix sx200']
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixSx30hs(pixel1=1.5625e-05, pixel2=1.5625e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix sx30hs 2D CCD camera (1 CCD chip)

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {1: 1.5625e-05, 2: 3.125e-05, 3: 4.6875e-05, 4: 6.25e-05, 5: 7.8125e-05, 6: 9.375e-05, 8: 0.000125, 10: 0.00015625}
    +
    + +
    +
    +MAX_SHAPE = (1920, 1920)
    +
    + +
    +
    +__init__(pixel1=1.5625e-05, pixel2=1.5625e-05)
    +
    + +
    +
    +aliases = ['Rayonix SX30HS', 'Rayonix SX30 HS']
    +
    + +
    + +
    +
    +class pyFAI.detectors.RayonixSx85hs(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +

    Bases: pyFAI.detectors.Rayonix

    +

    Rayonix sx85hs 2D CCD camera (1 CCD chip)

    +

    Pixel size from a personnal communication from M. Blum

    +
    +
    +BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    +
    + +
    +
    +MAX_SHAPE = (1920, 1920)
    +
    + +
    +
    +__init__(pixel1=4.42708e-05, pixel2=4.42708e-05)
    +
    + +
    +
    +aliases = ['Rayonix SX85HS', 'Rayonix SX85 HS']
    +
    + +
    + +
    +
    +class pyFAI.detectors.Titan(pixel1=6e-05, pixel2=6e-05)
    +

    Bases: pyFAI.detectors.Detector

    +

    Titan CCD detector from Agilent. Mask not handled

    +
    +
    +MAX_SHAPE = (2048, 2048)
    +
    + +
    +
    +__init__(pixel1=6e-05, pixel2=6e-05)
    +
    + +
    +
    +aliases = ['Titan 2k x 2k', 'OXD Titan', 'Agilent Titan']
    +
    + +
    +
    +force_pixel = True
    +
    + +
    +
    +uniform_pixel = True
    +
    + +
    + +
    +
    +class pyFAI.detectors.Xpad_flat(pixel1=0.00013, pixel2=0.00013, max_shape=None, module_size=None)
    +

    Bases: pyFAI.detectors.ImXPadS10

    +

    Xpad detector: generic description for +ImXPad detector with 8x7modules

    +
    +
    +BORDER_PIXEL_SIZE_RELATIVE = 2.5
    +
    + +
    +
    +IS_CONTIGUOUS = False
    +
    + +
    +
    +MAX_SHAPE = (960, 560)
    +
    + +
    +
    +MODULE_GAP = (0.00357, 0)
    +
    + +
    +
    +MODULE_SIZE = (120, 80)
    +
    + +
    +
    +PIXEL_SIZE = (0.00013, 0.00013)
    +
    + +
    +
    +__init__(pixel1=0.00013, pixel2=0.00013, max_shape=None, module_size=None)
    +
    + +
    +
    +aliases = ['Xpad S540 flat', 'd5']
    +
    + +
    +
    +calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    +

    Calculate the position of each pixel center in cartesian coordinate +and in meter of a couple of coordinates. +The half pixel offset is taken into account here !!! +Adapted to Nexus detector definition

    + +++ + + + + + + + +
    Parameters:
      +
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • +
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • +
    • center – retrieve the coordinate of the center of the pixel
    • +
    • use_cython – set to False to test Numpy implementation
    • +
    +
    Returns:

    position in meter of the center of each pixels.

    +
    Return type:

    ndarray

    +
    +

    d1 and d2 must have the same shape, returned array will have +the same shape.

    +
    + +
    +
    +calc_mask()
    +

    Returns a generic mask for Xpad detectors... +discards the first line and raw form all modules: +those are 2.5x bigger and often mis - behaving

    +
    + +
    +
    +calc_pixels_edges()
    +

    Calculate the position of the pixel edges, specific to the S540, d5 detector

    +
    + +
    +
    +force_pixel = True
    +
    + +
    +
    +get_pixel_corners()
    +

    Calculate the position of the corner of the pixels

    + +++ + + + +
    Returns:4D array containing: +pixel index (slow dimension) +pixel index (fast dimension) +corner index (A, B, C or D), triangles or hexagons can be handled the same way +vertex position (z,y,x)
    +
    + +
    +
    +uniform_pixel = False
    +
    + +
    + +
    +
    +

    spline Module

    +

    This is piece of software aims at manipulating spline files +describing for geometric corrections of the 2D detectors using cubic-spline.

    +

    Mainly used at ESRF with FReLoN CCD camera.

    +
    +
    +class pyFAI.spline.Spline(filename=None)
    +

    Bases: object

    +

    This class is a python representation of the spline file

    +

    Those file represent cubic splines for 2D detector distortions and +makes heavy use of fitpack (dierckx in netlib) — A Python-C +wrapper to FITPACK (by P. Dierckx). FITPACK is a collection of +FORTRAN programs for curve and surface fitting with splines and +tensor product splines. See +_http://www.cs.kuleuven.ac.be/cwis/research/nalag/research/topics/fitpack.html +or _http://www.netlib.org/dierckx/index.html

    +
    +
    +__init__(filename=None)
    +

    This is the constructor of the Spline class.

    + +++ + + + +
    Parameters:filename (str) – name of the ascii file containing the spline
    +
    + +
    +
    +array2spline(smoothing=1000, timing=False)
    +

    Calculates the spline coefficients from the displacements +matrix using fitpack.

    + +++ + + + +
    Parameters:
      +
    • smoothing (float) – the greater the smoothing, the fewer the number of knots remaining
    • +
    • timing (bool) – print the profiling of the calculation
    • +
    +
    +
    + +
    +
    +bin(binning=None)
    +

    Performs the binning of a spline (same camera with different binning)

    + +++ + + + + + +
    Parameters:binning – binning factor as integer or 2-tuple of integers
    Type:int or (int, int)
    +
    + +
    +
    +comparison(ref, verbose=False)
    +

    Compares the current spline distortion with a reference

    + +++ + + + + + + + +
    Parameters:
      +
    • ref (Spline instance) – another spline file
    • +
    • verbose (bool) – print or not pylab plots
    • +
    +
    Returns:

    True or False depending if the splines are the same or not

    +
    Return type:

    bool

    +
    +
    + +
    +
    +correct(pos)
    +
    + +
    +
    +fliplr()
    +

    Flip the spline +:return: new spline object

    +
    + +
    +
    +fliplrud()
    +

    Flip the spline left-right and up-down +:return: new spline object

    +
    + +
    +
    +flipud()
    +

    Flip the spline up-down +:return: new spline object

    +
    + +
    +
    +getPixelSize()
    +

    Return the size of the pixel from as a 2-tuple of floats expressed +in meters.

    + +++ + + + + + +
    Returns:the size of the pixel from a 2D detector
    Return type:2-tuple of floats expressed in meter.
    +
    + +
    +
    +read(filename)
    +

    read an ascii spline file from file

    + +++ + + + +
    Parameters:filename (str) – file containing the cubic spline distortion file
    +
    + +
    +
    +setPixelSize(pixelSize)
    +

    Sets the size of the pixel from a 2-tuple of floats expressed +in meters.

    + +++ + + + +
    Param:pixel size in meter
    +
    + +
    +
    +spline2array(timing=False)
    +

    Calculates the displacement matrix using fitpack +bisplev(x, y, tck, dx = 0, dy = 0)

    + +++ + + + + + + + +
    Parameters:timing (bool) – profile the calculation or not
    Returns:Nothing !
    Return type:float or ndarray
    +

    Evaluate a bivariate B-spline and its derivatives. Return a +rank-2 array of spline function values (or spline derivative +values) at points given by the cross-product of the rank-1 +arrays x and y. In special cases, return an array or just a +float if either x or y or both are floats.

    +
    + +
    +
    +splineFuncX(x, y, list_of_points=False)
    +

    Calculates the displacement matrix using fitpack for the X +direction on the given grid.

    + +++ + + + + + + + +
    Parameters:
      +
    • x (ndarray) – points of the grid in the x direction
    • +
    • y (ndarray) – points of the grid in the y direction
    • +
    • list_of_points – if true, consider the zip(x,y) instead of the of the square array
    • +
    +
    Returns:

    displacement matrix for the X direction

    +
    Return type:

    ndarray

    +
    +
    + +
    +
    +splineFuncY(x, y, list_of_points=False)
    +

    calculates the displacement matrix using fitpack for the Y +direction

    + +++ + + + + + + + +
    Parameters:
      +
    • x (ndarray) – points in the x direction
    • +
    • y (ndarray) – points in the y direction
    • +
    • list_of_points – if true, consider the zip(x,y) instead of the of the square array
    • +
    +
    Returns:

    displacement matrix for the Y direction

    +
    Return type:

    ndarray

    +
    +
    + +
    +
    +tilt(center=(0.0, 0.0), tiltAngle=0.0, tiltPlanRot=0.0, distanceSampleDetector=1.0, timing=False)
    +

    The tilt method apply a virtual tilt on the detector, the +point of tilt is given by the center

    + +++ + + + + + + + +
    Parameters:
      +
    • center (2-tuple of floats) – position of the point of tilt, this point will not be moved.
    • +
    • tiltAngle (float in the range [-90:+90] degrees) – the value of the tilt in degrees
    • +
    • tiltPlanRot (Float in the range [-180:180]) – the rotation of the tilt plan with the Ox axis (0 deg for y axis invariant, 90 deg for x axis invariant)
    • +
    • distanceSampleDetector (float) – the distance from sample to detector in meter (along the beam, so distance from sample to center)
    • +
    +
    Returns:

    tilted Spline instance

    +
    Return type:

    Spline

    +
    +
    + +
    +
    +write(filename)
    +

    save the cubic spline in an ascii file usable with Fit2D or +SPD

    + +++ + + + +
    Parameters:filename (str) – name of the file containing the cubic spline distortion file
    +
    + +
    +
    +writeEDF(basename)
    +

    save the distortion matrices into a couple of files called +basename-x.edf and basename-y.edf

    + +++ + + + +
    Parameters:basename (str) – base of the name used to save the data
    +
    + +
    +
    +zeros(xmin=0.0, ymin=0.0, xmax=2048.0, ymax=2048.0, pixSize=None)
    +

    Defines a spline file with no ( zero ) displacement.

    + +++ + + + +
    Parameters:
      +
    • xmin (float) – minimum coordinate in x, usually zero
    • +
    • xmax (float) – maximum coordinate in x (+1) usually 2048
    • +
    • ymin (float) – minimum coordinate in y, usually zero
    • +
    • ymax (float) – maximum coordinate y (+1) usually 2048
    • +
    • pixSize (float) – size of the pixel
    • +
    +
    +
    + +
    +
    +zeros_like(other)
    +

    Defines a spline file with no ( zero ) displacement with the +same shape as the other one given.

    + +++ + + + +
    Parameters:other (Spline instance) – another Spline instance
    +
    + +
    + +
    +
    +pyFAI.spline.main()
    +

    Some tests ....

    +
    + +
    +
    +

    opencl Module

    +
    +
    +class pyFAI.opencl.Device(name='None', dtype=None, version=None, driver_version=None, extensions='', memory=None, available=None, cores=None, frequency=None, flop_core=None, idx=0, workgroup=1)
    +

    Bases: object

    +

    Simple class that contains the structure of an OpenCL device

    +
    +
    +__init__(name='None', dtype=None, version=None, driver_version=None, extensions='', memory=None, available=None, cores=None, frequency=None, flop_core=None, idx=0, workgroup=1)
    +

    Simple container with some important data for the OpenCL device description:

    + +++ + + + +
    Parameters:
      +
    • name – name of the device
    • +
    • dtype – device type: CPU/GPU/ACC...
    • +
    • version – driver version
    • +
    • driver_version
    • +
    • extensions – List of opencl extensions
    • +
    • memory – maximum memory available on the device
    • +
    • available – is the device desactivated or not
    • +
    • cores – number of SM/cores
    • +
    • frequency – frequency of the device
    • +
    • flop_cores – Flopating Point operation per core per cycle
    • +
    • idx – index of the device within the platform
    • +
    • workgroup – max workgroup size
    • +
    +
    +
    + +
    +
    +pretty_print()
    +

    Complete device description

    + +++ + + + +
    Returns:string
    +
    + +
    + +
    +
    +class pyFAI.opencl.OpenCL
    +

    Bases: object

    +

    Simple class that wraps the structure ocl_tools_extended.h

    +

    This is a static class. +ocl should be the only instance and shared among all python modules.

    +
    +
    +comput_cap = (5, 0)
    +
    + +
    +
    +context_cache = {}
    +
    + +
    +
    +create_context(devicetype='ALL', useFp64=False, platformid=None, deviceid=None, cached=True)
    +

    Choose a device and initiate a context.

    +

    Devicetypes can be GPU,gpu,CPU,cpu,DEF,ACC,ALL. +Suggested are GPU,CPU. +For each setting to work there must be such an OpenCL device and properly installed. +E.g.: If Nvidia driver is installed, GPU will succeed but CPU will fail. The AMD SDK kit is required for CPU via OpenCL. +:param devicetype: string in [“cpu”,”gpu”, “all”, “acc”] +:param useFp64: boolean specifying if double precision will be used +:param platformid: integer +:param devid: integer +:return: OpenCL context on the selected device

    +
    + +
    +
    +device_from_context(context)
    +

    Retrieves the Device from the context

    + +++ + + + + + +
    Parameters:context – OpenCL context
    Returns:instance of Device
    +
    + +
    +
    +flop_core = 4
    +
    + +
    +
    +get_platform(key)
    +

    Return a platform according

    + +++ + + + +
    Parameters:key (int or str) – identifier for a platform, either an Id (int) or it’s name
    +
    + +
    +
    +idd = 0
    +
    + +
    +
    +idx = 2
    +
    + +
    +
    +nb_devices = 4
    +
    + +
    +
    +platforms = [Portable Computing Language, NVIDIA CUDA, Intel(R) OpenCL]
    +
    + +
    +
    +select_device(dtype='ALL', memory=None, extensions=None, best=True, **kwargs)
    +

    Select a device based on few parameters (at the end, keep the one with most memory)

    + +++ + + + +
    Parameters:
      +
    • type – “gpu” or “cpu” or “all” ....
    • +
    • memory – minimum amount of memory (int)
    • +
    • extensions – list of extensions to be present
    • +
    • best – shall we look for the
    • +
    +
    +
    + +
    +
    +workgroup = 8192
    +
    + +
    + +
    +
    +class pyFAI.opencl.Platform(name='None', vendor='None', version=None, extensions=None, idx=0)
    +

    Bases: object

    +

    Simple class that contains the structure of an OpenCL platform

    +
    +
    +__init__(name='None', vendor='None', version=None, extensions=None, idx=0)
    +

    Class containing all descriptions of a platform and all devices description within that platform.

    + +++ + + + +
    Parameters:
      +
    • name – platform name
    • +
    • vendor – name of the brand/vendor
    • +
    • version
    • +
    • extension – list of the extension provided by the platform to all of its devices
    • +
    • idx – index of the platform
    • +
    +
    +
    + +
    +
    +add_device(device)
    +

    Add new device to the platform

    + +++ + + + +
    Parameters:device – Device instance
    +
    + +
    +
    +get_device(key)
    +

    Return a device according to key

    + +++ + + + +
    Parameters:key (int or str) – identifier for a device, either it’s id (int) or it’s name
    +
    + +
    + +
    +
    +pyFAI.opencl.allocate_cl_buffers(buffers, device=None, context=None)
    +
    +++ + + + + + + + +
    Parameters:buffers – the buffers info use to create the pyopencl.Buffer
    Returns:a dict containing the instanciated pyopencl.Buffer
    Return type:dict(str, pyopencl.Buffer)
    +

    This method instanciate the pyopencl.Buffer from the buffers +description.

    +
    + +
    +
    +pyFAI.opencl.release_cl_buffers(cl_buffers)
    +
    +++ + + + +
    Parameters:cl_buffer (dict(str, pyopencl.Buffer)) – the buffer you want to release
    +

    This method release the memory of the buffers store in the dict

    +
    + +
    +
    +

    ocl_azim Module

    +

    C++ less implementation of Dimitris’ code based on PyOpenCL

    +
    +
    TODO and trick from dimitris still missing:
    +
      +
    • dark-current subtraction is still missing
    • +
    • In fact you might want to consider doing the conversion on the GPU when +possible. Think about it, you have a uint16 to float which for large arrays +was slow.. You load on the graphic card a uint16 (2x transfer speed) and +you convert to float inside so it should be blazing fast.
    • +
    +
    +
    +
    +
    +class pyFAI.ocl_azim.Integrator1d(filename=None)
    +

    Bases: object

    +

    Attempt to implements ocl_azim using pyopencl

    +
    +
    +BLOCK_SIZE = 128
    +
    + +
    +
    +__init__(filename=None)
    +
    +++ + + + +
    Parameters:filename – file in which profiling information are saved
    +
    + +
    +
    +clean(preserve_context=False)
    +

    Free OpenCL related resources allocated by the library.

    +

    clean() is used to reinitiate the library back in a vanilla +state. It may be asked to preserve the context created by +init or completely clean up OpenCL. Guard/Status flags that +are set will be reset.

    + +++ + + + +
    Parameters:preserve_context (bool) – preserves or destroys all OpenCL resources
    +
    + +
    +
    +configure(kernel=None)
    +

    The method configure() allocates the OpenCL resources required +and compiled the OpenCL kernels. An active context must exist +before a call to configure() and getConfiguration() must have +been called at least once. Since the compiled OpenCL kernels +carry some information on the integration parameters, a change +to any of the parameters of getConfiguration() requires a +subsequent call to configure() for them to take effect.

    +

    If a configuration exists and configure() is called, the +configuration is cleaned up first to avoid OpenCL memory leaks

    + +++ + + + +
    Parameters:kernel_path – is the path to the actual kernel
    +
    + +
    +
    +execute(image)
    +

    Perform a 1D azimuthal integration

    +

    execute() may be called only after an OpenCL device is +configured and a Tth array has been loaded (at least once) It +takes the input image and based on the configuration provided +earlier it performs the 1D integration. Notice that if the +provided image is bigger than N then only N points will be +taked into account, while if the image is smaller than N the +result may be catastrophic. set/unset and loadTth methods +have a direct impact on the execute() method. All the rest of +the methods will require at least a new configuration via +configure().

    +

    Takes an image, integrate and return the histogram and weights

    + +++ + + + + + +
    Parameters:image – image to be processed as a numpy array
    Returns:tth_out, histogram, bins
    +

    TODO: to improve performances, the image should be casted to +float32 in an optimal way: currently using numpy machinery but +would be better if done in OpenCL

    +
    + +
    +
    +getConfiguration(Nimage, Nbins, useFp64=None)
    +

    getConfiguration gets the description of the integrations +to be performed and keeps an internal copy

    + +++ + + + +
    Parameters:
      +
    • Nimage – number of pixel in image
    • +
    • Nbins – number of bins in regrouped histogram
    • +
    • useFp64 – use double precision. By default the same as init!
    • +
    +
    +
    + +
    +
    +get_status()
    +

    return a dictionnary with the status of the integrator: for +compatibilty with former implementation

    +
    + +
    +
    +init(devicetype='GPU', useFp64=True, platformid=None, deviceid=None)
    +

    Initial configuration: Choose a device and initiate a +context. Devicetypes can be GPU, gpu, CPU, cpu, DEF, ACC, +ALL. Suggested are GPU,CPU. For each setting to work there +must be such an OpenCL device and properly installed. E.g.: If +Nvidia driver is installed, GPU will succeed but CPU will +fail. The AMD SDK kit (AMD APP) is required for CPU via +OpenCL.

    + +++ + + + +
    Parameters:
      +
    • devicetype – string in [“cpu”,”gpu”, “all”, “acc”]
    • +
    • useFp64 – boolean specifying if double precision will be used
    • +
    • platformid – integer
    • +
    • devid – integer
    • +
    +
    +
    + +
    +
    +loadTth(tth, dtth, tth_min=None, tth_max=None)
    +

    Load the 2th arrays along with the min and max value.

    +

    loadTth maybe be recalled at any time of the execution in +order to update the 2th arrays.

    +

    loadTth is required and must be called at least once after a +configure()

    +
    + +
    +
    +log(**kwarg)
    +

    log in a file all opencl events

    +
    + +
    +
    +setDummyValue(dummy, delta_dummy)
    +

    Enables dummy value functionality and uploads the value to the +OpenCL device.

    +

    Image values that are similar to the dummy value are set to 0.

    + +++ + + + +
    Parameters:
      +
    • dummy – value in image of missing values (masked pixels?)
    • +
    • delta_dummy – precision for dummy values
    • +
    +
    +
    + +
    +
    +setMask(mask)
    +

    Enables the use of a Mask during integration. The Mask can be +updated by recalling setMask at any point.

    +

    The Mask must be a PyFAI Mask. Pixels with 0 are masked +out. TODO: check and invert!

    + +++ + + + +
    Parameters:mask – numpy.ndarray of integer.
    +
    + +
    +
    +setRange(lowerBound, upperBound)
    +

    Instructs the program to use a user - defined range for 2th +values

    +

    setRange is optional. By default the integration will use the +tth_min and tth_max given by loadTth() as integration +range. When setRange is called it sets a new integration range +without affecting the 2th array. All values outside that range +will then be discarded when interpolating. Currently, if the +interval of 2th (2th + -d2th) is not all inside the range +specified, it is discarded. The bins of the histogram are +RESCALED to the defined range and not the original tth_max - +tth_min range.

    +

    setRange can be called at any point and as many times required +after a valid configuration is created.

    + +++ + + + +
    Parameters:
      +
    • lowerBound (float) – lower bound of the integration range
    • +
    • upperBound (float) – upper bound of the integration range
    • +
    +
    +
    + +
    +
    +setSolidAngle(solidAngle)
    +

    Enables SolidAngle correction and uploads the suitable array +to the OpenCL device.

    +

    By default the program will assume no solidangle correction +unless setSolidAngle() is called. From then on, all +integrations will be corrected via the SolidAngle array.

    +

    If the SolidAngle array needs to be changes, one may just call +setSolidAngle() again with that array

    + +++ + + + +
    Parameters:solidAngle (ndarray) – the solid angle of the given pixel
    +
    + +
    +
    +unsetDummyValue()
    +

    Disable a dummy value. +May be re-enabled at any time by setDummyValue

    +
    + +
    +
    +unsetMask()
    +

    Disables the use of a Mask from that point. +It may be re-enabled at any point via setMask

    +
    + +
    +
    +unsetRange()
    +

    Disable the use of a user-defined 2th range and revert to +tth_min,tth_max range

    +

    unsetRange instructs the program to revert to its default +integration range. If the method is called when no +user-defined range had been previously specified, no action +will be performed

    +
    + +
    +
    +unsetSolidAngle()
    +

    Instructs the program to not perform solidangle correction from now on.

    +

    SolidAngle correction may be turned back on at any point

    +
    + +
    + +
    +
    +

    ocl_azim_lut Module

    +
    +
    +class pyFAI.ocl_azim_lut.OCL_LUT_Integrator(lut, image_size, devicetype='all', platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    +

    Bases: object

    +
    +
    +BLOCK_SIZE = 16
    +
    + +
    +
    +__init__(lut, image_size, devicetype='all', platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    +
    +++ + + + +
    Parameters:
      +
    • lut – array of int32 - float32 with shape (nbins, lut_size) with indexes and coefficients
    • +
    • image_size – Expected image size: image.shape.prod()
    • +
    • devicetype – can be “cpu”,”gpu”,”acc” or “all”
    • +
    • platformid (int) – number of the platform as given by clinfo
    • +
    • deviceid (int) – number of the device as given by clinfo
    • +
    • checksum – pre - calculated checksum to prevent re - calculating it :)
    • +
    • profile – store profiling elements
    • +
    • empty – value to be assigned to bins without contribution from any pixel
    • +
    +
    +
    + +
    +
    +integrate(data, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, dark_checksum=None, flat_checksum=None, solidAngle_checksum=None, polarization_checksum=None, preprocess_only=False, safe=True, normalization_factor=1.0)
    +

    Before performing azimuthal integration, the preprocessing is:

    +
    +

    data = (data - dark) / (flat * solidAngle * polarization)

    +

    Integration is performed using the CSR representation of the look-up table

    + +++ + + + + + +
    Parameters:
      +
    • dark – array of same shape as data for pre-processing
    • +
    • flat – array of same shape as data for pre-processing
    • +
    • solidAngle – array of same shape as data for pre-processing
    • +
    • polarization – array of same shape as data for pre-processing
    • +
    • dark_checksum – CRC32 checksum of the given array
    • +
    • flat_checksum – CRC32 checksum of the given array
    • +
    • solidAngle_checksum – CRC32 checksum of the given array
    • +
    • polarization_checksum – CRC32 checksum of the given array
    • +
    • safe – if True (default) compares arrays on GPU according to their checksum, unless, use the buffer location is used
    • +
    • normalization_factor – divide raw signal by this value
    • +
    • preprocess_only – return the dark subtracted; flat field & solidAngle & polarization corrected image, else
    • +
    +
    Returns:

    averaged data, weighted histogram, unweighted histogram

    +
    +
    + +
    +
    +log_profile()
    +

    If we are in profiling mode, prints out all timing for every single OpenCL call

    +
    + +
    + +
    +
    +

    ocl_azim_csr Module

    +
    +
    +class pyFAI.ocl_azim_csr.OCL_CSR_Integrator(lut, image_size, devicetype='all', block_size=32, platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    +

    Bases: object

    +
    +
    +__init__(lut, image_size, devicetype='all', block_size=32, platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    +
    +++ + + + +
    Parameters:
      +
    • lut – 3-tuple of arrays +data: coefficient of the matrix in a 1D vector of float32 - size of nnz +indices: Column index position for the data (same size as data) +indptr: row pointer indicates the start of a given row. len nbin+1
    • +
    • image_size – size of the image (for pre-processing)
    • +
    • devicetype – can be “cpu”,”gpu”,”acc” or “all”
    • +
    • block_size – the chosen size for WORKGROUP_SIZE
    • +
    • platformid (int) – number of the platform as given by clinfo
    • +
    • deviceid (int) – number of the device as given by clinfo
    • +
    • checksum – pre - calculated checksum to prevent re - calculating it :)
    • +
    • profile – store profiling elements
    • +
    • empty – value to be assigned to bins without contribution from any pixel
    • +
    +
    +
    + +
    +
    +integrate(data, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, dark_checksum=None, flat_checksum=None, solidAngle_checksum=None, polarization_checksum=None, preprocess_only=False, safe=True, normalization_factor=1.0)
    +

    Before performing azimuthal integration, the preprocessing is:

    +
    +

    data = (data - dark) / (flat * solidAngle * polarization)

    +

    Integration is performed using the CSR representation of the look-up table

    + +++ + + + + + +
    Parameters:
      +
    • dark – array of same shape as data for pre-processing
    • +
    • flat – array of same shape as data for pre-processing
    • +
    • solidAngle – array of same shape as data for pre-processing
    • +
    • polarization – array of same shape as data for pre-processing
    • +
    • dark_checksum – CRC32 checksum of the given array
    • +
    • flat_checksum – CRC32 checksum of the given array
    • +
    • solidAngle_checksum – CRC32 checksum of the given array
    • +
    • polarization_checksum – CRC32 checksum of the given array
    • +
    • safe – if True (default) compares arrays on GPU according to their checksum, unless, use the buffer location is used
    • +
    • preprocess_only – return the dark subtracted; flat field & solidAngle & polarization corrected image, else
    • +
    • normalization_factor – divide result by this value
    • +
    +
    Returns:

    averaged data, weighted histogram, unweighted histogram

    +
    +
    + +
    +
    +log_profile()
    +

    If we are in profiling mode, prints out all timing for every single OpenCL call

    -
    -
    -force_pixel = True
    -
    -
    +
    +
    +

    ocl_azim_csr_dis Module

    -
    -class pyFAI.detectors.RayonixSx200(pixel1=4.8e-05, pixel2=4.8e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix sx200 2d CCD Detector.

    -

    Pixel size are personnal communication from M. Blum.

    -
    -
    -BINNED_PIXEL_SIZE = {8: 0.000384, 1: 4.8e-05, 2: 9.6e-05, 3: 0.000144, 4: 0.000192}
    -
    +
    +class pyFAI.ocl_azim_csr_dis.OCL_CSR_Integrator(lut, image_size, devicetype='all', block_size=32, platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    +

    Bases: object

    +
    +
    +__init__(lut, image_size, devicetype='all', block_size=32, platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    +
    +++ + + + +
    Parameters:
      +
    • lut – 3-tuple of arrays +data: coefficient of the matrix in a 1D vector of float32 - size of nnz +indices: Column index position for the data (same size as data) +indptr: row pointer indicates the start of a given row. len nbin+1
    • +
    • image_size
    • +
    • devicetype – can be “cpu”,”gpu”,”acc” or “all”
    • +
    • block_size – the chosen size for WORKGROUP_SIZE
    • +
    • platformid (int) – number of the platform as given by clinfo
    • +
    • deviceid (int) – number of the device as given by clinfo
    • +
    • checksum – pre - calculated checksum to prevent re - calculating it :)
    • +
    • profile – store profiling elements
    • +
    • empty – value to be assigned to bins without contribution from any pixel
    • +
    +
    +
    -
    -
    -MAX_SHAPE = (4096, 4096)
    +
    +
    +integrate(data, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, dark_checksum=None, flat_checksum=None, solidAngle_checksum=None, polarization_checksum=None)
    -
    -
    -aliases = ['Rayonix sx200']
    -
    +
    +
    +log_profile()
    +

    If we are in profiling mode, prints out all timing for every +single OpenCL call

    +
    +
    +
    +

    io Module

    +

    Module for “high-performance” writing in either 1D with Ascii , +or 2D with FabIO or even nD with n varying from 2 to 4 using HDF5

    +

    Stand-alone module which tries to offer interface to HDF5 via H5Py and +capabilities to write EDF or other formats using fabio.

    +

    Can be imported without h5py but then limited to fabio & ascii formats.

    +

    TODO:

    +
      +
    • Add monitor to HDF5
    • +
    -
    -class pyFAI.detectors.RayonixSx30hs(pixel1=1.5625e-05, pixel2=1.5625e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix sx30hs 2D CCD camera (1 CCD chip)

    -

    Pixel size from a personnal communication from M. Blum

    -
    -
    -BINNED_PIXEL_SIZE = {1: 1.5625e-05, 2: 3.125e-05, 3: 4.6875e-05, 4: 6.25e-05, 5: 7.8125e-05, 6: 9.375e-05, 8: 0.000125, 10: 0.00015625}
    +
    +class pyFAI.io.AsciiWriter(filename=None, prefix='fai_', extension='.dat')
    +

    Bases: pyFAI.io.Writer

    +

    Ascii file writer (.xy or .dat)

    +
    +
    +__init__(filename=None, prefix='fai_', extension='.dat')
    -
    -
    -MAX_SHAPE = (1920, 1920)
    -
    +
    +
    +init(fai_cfg=None, lima_cfg=None)
    +

    Creates the directory that will host the output file(s)

    +
    -
    -
    -aliases = ['Rayonix Sx30hs']
    +
    +
    +write(data, index=0)
    -
    -class pyFAI.detectors.RayonixSx85hs(pixel1=4.42708e-05, pixel2=4.42708e-05)
    -

    Bases: pyFAI.detectors.Rayonix

    -

    Rayonix sx85hs 2D CCD camera (1 CCD chip)

    -

    Pixel size from a personnal communication from M. Blum

    -
    -
    -BINNED_PIXEL_SIZE = {1: 4.42708e-05, 2: 8.85417e-05, 3: 0.0001328125, 4: 0.0001770833, 5: 0.0002213542, 6: 0.000265625, 8: 0.0003541667, 10: 0.0004427083}
    -
    +
    +class pyFAI.io.DefaultAiWriter(filename, ai)
    +

    Bases: pyFAI.io.Writer

    +
    +
    +__init__(filename, ai)
    +

    Constructor of the historical writer of azimuthalIntegrator.

    +
    -
    -
    -MAX_SHAPE = (1920, 1920)
    +
    +
    +close()
    -
    -
    -aliases = ['Rayonix Sx85hs']
    +
    +
    +flush()
    +
    +
    +make_headers(hdr='#', has_dark=False, has_flat=False, polarization_factor=None, normalization_factor=None)
    +
    +++ + + + + + + + +
    Parameters:
      +
    • hdr (str) – string used as comment in the header
    • +
    • has_dark (bool) – save the darks filenames (default: no)
    • +
    • has_flat (bool) – save the flat filenames (default: no)
    • +
    • polarization_factor (float) – the polarization factor
    • +
    +
    Returns:

    the header

    +
    Return type:

    str

    +
    -
    -
    -class pyFAI.detectors.Titan(pixel1=6e-05, pixel2=6e-05)
    -

    Bases: pyFAI.detectors.Detector

    -

    Titan CCD detector from Agilent. Mask not handled

    -
    -
    -MAX_SHAPE = (2048, 2048)
    -
    +
    +
    +save1D(filename, dim1, I, error=None, dim1_unit='2th_deg', has_dark=False, has_flat=False, polarization_factor=None, normalization_factor=None)
    +
    +++ + + + +
    Parameters:
      +
    • filename (str) – the filename used to save the 1D integration
    • +
    • dim1 (numpy.ndarray) – the x coordinates of the integrated curve
    • +
    • I (numpy.mdarray) – The integrated intensity
    • +
    • error (numpy.ndarray or None) – the error bar for each intensity
    • +
    • dim1_unit (pyFAI.units.Unit) – the unit of the dim1 array
    • +
    • has_dark (bool) – save the darks filenames (default: no)
    • +
    • has_flat (bool) – save the flat filenames (default: no)
    • +
    • polarization_factor (float, None) – the polarization factor
    • +
    • normalization_factor (float, None) – the monitor value
    • +
    +
    +

    This method save the result of a 1D integration.

    +
    -
    -
    -aliases = ['Titan 2k x 2k', 'OXD Titan', 'Agilent Titan']
    -
    +
    +
    +save2D(filename, I, dim1, dim2, error=None, dim1_unit='2th_deg', has_dark=False, has_flat=False, polarization_factor=None, normalization_factor=None)
    +
    +++ + + + +
    Parameters:
      +
    • filename (str) – the filename used to save the 2D histogram
    • +
    • dim1 (numpy.ndarray) – the 1st coordinates of the histogram
    • +
    • dim1 – the 2nd coordinates of the histogram
    • +
    • I (numpy.mdarray) – The integrated intensity
    • +
    • error (numpy.ndarray or None) – the error bar for each intensity
    • +
    • dim1_unit (pyFAI.units.Unit) – the unit of the dim1 array
    • +
    • has_dark (bool) – save the darks filenames (default: no)
    • +
    • has_flat (bool) – save the flat filenames (default: no)
    • +
    • polarization_factor (float, None) – the polarization factor
    • +
    • normalization_factor (float, None) – the monitor value
    • +
    +
    +

    This method save the result of a 2D integration.

    +
    -
    -
    -force_pixel = True
    -
    +
    +
    +set_filename(filename)
    +

    Define the filename while will be used

    +
    -
    -
    -uniform_pixel = True
    -
    +
    +
    +write(data)
    +

    Minimalistic method to limit the overhead.

    + +++ + + + +
    Parameters:data – array with intensities or tuple (2th,I) or (I,2th,chi) :type data: Integrate1dResult, Integrate2dResult
    +
    -
    -class pyFAI.detectors.Xpad_flat(pixel1=0.00013, pixel2=0.00013, max_shape=None, module_size=None)
    -

    Bases: pyFAI.detectors.ImXPadS10

    -

    Xpad detector: generic description for -ImXPad detector with 8x7modules

    -
    -
    -BORDER_PIXEL_SIZE_RELATIVE = 2.5
    +
    +class pyFAI.io.FabioWriter(filename=None)
    +

    Bases: pyFAI.io.Writer

    +

    Image file writer based on FabIO

    +

    TODO !!!

    +
    +
    +__init__(filename=None)
    -
    -
    -IS_CONTIGUOUS = False
    -
    +
    +
    +init(fai_cfg=None, lima_cfg=None)
    +

    Creates the directory that will host the output file(s)

    +
    -
    -
    -MAX_SHAPE = (960, 560)
    +
    +
    +write(data, index=0)
    -
    -
    -MODULE_GAP = (0.00357, 0)
    -
    +
    +
    +
    +class pyFAI.io.HDF5Writer(filename, hpath='data', fast_scan_width=None)
    +

    Bases: pyFAI.io.Writer

    +

    Class allowing to write HDF5 Files.

    -
    -MODULE_SIZE = (120, 80)
    +
    +CONFIG = 'pyFAI'
    -
    -PIXEL_SIZE = (0.00013, 0.00013)
    +
    +DATASET_NAME = 'data'
    -
    -
    -aliases = ['Xpad S540 flat', 'd5']
    +
    +
    +__init__(filename, hpath='data', fast_scan_width=None)
    +

    Constructor of an HDF5 writer:

    + +++ + + + +
    Parameters:
      +
    • filename – name of the file
    • +
    • hpath – name of the group: it will contain data (2-4D dataset), [tth|q|r] and pyFAI, group containing the configuration
    • +
    • fast_scan_width – set it to define the width of
    • +
    +
    +
    + +
    +
    +close()
    -
    -calc_cartesian_positions(d1=None, d2=None, center=True, use_cython=True)
    -

    Calculate the position of each pixel center in cartesian coordinate -and in meter of a couple of coordinates. -The half pixel offset is taken into account here !!! -Adapted to Nexus detector definition

    +
    +flush(radial=None, azimuthal=None)
    +

    Update some data like axis units and so on.

    Parameters:
      -
    • d1 (ndarray (1D or 2D)) – the Y pixel positions (slow dimension)
    • -
    • d2 (ndarray (1D or 2D)) – the X pixel positions (fast dimension)
    • -
    • center – retrieve the coordinate of the center of the pixel
    • +
    • radial – position in radial direction
    • +
    • azimuthal – position in azimuthal direction
    -

    @parm use_cython: set to False to test Numpy implementation -:return: position in meter of the center of each pixels. -:rtype: ndarray

    -

    d1 and d2 must have the same shape, returned array will have -the same shape.

    -
    -calc_mask()
    -

    Returns a generic mask for Xpad detectors... -discards the first line and raw form all modules: -those are 2.5x bigger and often mis - behaving

    +
    +init(fai_cfg=None, lima_cfg=None)
    +

    Initializes the HDF5 file for writing +:param fai_cfg: the configuration of the worker as a dictionary

    -
    -calc_pixels_edges()
    -

    Calculate the position of the pixel edges, specific to the S540, d5 detector

    +
    +write(data, index=0)
    +

    Minimalistic method to limit the overhead. +:param data: array with intensities or tuple (2th,I) or (I,2th,chi)

    -
    -
    -force_pixel = True
    -
    +
    +
    +
    +class pyFAI.io.Nexus(filename, mode='r')
    +

    Bases: object

    +

    Writer class to handle Nexus/HDF5 data

    +

    Manages:

    +
      +
    • entry

      +
      +
        +
      • pyFAI-subentry

        +
        +
          +
        • detector
        • +
        +
        +
      • +
      +
      +
    • +
    +

    TODO: make it thread-safe !!!

    -
    -get_pixel_corners()
    -

    Calculate the position of the corner of the pixels

    +
    +__init__(filename, mode='r')
    +

    Constructor

    - +
    Returns:4D array containing: -pixel index (slow dimension) -pixel index (fast dimension) -corner index (A, B, C or D), triangles or hexagons can be handled the same way -vertex position (z,y,x)
    Parameters:
      +
    • filename – name of the hdf5 file containing the nexus
    • +
    • mode – can be r or a
    • +
    +
    -
    -
    -uniform_pixel = False
    -
    - +
    +
    +close()
    +

    close the filename and update all entries

    -
    -
    -

    spline Module

    -

    This is piece of software aims at manipulating spline files -describing for geometric corrections of the 2D detectors using cubic-spline.

    -

    Mainly used at ESRF with FReLoN CCD camera.

    -
    -
    -class pyFAI.spline.Spline(filename=None)
    -

    Bases: object

    -

    This class is a python representation of the spline file

    -

    Those file represent cubic splines for 2D detector distortions and -makes heavy use of fitpack (dierckx in netlib) — A Python-C -wrapper to FITPACK (by P. Dierckx). FITPACK is a collection of -FORTRAN programs for curve and surface fitting with splines and -tensor product splines. See -_http://www.cs.kuleuven.ac.be/cwis/research/nalag/research/topics/fitpack.html -or _http://www.netlib.org/dierckx/index.html

    -
    -array2spline(smoothing=1000, timing=False)
    -

    Calculates the spline coefficients from the displacements -matrix using fitpack.

    +
    +deep_copy(name, obj, where='/', toplevel=None, excluded=None, overwrite=False)
    +

    perform a deep copy: +create a “name” entry in self containing a copy of the object

    @@ -4643,39 +7454,36 @@

    Navigation

    -
    -bin(binning=None)
    -

    Performs the binning of a spline (same camera with different binning)

    +
    +find_detector(all=False)
    +

    Tries to find a detector within a NeXus file, takes the first compatible detector

    Parameters:
      -
    • smoothing (float) – the greater the smoothing, the fewer the number of knots remaining
    • -
    • timing (bool) – print the profiling of the calculation
    • +
    • where – path to the toplevel object (i.e. root)
    • +
    • toplevel – firectly the top level Group
    • +
    • excluded – list of keys to be excluded
    • +
    • overwrite – replace content if already existing
    - - - +
    Parameters:binning – binning factor as integer or 2-tuple of integers
    Type:int or (int, int)
    Parameters:all – return all detectors found as a list
    -
    -
    -comparison(ref, verbose=False)
    -

    Compares the current spline distortion with a reference

    +
    +
    +classmethod get_attr(dset, name, default=None)
    +

    Return the attribute of the dataset

    +

    Handles the ascii -> unicode issue in python3 #275

    - - - @@ -4683,147 +7491,117 @@

    Navigation

    -
    -correct(pos)
    -
    - -
    -
    -fliplr()
    -

    Flip the spline -:return: new spline object

    -
    - -
    -
    -fliplrud()
    -

    Flip the spline left-right and up-down -:return: new spline object

    -
    - -
    -
    -flipud()
    -

    Flip the spline up-down -:return: new spline object

    -
    - -
    -
    -getPixelSize()
    -

    Return the size of the pixel from as a 2-tuple of floats expressed -in meters.

    +
    +get_class(grp, class_type='NXcollection')
    +

    return all sub-groups of the given type within a group

    Parameters:
      -
    • ref (Spline instance) – another spline file
    • -
    • verbose (bool) – print or not pylab plots
    • +
    • dset – a HDF5 dataset (or a group)
    • +
    • name – name of the attribute
    • +
    • default – default value to be returned
    Returns:

    True or False depending if the splines are the same or not

    -
    Return type:

    bool

    +
    Returns:

    attribute value decoded in python3 or default

    - - - +
    Returns:the size of the pixel from a 2D detector
    Return type:2-tuple of floats expressed in meter.
    Parameters:
      +
    • grp – HDF5 group
    • +
    • class_type – name of the NeXus class
    • +
    +
    -
    -read(filename)
    -

    read an ascii spline file from file

    +
    +get_data(grp, class_type='NXdata')
    +

    return all dataset of the the NeXus class NXdata

    - +
    Parameters:filename (str) – file containing the cubic spline distortion file
    Parameters:
      +
    • grp – HDF5 group
    • +
    • class_type – name of the NeXus class
    • +
    +
    -
    -setPixelSize(pixelSize)
    -

    Sets the size of the pixel from a 2-tuple of floats expressed -in meters.

    +
    +get_entries()
    +

    retrieves all entry sorted the latest first.

    - +
    Param:pixel size in meter
    Returns:list of HDF5 groups
    -
    -spline2array(timing=False)
    -

    Calculates the displacement matrix using fitpack -bisplev(x, y, tck, dx = 0, dy = 0)

    +
    +get_entry(name)
    +

    Retrieves an entry from its name

    - - - + - +
    Parameters:timing (bool) – profile the calculation or not
    Returns:Nothing !
    Parameters:name – name of the entry to retrieve
    Return type:float or ndarray
    Returns:HDF5 group of NXclass == NXentry
    -

    Evaluate a bivariate B-spline and its derivatives. Return a -rank-2 array of spline function values (or spline derivative -values) at points given by the cross-product of the rank-1 -arrays x and y. In special cases, return an array or just a -float if either x or y or both are floats.

    -
    -splineFuncX(x, y, list_of_points=False)
    -

    Calculates the displacement matrix using fitpack for the X -direction on the given grid.

    +
    +new_class(grp, name, class_type='NXcollection')
    +

    create a new sub-group with type class_type +:param grp: parent group +:param name: name of the sub-group +:param class_type: NeXus class name +:return: subgroup created

    +
    + +
    +
    +new_detector(name='detector', entry='entry', subentry='pyFAI')
    +

    Create a new entry/pyFAI/Detector

    - - - - -
    Parameters:
      -
    • x (ndarray) – points of the grid in the x direction
    • -
    • y (ndarray) – points of the grid in the y direction
    • -
    • list_of_points – if true, consider the zip(x,y) instead of the of the square array
    • +
    Parameters:
      +
    • detector – name of the detector
    • +
    • entry – name of the entry
    • +
    • subentry – all pyFAI description of detectors should be in a pyFAI sub-entry
    Returns:

    displacement matrix for the X direction

    -
    Return type:

    ndarray

    -
    -
    -splineFuncY(x, y, list_of_points=False)
    -

    calculates the displacement matrix using fitpack for the Y -direction

    +
    +new_entry(entry='entry', program_name='pyFAI', title='description of experiment', force_time=None)
    +

    Create a new entry

    - - - @@ -4831,76 +7609,153 @@

    Navigation

    -
    -tilt(center=(0.0, 0.0), tiltAngle=0.0, tiltPlanRot=0.0, distanceSampleDetector=1.0, timing=False)
    -

    The tilt method apply a virtual tilt on the detector, the -point of tilt is given by the center

    -
    Parameters:
      -
    • x (ndarray) – points in the x direction
    • -
    • y (ndarray) – points in the y direction
    • -
    • list_of_points – if true, consider the zip(x,y) instead of the of the square array
    • +
    • entry – name of the entry
    • +
    • program_name – value of the field as string
    • +
    • title – value of the field as string
    • +
    • force_time – enforce the start_time (as string!)
    Returns:

    displacement matrix for the Y direction

    -
    Return type:

    ndarray

    +
    Returns:

    the corresponding HDF5 group

    +
    +new_instrument(entry='entry', instrument_name='id00')
    +

    Create an instrument in an entry or create both the entry and the instrument if

    +
    + + + +
    +
    +class pyFAI.io.Writer(filename=None, extension=None)
    +

    Bases: object

    +

    Abstract class for writers.

    +
    +
    +CONFIG_ITEMS = ['filename', 'dirname', 'extension', 'subdir', 'hpath']
    +
    + +
    +
    +__init__(filename=None, extension=None)
    +

    Constructor of the class

    +
    + +
    +
    +flush(*arg, **kwarg)
    +

    To be implemented

    +
    + +
    +
    +init(fai_cfg=None, lima_cfg=None)
    +

    Creates the directory that will host the output file(s) +:param fai_cfg: configuration for worker +:param lima_cfg: configuration for acquisition

    +
    + +
    +
    +setJsonConfig(json_config=None)
    +

    Sets the JSON configuration

    +
    + +
    +
    +write(data)
    +

    To be implemented

    +
    + +
    + +
    +
    +pyFAI.io.from_isotime(text, use_tz=False)
    +
    - - - - - +
    Parameters:
      -
    • center (2-tuple of floats) – position of the point of tilt, this point will not be moved.
    • -
    • tiltAngle (float in the range [-90:+90] degrees) – the value of the tilt in degrees
    • -
    • tiltPlanRot (Float in the range [-180:180]) – the rotation of the tilt plan with the Ox axis (0 deg for y axis invariant, 90 deg for x axis invariant)
    • -
    • distanceSampleDetector (float) – the distance from sample to detector in meter (along the beam, so distance from sample to center)
    • -
    -
    Returns:

    tilted Spline instance

    -
    Return type:

    Spline

    -
    Parameters:text – string representing the time is iso format
    -
    -
    -write(filename)
    -

    save the cubic spline in an ascii file usable with Fit2D or -SPD

    - +
    +
    +pyFAI.io.get_isotime(forceTime=None)
    +
    - + + + + +
    Parameters:filename (str) – name of the file containing the cubic spline distortion file
    Parameters:forceTime (float) – enforce a given time (current by default)
    Returns:the current time as an ISO8601 string
    Return type:string
    -
    -
    -writeEDF(basename)
    -

    save the distortion matrices into a couple of files called -basename-x.edf and basename-y.edf

    +
    +
    +pyFAI.io.is_hdf5(filename)
    +

    Check if a file is actually a HDF5 file

    - +
    Parameters:basename (str) – base of the name used to save the data
    Parameters:filename – this file has better to exist
    +
    +
    +

    calibration Module

    +

    pyFAI-calib

    +

    A tool for determining the geometry of a detector using a reference sample.

    +
    +
    +class pyFAI.calibration.AbstractCalibration(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    +

    Bases: object

    +

    Everything that is common to Calibration and Recalibration

    +
    +
    +HELP = {'reset': 'Reset the geometry to the initial guess (rotation to zero, distance to 0.1m, poni at the center of the image)', 'delete': 'delete a group of points, provide the letter.', 'set': "set the value of a parameter to the given value, i.e 'set wavelength 0.1 nm', units are optional", 'chiplot': 'plot control point radial error as function of azimuthal angle, optional parameters: the rings for which this need to be plotted', 'help': "Try to get the help of a given action, like 'refine?'. Use done when finished. Most command are composed of 'action parameter value' like 'set wavelength 1 A'.", 'weight': 'toggle from weighted to unweighted mode...', 'get': 'print he value of a parameter', 'fix': "fixes the value of a parameter so that its value will not be optimized, i.e. 'fix wavelength'", 'validate2': 'measures the offset of the center as function of azimuthal angle by cross-correlation of 2 plots, 180 deg appart. Option: number of azimuthal sliced, default: 36', 'show': "Just print out the current parameter set. Optional parameters are units for length, rotation and wavelength, i.e. 'show mm deg A'", 'bound': "sets the upper and lower bound of a parameter: 'bound dist 0.1 0.2'", 'free': "frees the parameter so that the value can be optimized, i.e. 'free wavelength'", 'bounds': 'sets the upper and lower bound of all parameters', 'abort': 'quit immediately, discarding any unsaved changes', 'done': 'finishes the processing, performs an integration and quits', 'refine': 'performs a new cycle of refinement', 'integrate': 'perform the azimuthal integration and display results', 'validate': 'plot the offset between the calibrated image and the back-projected image', 'recalib': 'extract a new set of rings and re-perform the calibration. One can specify how many rings to extract and the algorithm to use (blob, massif, watershed) and the nb_pts_per_deg in azimuth', 'assign': 'Change the assignment of a group of points to a rings', 'define': 'Re-define the value for a constant internal parameter of the program like max_iter, nPt_1D, nPt_2D_azim, nPt_2D_rad, integrator_method, error_model. Warning: attribute change may be harmful !'}
    +
    + +
    +
    +PARAMETERS = ['dist', 'poni1', 'poni2', 'rot1', 'rot2', 'rot3', 'wavelength']
    +
    + +
    +
    +PTS_PER_DEG = 0.3
    +
    + +
    +
    +UNITS = {'poni1': 'meter', 'poni2': 'meter', 'rot1': 'radian', 'rot3': 'radian', 'rot2': 'radian', 'wavelength': 'meter', 'dist': 'meter'}
    +
    + +
    +
    +VALID_URL = ['', 'file', 'hdf5', 'nxs', 'h5']
    +
    +
    -
    -zeros(xmin=0.0, ymin=0.0, xmax=2048.0, ymax=2048.0, pixSize=None)
    -

    Defines a spline file with no ( zero ) displacement.

    +
    +__init__(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    +

    Constructor of AbstractCalibration

    @@ -4909,152 +7764,130 @@

    Navigation

    -
    -zeros_like(other)
    -

    Defines a spline file with no ( zero ) displacement with the -same shape as the other one given.

    +
    +analyse_options(options=None, args=None)
    +

    Analyzes options and arguments

    Parameters:
      -
    • xmin (float) – minimum coordinate in x, usually zero
    • -
    • xmax (float) – maximum coordinate in x (+1) usually 2048
    • -
    • ymin (float) – minimum coordinate in y, usually zero
    • -
    • ymax (float) – maximum coordinate y (+1) usually 2048
    • -
    • pixSize (float) – size of the pixel
    • +
    • dataFiles – list of filenames containing data images
    • +
    • darkFiles – list of filenames containing dark current images
    • +
    • flatFiles – list of filenames containing flat images
    • +
    • pixelSize – size of the pixel in meter as 2 tuple
    • +
    • splineFile – file containing the distortion of the taper
    • +
    • detector – Detector name or instance
    • +
    • wavelength – radiation wavelength in meter
    • +
    • calibrant – pyFAI.calibrant.Calibrant instance
    - +
    Parameters:other (Spline instance) – another Spline instance
    Returns:option,arguments
    -
    - -
    -
    -pyFAI.spline.main()
    -

    Some tests ....

    -
    - -
    -
    -

    opencl Module

    -
    -
    -class pyFAI.opencl.Device(name='None', dtype=None, version=None, driver_version=None, extensions='', memory=None, available=None, cores=None, frequency=None, flop_core=None, idx=0, workgroup=1)
    -

    Bases: object

    -

    Simple class that contains the structure of an OpenCL device

    -
    -pretty_print()
    -

    Complete device description

    +
    +chiplot(rings=None)
    +

    plot delta_2theta/2theta = f(chi) and fit the curve.

    - +
    Returns:string
    Parameters:rings – list of rings to consider
    -
    - -
    -
    -class pyFAI.opencl.OpenCL
    -

    Bases: object

    -

    Simple class that wraps the structure ocl_tools_extended.h

    -

    This is a static class. -ocl should be the only instance and shared among all python modules.

    -
    -
    -comput_cap = (5, 0)
    -
    - -
    -
    -context_cache = {}
    -
    -
    -
    -create_context(devicetype='ALL', useFp64=False, platformid=None, deviceid=None, cached=True)
    -

    Choose a device and initiate a context.

    -

    Devicetypes can be GPU,gpu,CPU,cpu,DEF,ACC,ALL. -Suggested are GPU,CPU. -For each setting to work there must be such an OpenCL device and properly installed. -E.g.: If Nvidia driver is installed, GPU will succeed but CPU will fail. The AMD SDK kit is required for CPU via OpenCL. -:param devicetype: string in [“cpu”,”gpu”, “all”, “acc”] -:param useFp64: boolean specifying if double precision will be used -:param platformid: integer -:param devid: integer -:return: OpenCL context on the selected device

    +
    +configure_parser(version='calibration from pyFAI version 0.13.0: 02/12/2016', usage='pyFAI-calib [options] input_image.edf', description=None, epilog=None)
    +

    Common configuration for parsers

    -
    -device_from_context(context)
    -

    Retrieves the Device from the context

    +
    +extract_cpt(method='massif', pts_per_deg=1.0)
    +

    Performs an automatic keypoint extraction: +Can be used in recalib or in calib after a first calibration has been performed.

    - - - +
    Parameters:context – OpenCL context
    Returns:instance of Device
    Parameters:
      +
    • method – method for keypoint extraction
    • +
    • pts_per_deg – number of control points per azimuthal degree (increase for better precision)
    • +
    +
    -
    -
    -flop_core = 4
    -
    +
    +
    +get_pixelSize(ans)
    +

    convert a comma separated sting into pixel size

    +
    + +
    +
    +postProcess()
    +

    Common part: shows the result of the azimuthal integration in 1D and 2D

    +
    + +
    +
    +preprocess()
    +

    Common part: +do dark, flat correction thresholding, ... +and read missing data from keyboard if needed

    +
    -
    -get_platform(key)
    -

    Return a platform according

    +
    +prompt()
    +

    prompt for commands to guide the calibration process

    - +
    Parameters:key (int or str) – identifier for a platform, either an Id (int) or it’s name
    Returns:True when the user is happy with what he has, False to request another refinement
    -
    -
    -idd = 0
    -
    +
    +
    +read_dSpacingFile(verbose=True)
    +

    Read the name of the calibrant / file with d-spacing

    +
    -
    -
    -idx = 3
    -
    +
    +
    +read_pixelsSize()
    +

    Read the pixel size from prompt if not available

    +
    -
    -
    -nb_devices = 5
    -
    +
    +
    +read_wavelength()
    +

    Read the wavelength

    +
    -
    -
    -platforms = [NVIDIA CUDA, FreeOCL, Intel(R) OpenCL, AMD Accelerated Parallel Processing]
    -
    +
    +
    +refine()
    +

    Contains the common geometry refinement part

    +
    -
    -select_device(dtype='ALL', memory=None, extensions=[], best=True, **kwargs)
    -

    Select a device based on few parameters (at the end, keep the one with most memory)

    +
    +reset_geometry(how='center', refine=False)
    +

    Reset the geometry: no tilt in all cases

    @@ -5062,222 +7895,228 @@

    Navigation

    Parameters:
      -
    • type – “gpu” or “cpu” or “all” ....
    • -
    • memory – minimum amount of memory (int)
    • -
    • extensions – list of extensions to be present
    • -
    • best – shall we look for the
    • +
    • how – multiple options +* center: set the PONI at the center of the detector +* ring: center the poni at the middle of the inner-most ring +* best: try both option and keeps the best (this option is not available)
    • +
    • refine – launch the refinement (argument not used)
    -
    -
    -workgroup = 1024
    -
    +
    +
    +set_data(data)
    +

    call-back function for the peak-picker

    +
    +
    +
    +validate_calibration()
    +

    Validate the calibration and calculate the offset in the diffraction image

    -
    -
    -class pyFAI.opencl.Platform(name='None', vendor='None', version=None, extensions=None, idx=0)
    -

    Bases: object

    -

    Simple class that contains the structure of an OpenCL platform

    -
    -add_device(device)
    -

    Add new device to the platform

    +
    +validate_center(slices=36)
    +

    Validate the position of the center by cross-correlating two spectra 180 deg appart. +Output values are in micron.

    +

    Designed for orthogonal setup with centered beam...

    - +
    Parameters:device – Device instance
    Parameters:slices – number of slices on which perform
    +
    +
    +win_error = 'We are under windows with a 32 bit version of python, matplotlib is not able to display too many images without crashing, this is why the window showing the diffraction image is closed'
    +
    + +
    + +
    +
    +class pyFAI.calibration.Calibration(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, gaussianWidth=None, wavelength=None, calibrant=None)
    +

    Bases: pyFAI.calibration.AbstractCalibration

    +

    class doing the calibration of frames

    -
    -get_device(key)
    -

    Return a device according to key

    +
    +__init__(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, gaussianWidth=None, wavelength=None, calibrant=None)
    +

    Constructor for calibration:

    - +
    Parameters:key (int or str) – identifier for a device, either it’s id (int) or it’s name
    Parameters:
      +
    • dataFiles – list of filenames containing data images
    • +
    • darkFiles – list of filenames containing dark current images
    • +
    • flatFiles – list of filenames containing flat images
    • +
    • pixelSize – size of the pixel in meter as 2 tuple
    • +
    • splineFile – file containing the distortion of the taper
    • +
    • detector – Detector name or instance
    • +
    • wavelength – radiation wavelength in meter
    • +
    • calibrant – pyFAI.calibrant.Calibrant instance
    • +
    +
    +
    +
    +gui_peakPicker()
    +
    + +
    +
    +initgeoRef()
    +

    Tries to initialise the GeometryRefinement (dist, poni, rot) +Returns a dictionary of key value pairs

    -
    -
    -pyFAI.opencl.allocate_cl_buffers(buffers, device=None, context=None)
    -
    --- - - - - - - - -
    Parameters:buffers – the buffers info use to create the pyopencl.Buffer
    Returns:a dict containing the instanciated pyopencl.Buffer
    Return type:dict(str, pyopencl.Buffer)
    -

    This method instanciate the pyopencl.Buffer from the buffers -description.

    +
    +
    +parse()
    +

    parse options from command line

    +
    + +
    +
    +preprocess()
    +

    do dark, flat correction thresholding, ...

    +
    + +
    +
    +refine()
    +

    Contains the geometry refinement part specific to Calibration +Sets up the initial guess when starting pyFAI-calib

    -
    -
    -pyFAI.opencl.release_cl_buffers(cl_buffers)
    -
    --- - - - -
    Parameters:cl_buffer (dict(str, pyopencl.Buffer)) – the buffer you want to release
    -

    This method release the memory of the buffers store in the dict

    -
    -
    -

    ocl_azim Module

    -

    C++ less implementation of Dimitris’ code based on PyOpenCL

    -
    -
    TODO and trick from dimitris still missing:
    -
      -
    • dark-current subtraction is still missing
    • -
    • In fact you might want to consider doing the conversion on the GPU when -possible. Think about it, you have a uint16 to float which for large arrays -was slow.. You load on the graphic card a uint16 (2x transfer speed) and -you convert to float inside so it should be blazing fast.
    • -
    -
    -
    -
    -class pyFAI.ocl_azim.Integrator1d(filename=None)
    +
    +class pyFAI.calibration.CheckCalib(poni=None, img=None, unit='2th_deg')

    Bases: object

    -

    Attempt to implements ocl_azim using pyopencl

    +
    +
    +__init__(poni=None, img=None, unit='2th_deg')
    +
    + +
    +
    +get_1dsize()
    +
    + +
    +
    +integrate()
    +
    + +
    +
    +parse()
    +
    + +
    +
    +rebuild()
    +

    Rebuild the diffraction image and measures the offset with the reference +:return: offset

    +
    + +
    +
    +show()
    +

    Show the image with the the errors

    +
    +
    -
    -BLOCK_SIZE = 128
    +
    +size1d
    -
    -clean(preserve_context=False)
    -

    Free OpenCL related resources allocated by the library.

    -

    clean() is used to reinitiate the library back in a vanilla -state. It may be asked to preserve the context created by -init or completely clean up OpenCL. Guard/Status flags that -are set will be reset.

    - --- - - - -
    Parameters:preserve_context (bool) – preserves or destroys all OpenCL resources
    +
    +smooth_mask(hwhm=5)
    +

    smooth out around the mask to avoid aligning on the mask

    +
    + +
    + +
    +
    +class pyFAI.calibration.MultiCalib(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None)
    +

    Bases: object

    +
    +
    +__init__(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None)
    +
    + +
    +
    +get_pixelSize(ans)
    +

    convert a comma separated sting into pixel size

    -
    -configure(kernel=None)
    -

    The method configure() allocates the OpenCL resources required -and compiled the OpenCL kernels. An active context must exist -before a call to configure() and getConfiguration() must have -been called at least once. Since the compiled OpenCL kernels -carry some information on the integration parameters, a change -to any of the parameters of getConfiguration() requires a -subsequent call to configure() for them to take effect.

    -

    If a configuration exists and configure() is called, the -configuration is cleaned up first to avoid OpenCL memory leaks

    - --- - - - -
    Parameters:kernel_path – is the path to the actual kernel
    +
    +parse(exe=None, description=None, epilog=None)
    +

    parse options from command line +:param exe: name of the program (MX-calibrate) +:param description: Description of the program

    -
    -execute(image)
    -

    Perform a 1D azimuthal integration

    -

    execute() may be called only after an OpenCL device is -configured and a Tth array has been loaded (at least once) It -takes the input image and based on the configuration provided -earlier it performs the 1D integration. Notice that if the -provided image is bigger than N then only N points will be -taked into account, while if the image is smaller than N the -result may be catastrophic. set/unset and loadTth methods -have a direct impact on the execute() method. All the rest of -the methods will require at least a new configuration via -configure().

    -

    Takes an image, integrate and return the histogram and weights

    - --- - - - - - -
    Parameters:image – image to be processed as a numpy array
    Returns:tth_out, histogram, bins
    -

    TODO: to improve performances, the image should be casted to -float32 in an optimal way: currently using numpy machinery but -would be better if done in OpenCL

    +
    +process()
    +
    + +
    +
    +read_dSpacingFile()
    +

    Read the name of the calibrant or the file with d-spacing

    -
    -getConfiguration(Nimage, Nbins, useFp64=None)
    -

    getConfiguration gets the description of the integrations -to be performed and keeps an internal copy

    - --- - - - -
    Parameters:
      -
    • Nimage – number of pixel in image
    • -
    • Nbins – number of bins in regrouped histogram
    • -
    • useFp64 – use double precision. By default the same as init!
    • -
    -
    +
    +read_pixelsSize()
    +

    Read the pixel size from prompt if not available

    -
    -get_status()
    -

    return a dictionnary with the status of the integrator: for -compatibilty with former implementation

    +
    +read_wavelength()
    +

    Read the wavelength

    -
    -init(devicetype='GPU', useFp64=True, platformid=None, deviceid=None)
    -

    Initial configuration: Choose a device and initiate a -context. Devicetypes can be GPU, gpu, CPU, cpu, DEF, ACC, -ALL. Suggested are GPU,CPU. For each setting to work there -must be such an OpenCL device and properly installed. E.g.: If -Nvidia driver is installed, GPU will succeed but CPU will -fail. The AMD SDK kit (AMD APP) is required for CPU via -OpenCL.

    +
    +regression()
    +
    + +
    + +
    +
    +class pyFAI.calibration.Recalibration(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    +

    Bases: pyFAI.calibration.AbstractCalibration

    +

    class doing the re-calibration of frames

    +
    +
    +__init__(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    +

    Constructor for Recalibration:

    @@ -5286,685 +8125,671 @@

    Navigation

    -
    -loadTth(tth, dtth, tth_min=None, tth_max=None)
    -

    Load the 2th arrays along with the min and max value.

    -

    loadTth maybe be recalled at any time of the execution in -order to update the 2th arrays.

    -

    loadTth is required and must be called at least once after a -configure()

    +
    +parse()
    +

    parse options from command line

    -
    -log(**kwarg)
    -

    log in a file all opencl events

    +
    +preprocess()
    +

    do dark, flat correction thresholding, ...

    -
    -setDummyValue(dummy, delta_dummy)
    -

    Enables dummy value functionality and uploads the value to the -OpenCL device.

    -

    Image values that are similar to the dummy value are set to 0.

    -
    Parameters:
      -
    • devicetype – string in [“cpu”,”gpu”, “all”, “acc”]
    • -
    • useFp64 – boolean specifying if double precision will be used
    • -
    • platformid – integer
    • -
    • devid – integer
    • +
    • dataFiles – list of filenames containing data images
    • +
    • darkFiles – list of filenames containing dark current images
    • +
    • flatFiles – list of filenames containing flat images
    • +
    • pixelSize – size of the pixel in meter as 2 tuple
    • +
    • splineFile – file containing the distortion of the taper
    • +
    • detector – Detector name or instance
    • +
    • wavelength – radiation wavelength in meter
    • +
    • calibrant – pyFAI.calibrant.Calibrant instance
    --- - - - -
    Parameters:
      -
    • dummy – value in image of missing values (masked pixels?)
    • -
    • delta_dummy – precision for dummy values
    • -
    -
    +
    +read_dSpacingFile()
    +

    Read the name of the file with d-spacing

    -
    -setMask(mask)
    -

    Enables the use of a Mask during integration. The Mask can be -updated by recalling setMask at any point.

    -

    The Mask must be a PyFAI Mask. Pixels with 0 are masked -out. TODO: check and invert!

    - --- - - - -
    Parameters:mask – numpy.ndarray of integer.
    +
    +refine()
    +

    Contains the geometry refinement part specific to Recalibration

    -
    -
    -setRange(lowerBound, upperBound)
    -

    Instructs the program to use a user - defined range for 2th -values

    -

    setRange is optional. By default the integration will use the -tth_min and tth_max given by loadTth() as integration -range. When setRange is called it sets a new integration range -without affecting the 2th array. All values outside that range -will then be discarded when interpolating. Currently, if the -interval of 2th (2th + -d2th) is not all inside the range -specified, it is discarded. The bins of the histogram are -RESCALED to the defined range and not the original tth_max - -tth_min range.

    -

    setRange can be called at any point and as many times required -after a valid configuration is created.

    +
    + +
    +
    +pyFAI.calibration.calib(img, calibrant, detector, basename='from_ipython', reconstruct=False, dist=0.1, gaussian=None, interactive=True)
    +

    Procedural interfact for calibration

    - + +
    Parameters:
      -
    • lowerBound (float) – lower bound of the integration range
    • -
    • upperBound (float) – upper bound of the integration range
    • +
    Parameters:
      +
    • img – 2d array representing the calibration image
    • +
    • calibrant – Instance of Calibrant, set-up with wavelength
    • +
    • detector – Detector instance containing the mask
    • +
    • basename – output file base
    • +
    • recontruct – perform image reconstruction of masked pixel ?
    • +
    • dist – initial distance
    • +
    • gaussian – width of the gaussian used for difference of gaussian in the “massif” peak-picking algorithm
    • +
    • interactive – set to False for testing
    Returns:

    AzimuthalIntegrator instance

    +
    -
    -
    -setSolidAngle(solidAngle)
    -

    Enables SolidAngle correction and uploads the suitable array -to the OpenCL device.

    -

    By default the program will assume no solidangle correction -unless setSolidAngle() is called. From then on, all -integrations will be corrected via the SolidAngle array.

    -

    If the SolidAngle array needs to be changes, one may just call -setSolidAngle() again with that array

    +
    +
    +pyFAI.calibration.get_detector(detector, datafiles=None)
    +

    Detector factory taking into account the binning knowing the datafiles

    - +
    Parameters:solidAngle (ndarray) – the solid angle of the given pixel
    Parameters:
      +
    • detector – string or detector or other junk
    • +
    • datafiles – can be a list of images to be opened and their shape used.
    • +
    +
    -
    - -
    -
    -unsetDummyValue()
    -

    Disable a dummy value. -May be re-enabled at any time by setDummyValue

    -
    - -
    -
    -unsetMask()
    -

    Disables the use of a Mask from that point. -It may be re-enabled at any point via setMask

    -
    - -
    -
    -unsetRange()
    -

    Disable the use of a user-defined 2th range and revert to -tth_min,tth_max range

    -

    unsetRange instructs the program to revert to its default -integration range. If the method is called when no -user-defined range had been previously specified, no action -will be performed

    -
    - -
    -
    -unsetSolidAngle()
    -

    Instructs the program to not perform solidangle correction from now on.

    -

    SolidAngle correction may be turned back on at any point

    -
    - +

    :return pyFAI.detector.Detector instance +:raise RuntimeError: If no detector found

    -
    -

    ocl_azim_lut Module

    +
    +

    peak_picker Module

    -
    -class pyFAI.ocl_azim_lut.OCL_LUT_Integrator(lut, image_size, devicetype='all', platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    +
    +class pyFAI.peak_picker.ControlPoints(filename=None, calibrant=None, wavelength=None)

    Bases: object

    -
    -
    -BLOCK_SIZE = 16
    +

    This class contains a set of control points with (optionally) their ring number hence d-spacing and diffraction 2Theta angle ...

    +
    +
    +__init__(filename=None, calibrant=None, wavelength=None)
    -
    -integrate(data, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, dark_checksum=None, flat_checksum=None, solidAngle_checksum=None, polarization_checksum=None, preprocess_only=False, safe=True, normalization_factor=1.0)
    -

    Before performing azimuthal integration, the preprocessing is :

    -

    data = (data - dark) / (flat*solidAngle*polarization)

    -

    Integration is performed using the CSR representation of the look-up table

    - +
    +append(points, ring=None, annotate=None, plot=None)
    +
    - + +
    Parameters:
      -
    • dark – array of same shape as data for pre-processing
    • -
    • flat – array of same shape as data for pre-processing
    • -
    • solidAngle – array of same shape as data for pre-processing
    • -
    • polarization – array of same shape as data for pre-processing
    • -
    • dark_checksum – CRC32 checksum of the given array
    • -
    • flat_checksum – CRC32 checksum of the given array
    • -
    • solidAngle_checksum – CRC32 checksum of the given array
    • -
    • polarization_checksum – CRC32 checksum of the given array
    • -
    • safe – if True (default) compares arrays on GPU according to their checksum, unless, use the buffer location is used
    • -
    • normalization_factor – divide raw signal by this value
    • -
    • preprocess_only – return the dark subtracted; flat field & solidAngle & polarization corrected image, else
    • +
    Parameters:
      +
    • point – list of points
    • +
    • ring – ring number
    • +
    • annotate – matplotlib.annotate reference
    • +
    • plot – matplotlib.plot reference
    Returns:

    PointGroup instance

    +
    -

    :return averaged data, weighted histogram, unweighted histogram

    -
    -log_profile()
    -

    If we are in profiling mode, prints out all timing for every single OpenCL call

    +
    +append_2theta_deg(points, angle=None, ring=None)
    +
    +++ + + + +
    Parameters:
      +
    • point – list of points
    • +
    • angle – 2-theta angle in degrees
    • +
    +
    +
    +
    +check()
    +

    check internal consistency of the class

    -
    -
    -

    ocl_azim_csr Module

    -
    -
    -class pyFAI.ocl_azim_csr.OCL_CSR_Integrator(lut, image_size, devicetype='all', block_size=32, platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    -

    Bases: object

    +
    +
    +dSpacing
    +
    +
    -
    -integrate(data, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, dark_checksum=None, flat_checksum=None, solidAngle_checksum=None, polarization_checksum=None, preprocess_only=False, safe=True, normalization_factor=1.0)
    -

    Before performing azimuthal integration, the preprocessing is :

    -

    data = (data - dark) / (flat*solidAngle*polarization)

    -

    Integration is performed using the CSR representation of the look-up table

    +
    +get(ring=None)
    +

    retireves the last set of points for a given ring (by default the last)

    - +
    Parameters:
      -
    • dark – array of same shape as data for pre-processing
    • -
    • flat – array of same shape as data for pre-processing
    • -
    • solidAngle – array of same shape as data for pre-processing
    • -
    • polarization – array of same shape as data for pre-processing
    • -
    • dark_checksum – CRC32 checksum of the given array
    • -
    • flat_checksum – CRC32 checksum of the given array
    • -
    • solidAngle_checksum – CRC32 checksum of the given array
    • -
    • polarization_checksum – CRC32 checksum of the given array
    • -
    • safe – if True (default) compares arrays on GPU according to their checksum, unless, use the buffer location is used
    • -
    • preprocess_only – return the dark subtracted; flat field & solidAngle & polarization corrected image, else
    • -
    • normalization_factor – divide result by this value
    • -
    -
    Parameters:ring – index of ring to search for
    -

    :return averaged data, weighted histogram, unweighted histogram

    -
    -log_profile()
    -

    If we are in profiling mode, prints out all timing for every single OpenCL call

    +
    +getList()
    +

    Retrieve the list of control points suitable for geometry refinement with ring number

    +
    +
    +getList2theta()
    +

    Retrieve the list of control points suitable for geometry refinement

    -
    -
    -

    ocl_azim_csr_dis Module

    -
    -
    -class pyFAI.ocl_azim_csr_dis.OCL_CSR_Integrator(lut, image_size, devicetype='all', block_size=32, platformid=None, deviceid=None, checksum=None, profile=False, empty=None)
    -

    Bases: object

    -
    -integrate(data, dummy=None, delta_dummy=None, dark=None, flat=None, solidAngle=None, polarization=None, dark_checksum=None, flat_checksum=None, solidAngle_checksum=None, polarization_checksum=None)
    -
    +
    +getListRing()
    +

    Retrieve the list of control points suitable for geometry refinement with ring number

    +
    -
    -log_profile()
    -

    If we are in profiling mode, prints out all timing for every -single OpenCL call

    +
    +getWeightedList(image)
    +

    Retrieve the list of control points suitable for geometry refinement with ring number and intensities +:param image: +:return: a (x,4) array with pos0, pos1, ring nr and intensity

    +

    #TODO: refine the value of the intensity using 2nd order polynomia

    - +
    +
    +get_dSpacing()
    +
    -
    -
    -

    worker Module

    -

    This module contains the Worker class:

    -

    A tool able to perform azimuthal integration with: -additional saving capabilities like -- save as 2/3D structure in a HDF5 File -- read from HDF5 files

    -

    Aims at being integrated into a plugin like LImA or as model for the GUI

    -

    The configuration of this class is mainly done via a dictionary transmitted as a JSON string: -Here are the valid keys:

    -
    -

    “dist”, -“poni1”, -“poni2”, -“rot1” -“rot3” -“rot2” -“pixel1” -“pixel2”

    -

    “splineFile” -“wavelength”

    -

    “poni” #path of the file

    -

    “chi_discontinuity_at_0” -“do_mask” -“do_dark” -“do_azimuthal_range” -“do_flat” -“do_2D” -“azimuth_range_min” -“azimuth_range_max”

    -

    “polarization_factor” -“nbpt_rad” -“do_solid_angle” -“do_radial_range” -“do_poisson” -“delta_dummy” -“nbpt_azim” -“flat_field” -“radial_range_min” -“dark_current” -“do_polarization” -“mask_file” -“detector” -“unit” -“radial_range_max” -“val_dummy” -“do_dummy” -“method”

    -
    -

    }

    -
    -
    -class pyFAI.worker.DistortionWorker(detector=None, dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)
    -

    Bases: object

    -

    Simple worker doing dark, flat, solid angle and polarization correction

    -
    -process(data, normalization=None)
    -

    Process the data and apply a normalization factor -:param data: input data -:param normalization: normalization factor -:return processed data

    -
    +
    +get_wavelength()
    +
    +
    +
    +load(filename)
    +

    load all control points from a file

    -
    -
    -class pyFAI.worker.PixelwiseWorker(dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)
    -

    Bases: object

    -

    Simple worker doing dark, flat, solid angle and polarization correction

    -
    -process(data, normalization=None)
    -

    Process the data and apply a normalization factor -:param data: input data -:param normalization: normalization factor -:return processed data

    +
    +pop(ring=None, lbl=None)
    +

    Remove the set of points, either from its code or from a given ring (by default the last)

    + +++ + + + +
    Parameters:
      +
    • ring – index of ring of which remove the last group
    • +
    • lbl – code of the ring to remove
    • +
    +
    +
    +
    +readRingNrFromKeyboard()
    +

    Ask the ring number values for the given points

    -
    -
    -class pyFAI.worker.Worker(azimuthalIntgrator=None, shapeIn=(2048, 2048), shapeOut=(360, 500), unit='r_mm', dummy=None, delta_dummy=None)
    -

    Bases: object

    -
    -do_2D()
    -
    - -
    -
    -error_model
    -
    +
    +reset()
    +

    remove all stored values and resets them to default

    +
    -
    -get_config()
    -

    return configuration as a dictionary

    +
    +save(filename)
    +

    Save a set of control points to a file +:param filename: name of the file +:return: None

    -
    -get_error_model()
    +
    +setWavelength_change2th(value=None)
    -
    -get_json_config()
    -

    return configuration as a JSON string

    +
    +setWavelength_changeDs(value=None)
    +

    This is probably not a good idea, but who knows !

    -
    -get_normalization_factor()
    +
    +set_dSpacing(lst)
    -
    -get_unit()
    +
    +set_wavelength(value=None)
    -
    -normalization_factor
    +
    +wavelength
    +
    + +
    + +
    +
    +class pyFAI.peak_picker.PeakPicker(data, reconst=False, mask=None, pointfile=None, calibrant=None, wavelength=None, detector=None, method='massif')
    +

    Bases: object

    +

    This class is in charge of peak picking, i.e. find bragg spots in the image +Two methods can be used : massif or blob

    +
    +
    +VALID_METHODS = ['massif', 'blob', 'watershed']
    +
    + +
    +
    +__init__(data, reconst=False, mask=None, pointfile=None, calibrant=None, wavelength=None, detector=None, method='massif')
    +
    +++ + + + +
    Parameters:
      +
    • data – input image as numpy array
    • +
    • reconst – shall masked part or negative values be reconstructed (wipe out problems with pilatus gaps)
    • +
    • mask – area in which keypoints will not be considered as valid
    • +
    • pointfile
    • +
    +
    +
    + +
    +
    +closeGUI()
    -
    -process(data)
    -

    Process a frame -#TODO: -dark, flat, sa are missing

    +
    +contour(data, cmap='autumn', linewidths=2, linestyles='dashed')
    +

    Overlay a contour-plot

    - +
    Param:data: numpy array containing the input image
    Parameters:data – 2darray with the 2theta values in radians...
    -
    -reconfig(shape=(2048, 2048), sync=False)
    -

    This is just to force the integrator to initialize with a given input image shape

    +
    +display_points(minIndex=0, reset=False)
    +

    display all points and their ring annotations +:param minIndex: ring index to start with +:param reset: remove all point before re-displaying them

    +
    + +
    +
    +finish(filename=None, callback=None)
    +

    Ask the ring number for the given points

    - +
    Parameters:
      -
    • shape – shape of the input image
    • -
    • sync – return only when synchronized
    • -
    -
    Parameters:filename – file with the point coordinates saved
    -
    -reset()
    -

    this is just to force the integrator to initialize

    +
    +gui(log=False, maximize=False, pick=True)
    +
    +++ + + + +
    Parameters:log – show z in log scale
    -
    -
    -save_config(filename=None)
    +
    +
    +help = ['Please select rings on the diffraction image. In parenthesis, some modified shortcuts for single button mouse (Apple):', ' * Right-click (click+n): try an auto find for a ring', ' * Right-click + Ctrl (click+b): create new group with one point', ' * Right-click + Shift (click+v): add one point to current group', ' * Right-click + m (click+m): find more points for current group', ' * Center-click or (click+d): erase current group', ' * Center-click + 1 or (click+1): erase closest point from current group']
    -
    -setDarkcurrentFile(imagefile)
    -
    +
    +init(method, sync=True)
    +

    Unified initializer

    +
    -
    -setExtension(ext)
    -

    enforce the extension of the processed data file written

    +
    +load(filename)
    +

    load a filename and plot data on the screen (if GUI)

    -
    -setFlatfieldFile(imagefile)
    -
    +
    +massif_contour(data)
    +

    Overlays a mask over a diffraction image

    + +++ + + + +
    Parameters:data – mask to be overlaid
    +
    -
    -setJsonConfig(jsonconfig)
    -
    +
    +on_minus_pts_clicked(*args)
    +

    callback function

    +
    -
    -setSubdir(path)
    -

    Set the relative or absolute path for processed data

    +
    +on_option_clicked(*args)
    +

    callback function

    -
    -set_error_model(value)
    -
    +
    +on_plus_pts_clicked(*args)
    +

    callback function

    +
    -
    -set_normalization_factor(value)
    -
    +
    +on_refine_clicked(*args)
    +

    callback function

    +
    -
    -set_unit(value)
    -
    +
    +onclick(event)
    +

    Called when a mouse is clicked

    +
    -
    -
    -unit
    -
    +
    +
    +peaks_from_area(**kwargs)
    +

    Return the list of peaks within an area

    + +++ + + + + + +
    Parameters:
      +
    • mask – 2d array with mask.
    • +
    • Imin – minimum of intensity above the background to keep the point
    • +
    • keep – maximum number of points to keep
    • +
    • method – enforce the use of detection using “massif” or “blob” or “watershed”
    • +
    • ring – ring number to which assign the points
    • +
    • dmin – minimum distance between two peaks (in pixels)
    • +
    • seed – good starting points.
    • +
    +
    Returns:

    list of peaks [y,x], [y,x], ...]

    +
    +
    -
    -warmup(sync=False)
    -

    Process a dummy image to ensure everything is initialized

    +
    +remove_grp(lbl)
    +

    remove a group of points

    - +
    Parameters:sync – wait for processing to be finished
    Parameters:lbl – label of the group of points
    +
    +
    +reset()
    +

    Reset control point and graph (if needed)

    -
    -
    -pyFAI.worker.make_ai(config)
    -

    Create an Azimuthal integrator from the configuration -Static method !

    +
    +
    +sync_init()
    +
    + +
    + +
    +
    +class pyFAI.peak_picker.PointGroup(points=None, ring=None, annotate=None, plot=None, force_label=None)
    +

    Bases: object

    +

    Class contains a group of points ... +They all belong to the same Debye-Scherrer ring

    +
    +
    +__init__(points=None, ring=None, annotate=None, plot=None, force_label=None)
    +

    Constructor

    - - - +
    Parameters:config – dict with all parameters
    Returns:configured (but uninitialized) AzimuthalIntgrator
    Parameters:
      +
    • points – list of points
    • +
    • ring – ring number
    • +
    • annotate – reference to the matplotlib annotate output
    • +
    • plot – reference to the matplotlib plot
    • +
    • force_label – allows to enforce the label
    • +
    +
    -
    -
    -

    io Module

    -

    Module for “high-performance” writing in either 1D with Ascii , -or 2D with FabIO or even nD with n varying from 2 to 4 using HDF5

    -

    Stand-alone module which tries to offer interface to HDF5 via H5Py and -capabilities to write EDF or other formats using fabio.

    -

    Can be imported without h5py but then limited to fabio & ascii formats.

    -

    TODO: -* add monitor to HDF5

    -
    -
    -class pyFAI.io.AsciiWriter(filename=None, prefix='fai_', extension='.dat')
    -

    Bases: pyFAI.io.Writer

    -

    Ascii file writer (.xy or .dat)

    -
    -
    -init(fai_cfg=None, lima_cfg=None)
    -

    Creates the directory that will host the output file(s)

    +
    +
    +code
    +

    Numerical value for the label: mainly for sorting

    +
    + +
    +
    +classmethod get_label()
    +

    return the next label

    -
    -write(data, index=0)
    +
    +get_ring()
    +
    + +
    +
    +label
    +
    + +
    +
    +last_label = 0
    +
    + +
    +
    +classmethod reset_label()
    +

    reset intenal counter

    +
    + +
    +
    +ring
    +
    +
    +classmethod set_label(label)
    +

    update the internal counter if needed

    -
    -
    -class pyFAI.io.FabioWriter(filename=None)
    -

    Bases: pyFAI.io.Writer

    -

    Image file writer based on FabIO

    -

    TODO !!!

    -
    -init(fai_cfg=None, lima_cfg=None)
    -

    Creates the directory that will host the output file(s)

    +
    +set_ring(value)
    +
    +
    +
    +
    +

    massif Module

    +
    +
    +class pyFAI.massif.Massif(data=None)
    +

    Bases: object

    +

    A massif is defined as an area around a peak, it is used to find neighboring peaks

    +
    +
    +TARGET_SIZE = 1024
    +
    +
    -
    -write(data, index=0)
    +
    +__init__(data=None)
    +
    +
    +calculate_massif(x)
    +

    defines a map of the massif around x and returns the mask

    -
    -
    -class pyFAI.io.HDF5Writer(filename, hpath='data', fast_scan_width=None)
    -

    Bases: pyFAI.io.Writer

    -

    Class allowing to write HDF5 Files.

    -
    -
    -CONFIG = 'pyFAI'
    +
    +
    +delValleySize()
    -
    -
    -DATASET_NAME = 'data'
    -
    +
    +
    +find_peaks(x, nmax=200, annotate=None, massif_contour=None, stdout=<open file '<stdout>', mode 'w' at 0x7f23416fe150>)
    +

    All in one function that finds a maximum from the given seed (x) +then calculates the region extension and extract position of the neighboring peaks. +:param x: seed for the calculation, input coordinates +:param nmax: maximum number of peak per region +:param annotate: call back method taking number of points + coordinate as input. +:param massif_contour: callback to show the contour of a massif with the given index. +:param stdout: this is the file where output is written by default. +:return: list of peaks

    +
    -
    -close()
    -
    +
    +getBinnedData()
    +

    :return binned data

    +
    -
    -flush(radial=None, azimuthal=None)
    -

    Update some data like axis units and so on.

    - +
    +getBluredData()
    +
    - +
    Parameters:
      -
    • radial – position in radial direction
    • -
    • azimuthal – position in azimuthal direction
    • -
    -
    Returns:a blurred image
    -
    -init(fai_cfg=None, lima_cfg=None)
    -

    Initializes the HDF5 file for writing -:param fai_cfg: the configuration of the worker as a dictionary

    -
    - -
    -
    -write(data, index=0)
    -

    Minimalistic method to limit the overhead. -:param data: array with intensities or tuple (2th,I) or (I,2th,chi)

    -
    - -
    - -
    -
    -class pyFAI.io.Nexus(filename, mode='r')
    -

    Bases: object

    -

    Writer class to handle Nexus/HDF5 data -Manages: -entry

    -
    -
    -
    pyFAI-subentry
    -
    detector
    -
    -
    -

    #TODO: make it thread-safe !!!

    -
    -
    -close()
    -

    close the filename and update all entries

    +
    +getLabeledMassif(pattern=None)
    +
    +++ + + + +
    Returns:an image composed of int with a different value for each massif
    -
    -deep_copy(name, obj, where='/', toplevel=None, excluded=None, overwrite=False)
    -

    perform a deep copy: -create a “name” entry in self containing a copy of the object

    - +
    +getMedianData()
    +
    - +
    Parameters:
      -
    • where – path to the toplevel object (i.e. root)
    • -
    • toplevel – firectly the top level Group
    • -
    • excluded – list of keys to be excluded
    • -
    • overwrite – replace content if already existing
    • -
    -
    Returns:a spacial median filtered image
    -
    -find_detector(all=False)
    -

    Tries to find a detector within a NeXus file, takes the first compatible detector

    - +
    +getValleySize()
    +
    + +
    +
    +initValleySize()
    +
    + +
    +
    +nearest_peak(x)
    +
    - + + +
    Parameters:all – return all detectors found as a list
    Parameters:x – coordinates of the peak
    Returns:the coordinates of the nearest peak
    -
    -
    -classmethod get_attr(dset, name, default=None)
    -

    Return the attribute of the dataset

    -

    Handles the ascii -> unicode issue in python3 #275

    +
    +
    +peaks_from_area(mask, Imin=None, keep=1000, dmin=0.0, seed=None, **kwarg)
    +

    Return the list of peaks within an area

    - @@ -5972,16 +8797,45 @@

    Navigation

    -
    -get_class(grp, class_type='NXcollection')
    -

    return all sub-groups of the given type within a group

    +
    +setValleySize(size)
    +
    + +
    +
    +valley_size
    +

    Defines the minimum distance between two massifs

    +
    + + + + +
    +

    blob_detection Module

    +
    +
    +class pyFAI.blob_detection.BlobDetection(img, cur_sigma=0.25, init_sigma=0.5, dest_sigma=1, scale_per_octave=2, mask=None)
    +

    Bases: object

    +

    Performs a blob detection: +http://en.wikipedia.org/wiki/Blob_detection +using a Difference of Gaussian + Pyramid of Gaussians

    +
    +
    +__init__(img, cur_sigma=0.25, init_sigma=0.5, dest_sigma=1, scale_per_octave=2, mask=None)
    +

    Performs a blob detection: +http://en.wikipedia.org/wiki/Blob_detection +using a Difference of Gaussian + Pyramid of Gaussians

    Parameters:
      -
    • dset – a HDF5 dataset (or a group)
    • -
    • name – name of the attribute
    • -
    • default – default value to be returned
    • +
    • mask – 2d array with mask.
    • +
    • Imin – minimum of intensity above the background to keep the point
    • +
    • keep – maximum number of points to keep
    • +
    • kwarg – ignored parameters
    • +
    • dmin – minimum distance to another peak
    • +
    • seed – list of good guesses to start with
    Returns:

    attribute value decoded in python3 or default

    +
    Returns:

    list of peaks [y,x], [y,x], ...]

    @@ -5990,16 +8844,25 @@

    Navigation

    -
    -get_data(grp, class_type='NXdata')
    -

    return all dataset of the the NeXus class NXdata

    +
    +direction()
    +

    Perform and plot the two main directions of the peaks, considering their previously +calculated scale ,by calculating the Hessian at different sizes as the combination of +gaussians and their first and second derivatives

    +
    + +
    +
    +nearest_peak(p, refine=True, Imin=None)
    +

    Return the nearest peak from a position

    Parameters:
      -
    • grp – HDF5 group
    • -
    • class_type – name of the NeXus class
    • +
    • img – input image
    • +
    • cur_sigma – estimated smoothing of the input image. 0.25 correspond to no interaction between pixels.
    • +
    • init_sigma – start searching at this scale (sigma=0.5: 10% interaction with first neighbor)
    • +
    • dest_sigma – sigma at which the resolution is lowered (change of octave)
    • +
    • scale_per_octave – Number of scale to be performed per octave
    • +
    • mask – mask where pixel are not valid
    @@ -6008,57 +8871,108 @@

    Navigation

    -
    -get_entries()
    -

    retrieves all entry sorted the latest first.

    +
    +peaks_from_area(mask, keep=None, refine=True, Imin=None, dmin=0.0, **kwargs)
    +

    Return the list of peaks within an area

    Parameters:
      -
    • grp – HDF5 group
    • -
    • class_type – name of the NeXus class
    • +
    • p – input position (y,x) 2-tuple of float
    • +
    • refine – shall the position be refined on the raw data
    • +
    • Imin – minimum of intensity above the background
    - + + +
    Returns:list of HDF5 groups
    Parameters:
      +
    • mask – 2d array with mask.
    • +
    • refine – shall the position be refined on the raw data
    • +
    • Imin – minimum of intensity above the background
    • +
    • kwarg – ignored parameters
    • +
    +
    Returns:

    list of peaks [y,x], [y,x], ...]

    +
    -
    -get_entry(name)
    -

    Retrieves an entry from its name

    +
    +process(max_octave=None)
    +

    Perform the keypoint extraction for max_octave cycles or until all octaves have been processed. +:param max_octave: number of octave to process

    +
    + +
    +
    +refine_Hessian(kpx, kpy, kps)
    +

    Refine the keypoint location based on a 3 point derivative, and delete +non-coherent keypoints.

    - + - +
    Parameters:name – name of the entry to retrieve
    Parameters:
      +
    • kpx – x_pos of keypoint
    • +
    • kpy – y_pos of keypoint
    • +
    • kps – s_pos of keypoint
    • +
    +
    Returns:HDF5 group of NXclass == NXentry
    Returns:

    arrays of corrected coordinates of keypoints, values and +locations of keypoints

    +
    -
    -new_class(grp, name, class_type='NXcollection')
    -

    create a new sub-group with type class_type -:param grp: parent group -:param name: name of the sub-group -:param class_type: NeXus class name -:return: subgroup created

    +
    +refine_Hessian_SG(kpx, kpy, kps)
    +

    Savitzky Golay algorithm to check if a point is really the maximum +:param kpx: x_pos of keypoint +:param kpy: y_pos of keypoint +:param kps: s_pos of keypoint +:return array of corrected keypoints

    +
    + +
    +
    +refinement()
    +
    + +
    +
    +show_neighboor()
    +
    + +
    +
    +show_stats()
    +

    Shows a window with the repartition of keypoint in function of scale/intensity

    -
    -
    -new_detector(name='detector', entry='entry', subentry='pyFAI')
    -

    Create a new entry/pyFAI/Detector

    - +
    +
    +tresh = 0.6
    +
    + + + +
    +
    +pyFAI.blob_detection.image_test()
    +
    + +
    +
    +pyFAI.blob_detection.local_max(dogs, mask=None, n_5=True)
    +
    @@ -6066,198 +8980,254 @@

    Navigation

    Parameters:
      -
    • detector – name of the detector
    • -
    • entry – name of the entry
    • -
    • subentry – all pyFAI description of detectors should be in a pyFAI sub-entry
    • +
    • dogs – 3d array with (sigma,y,x) containing difference of gaussians
    • +
    • mask – mask out keypoint next to the mask (or inside the mask)
    • +
    • n_5 – look for a larger neighborhood
    +
    +
    +pyFAI.blob_detection.make_gaussian(im, sigma, xc, yc)
    +
    + +
    +
    +

    calibrant Module

    +

    Calibrant

    +

    A module containing classical calibrant and also tools to generate d-spacing.

    +

    Interesting formula: +http://geoweb3.princeton.edu/research/MineralPhy/xtalgeometry.pdf

    +
    +
    +class pyFAI.calibrant.Calibrant(filename=None, dSpacing=None, wavelength=None)
    +

    Bases: object

    +

    A calibrant is a reference compound where the d-spacing (interplanar distances) +are known. They are expressed in Angstrom (in the file)

    +
    +
    +__init__(filename=None, dSpacing=None, wavelength=None)
    +
    +
    -
    -new_entry(entry='entry', program_name='pyFAI', title='description of experiment', force_time=None)
    -

    Create a new entry

    +
    +append_2th(value)
    +
    + +
    +
    +append_dSpacing(value)
    +
    + +
    +
    +dSpacing
    +
    + +
    +
    +fake_calibration_image(ai, shape=None, Imax=1.0, U=0, V=0, W=0.0001)
    +

    Generates a fake calibration image from an azimuthal integrator

    Parameters:
      -
    • entry – name of the entry
    • -
    • program_name – value of the field as string
    • -
    • title – value of the field as string
    • +
    • ai – azimuthal integrator
    • +
    • Imax – maximum intensity of rings
    • +
    • V, W (U,) – width of the peak from Caglioti’s law (FWHM^2 = Utan(th)^2 + Vtan(th) + W)
    -

    @force_time: enforce the start_time (as string!) -:return: the corresponding HDF5 group

    -
    -new_instrument(entry='entry', instrument_name='id00')
    -

    Create an instrument in an entry or create both the entry and the instrument if

    -
    +
    +get_2th()
    +
    +
    +
    +get_2th_index(angle)
    +

    return the index in the 2theta angle index

    -
    -
    -class pyFAI.io.Writer(filename=None, extension=None)
    -

    Bases: object

    -

    Abstract class for writers.

    -
    -
    -CONFIG_ITEMS = ['filename', 'dirname', 'extension', 'subdir', 'hpath']
    +
    +
    +get_dSpacing()
    -
    -flush(*arg, **kwarg)
    -

    To be implemented

    -
    +
    +get_wavelength()
    +
    -
    -init(fai_cfg=None, lima_cfg=None)
    -

    Creates the directory that will host the output file(s) -:param fai_cfg: configuration for worker -:param lima_cfg: configuration for acquisition

    -
    +
    +load_file(filename=None)
    +
    -
    -setJsonConfig(json_config=None)
    -

    Sets the JSON configuration

    +
    +save_dSpacing(filename=None)
    +

    save the d-spacing to a file

    -
    -write(data)
    -

    To be implemented

    +
    +setWavelength_change2th(value=None)
    +
    + +
    +
    +setWavelength_changeDs(value=None)
    +

    This is probably not a good idea, but who knows !

    +
    +
    +set_dSpacing(lst)
    +
    + +
    +
    +set_wavelength(value=None)
    +
    + +
    +
    +wavelength
    +
    + -
    -
    -pyFAI.io.from_isotime(text, use_tz=False)
    -
    +
    +
    +class pyFAI.calibrant.Cell(a=1, b=1, c=1, alpha=90, beta=90, gamma=90, lattice='triclinic', lattice_type='P')
    +

    Bases: object

    +

    This is a cell object, able to calculate the volume and d-spacing according to formula from:

    +

    http://geoweb3.princeton.edu/research/MineralPhy/xtalgeometry.pdf

    +
    +
    +__init__(a=1, b=1, c=1, alpha=90, beta=90, gamma=90, lattice='triclinic', lattice_type='P')
    +

    Constructor of the Cell class:

    +

    Crystalographic units are Angstrom for distances and degrees for angles !

    +
    - +
    Parameters:text – string representing the time is iso format
    Parameters:
      +
    • a,b,c – unit cell length in Angstrom
    • +
    • beta, gamma (alpha,) – unit cell angle in degrees
    • +
    • lattice – “cubic”, “tetragonal”, “hexagonal”, “rhombohedral”, “orthorhombic”, “monoclinic”, “triclinic”
    • +
    • lattice_type – P, I, F, C or R
    • +
    +
    -
    -
    -pyFAI.io.get_isotime(forceTime=None)
    -
    +
    +
    +classmethod cubic(a, lattice_type='P')
    +

    Factory for cubic lattices

    +
    - + - + +
    Parameters:forceTime (float) – enforce a given time (current by default)
    Parameters:a – unit cell length
    Returns:the current time as an ISO8601 string
    +
    + +
    +
    +d(hkl)
    +

    Calculate the actual d-spacing for a 3-tuple of integer representing a +family of Miller plans

    + +++ + - +
    Parameters:hkl – 3-tuple of integers
    Return type:string
    Returns:the inter-planar distance
    -
    -
    -pyFAI.io.is_hdf5(filename)
    -

    Check if a file is actually a HDF5 file

    +
    +
    +d_spacing(dmin=1.0)
    +

    Calculate all d-spacing down to dmin

    +

    applies selection rules

    - + + +
    Parameters:filename – this file has better to exist
    Parameters:dmin – minimum value of spacing requested
    Returns:dict d-spacing as string, list of tuple with Miller indices +preceded with the numerical value
    -
    -
    -

    calibration Module

    -

    pyFAI-calib

    -

    A tool for determining the geometry of a detector using a reference sample.

    -
    -
    -class pyFAI.calibration.AbstractCalibration(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    -

    Bases: object

    -

    Everything that is common to Calibration and Recalibration

    -
    -
    -HELP = {'reset': 'Reset the geometry to the initial guess (rotation to zero, distance to 0.1m, poni at the center of the image)', 'delete': 'delete a group of points, provide the letter.', 'set': "set the value of a parameter to the given value, i.e 'set wavelength 0.1 nm', units are optional", 'chiplot': 'plot control point radial error as function of azimuthal angle, optional parameters: the rings for which this need to be plotted', 'help': "Try to get the help of a given action, like 'refine?'. Use done when finished. Most command are composed of 'action parameter value' like 'set wavelength 1 A'.", 'weight': 'toggle from weighted to unweighted mode...', 'get': 'print he value of a parameter', 'fix': "fixes the value of a parameter so that its value will not be optimized, i.e. 'fix wavelength'", 'validate2': 'measures the offset of the center as function of azimuthal angle by cross-correlation of 2 plots, 180 deg appart. Option: number of azimuthal sliced, default: 36', 'show': "Just print out the current parameter set. Optional parameters are units for length, rotation and wavelength, i.e. 'show mm deg A'", 'bound': "sets the upper and lower bound of a parameter: 'bound dist 0.1 0.2'", 'free': "frees the parameter so that the value can be optimized, i.e. 'free wavelength'", 'bounds': 'sets the upper and lower bound of all parameters', 'abort': 'quit immediately, discarding any unsaved changes', 'done': 'finishes the processing, performs an integration and quits', 'refine': 'performs a new cycle of refinement', 'integrate': 'perform the azimuthal integration and display results', 'validate': 'plot the offset between the calibrated image and the back-projected image', 'recalib': 'extract a new set of rings and re-perform the calibration. One can specify how many rings to extract and the algorithm to use (blob, massif, watershed) and the nb_pts_per_deg in azimuth', 'assign': 'Change the assignment of a group of points to a rings', 'define': 'Re-define the value for a constant internal parameter of the program like max_iter, nPt_1D, nPt_2D_azim, nPt_2D_rad, integrator_method, error_model. Warning: attribute change may be harmful !'}
    -
    - -
    -
    -PARAMETERS = ['dist', 'poni1', 'poni2', 'rot1', 'rot2', 'rot3', 'wavelength']
    -
    - -
    -
    -PTS_PER_DEG = 0.3
    -
    - -
    -
    -UNITS = {'poni1': 'meter', 'poni2': 'meter', 'rot1': 'radian', 'rot3': 'radian', 'rot2': 'radian', 'wavelength': 'meter', 'dist': 'meter'}
    -
    - -
    -
    -VALID_URL = ['', 'file', 'hdf5', 'nxs', 'h5']
    -
    - -
    -
    -analyse_options(options=None, args=None)
    -

    Analyzes options and arguments

    +
    +
    +classmethod diamond(a)
    +

    Factory for Diamond type FCC like Si and Ge

    - +
    Returns:option,arguments
    Parameters:a – unit cell length
    -
    -chiplot(rings=None)
    -

    plot delta_2theta/2theta = f(chi) and fit the curve.

    +
    +get_type()
    +
    + +
    +
    +classmethod hexagonal(a, c, lattice_type='P')
    +

    Factory for hexagonal lattices

    - +
    Parameters:rings – list of rings to consider
    Parameters:
      +
    • a – unit cell length
    • +
    • c – unit cell length
    • +
    +
    -
    -
    -configure_parser(version='calibration from pyFAI version 0.12.0: 06/06/2016', usage='pyFAI-calib [options] input_image.edf', description=None, epilog=None)
    -

    Common configuration for parsers

    -
    +
    +
    +lattices = ['cubic', 'tetragonal', 'hexagonal', 'rhombohedral', 'orthorhombic', 'monoclinic', 'triclinic']
    +
    -
    -
    -extract_cpt(method='massif', pts_per_deg=1.0)
    -

    Performs an automatic keypoint extraction: -Can be used in recalib or in calib after a first calibration has been performed.

    +
    +
    +classmethod monoclinic(a, b, c, beta, lattice_type='P')
    +

    Factory for hexagonal lattices

    @@ -6265,339 +9235,257 @@

    Navigation

    Parameters:
      -
    • method – method for keypoint extraction
    • -
    • pts_per_deg – number of control points per azimuthal degree (increase for better precision)
    • +
    • a – unit cell length
    • +
    • b – unit cell length
    • +
    • c – unit cell length
    • +
    • beta – unit cell angle
    -
    -
    -get_pixelSize(ans)
    -

    convert a comma separated sting into pixel size

    -
    - -
    -
    -postProcess()
    -

    Common part: shows the result of the azimuthal integration in 1D and 2D

    -
    - -
    -
    -preprocess()
    -

    Common part: -do dark, flat correction thresholding, ... -and read missing data from keyboard if needed

    -
    - -
    -
    -prompt()
    -

    prompt for commands to guide the calibration process

    +
    +
    +classmethod orthorhombic(a, b, c, lattice_type='P')
    +

    Factory for orthorhombic lattices

    - +
    Returns:True when the user is happy with what he has, False to request another refinement
    Parameters:
      +
    • a – unit cell length
    • +
    • b – unit cell length
    • +
    • c – unit cell length
    • +
    +
    -
    -
    -read_dSpacingFile(verbose=True)
    -

    Read the name of the calibrant / file with d-spacing

    -
    - -
    -
    -read_pixelsSize()
    -

    Read the pixel size from prompt if not available

    -
    - -
    -
    -read_wavelength()
    -

    Read the wavelength

    -
    - -
    -
    -refine()
    -

    Contains the common geometry refinement part

    -
    - -
    -
    -reset_geometry(how='center', refine=False)
    -

    Reset the geometry: no tilt in all cases

    +
    +
    +classmethod rhombohedral(a, alpha, lattice_type='P')
    +

    Factory for hexagonal lattices

    - +
    Parameters:how – multiple options -* center: set the PONI at the center of the detector -* ring: center the poni at the middle of the inner-most ring -//* best: try both option and keeps the best
    Parameters:
      +
    • a – unit cell length
    • +
    • alpha – unit cell angle
    • +
    +
    -

    //:param refine: launch the refinement

    -
    - -
    -
    -set_data(data)
    -

    call-back function for the peak-picker

    -
    -validate_calibration()
    -

    Validate the calibration and calculate the offset in the diffraction image

    -
    - -
    -
    -validate_center(slices=36)
    -

    Validate the position of the center by cross-correlating two spectra 180 deg appart. -Output values are in micron.

    -

    Designed for orthogonal setup with centered beam...

    +
    +save(name, long_name=None, doi=None, dmin=1.0, dest_dir=None)
    +

    Save informations about the cell in a d-spacing file, usable as Calibrant

    - +
    Parameters:slices – number of slices on which perform
    Parameters:
      +
    • name – name of the calibrant
    • +
    • doi – reference of the publication used to parametrize the cell
    • +
    • dmin – minimal d-spacing
    • +
    • dest_dir – name of the directory where to save the result
    • +
    +
    -
    -win_error = 'We are under windows with a 32 bit version of python, matplotlib is not able to display too many images without crashing, this is why the window showing the diffraction image is closed'
    -
    - +
    +selection_rules = None
    +

    contains a list of functions returning True(allowed)/False(forbiden)/None(unknown)

    -
    -
    -class pyFAI.calibration.Calibration(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, gaussianWidth=None, wavelength=None, calibrant=None)
    -

    Bases: pyFAI.calibration.AbstractCalibration

    -

    class doing the calibration of frames

    -
    -gui_peakPicker()
    +
    +set_type(lattice_type)
    -
    -
    -initgeoRef()
    -

    Tries to initialise the GeometryRefinement (dist, poni, rot) -Returns a dictionary of key value pairs

    -
    - -
    -
    -parse()
    -

    parse options from command line

    -
    - -
    -
    -preprocess()
    -

    do dark, flat correction thresholding, ...

    -
    - -
    -
    -refine()
    -

    Contains the geometry refinement part specific to Calibration -Sets up the initial guess when starting pyFAI-calib

    -
    - +
    +
    +classmethod tetragonal(a, c, lattice_type='P')
    +

    Factory for tetragonal lattices

    + +++ + + + +
    Parameters:
      +
    • a – unit cell length
    • +
    • c – unit cell length
    • +
    +
    -
    -
    -class pyFAI.calibration.CheckCalib(poni=None, img=None, unit='2th_deg')
    -

    Bases: object

    -
    -
    -get_1dsize()
    -
    - -
    -
    -integrate()
    -
    - -
    -
    -parse()
    +
    +
    +type
    -
    -
    -rebuild()
    -

    Rebuild the diffraction image and measures the offset with the reference -:return: offset

    -
    - -
    -
    -show()
    -

    Show the image with the the errors

    -
    -
    -
    -size1d
    +
    +types = {'I': 'Body centered', 'P': 'Primitive', 'C': 'Side centered', 'R': 'Rhombohedral', 'F': 'Face centered'}
    +
    + +
    +
    +volume
    -
    -
    -smooth_mask(hwhm=5)
    -

    smooth out around the mask to avoid aligning on the mask

    -
    - -
    - -
    -
    -class pyFAI.calibration.MultiCalib(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None)
    -

    Bases: object

    -
    -
    -get_pixelSize(ans)
    -

    convert a comma separated sting into pixel size

    +
    +
    +class pyFAI.calibrant.calibrant_factory(basedir=None)
    +

    Bases: object

    +

    Behaves like a dict but is actually a factory:

    +

    Each time one retrieves an object it is a new geniune new calibrant (unmodified)

    -
    -parse(exe=None, description=None, epilog=None)
    -

    parse options from command line -:param exe: name of the program (MX-calibrate) -:param description: Description of the program

    +
    +__init__(basedir=None)
    +

    Constructor

    + +++ + + + +
    Parameters:basedir – directory name where to search for the calibrants
    -
    -process()
    +
    +get(what, notfound=None)
    -
    -read_dSpacingFile()
    -

    Read the name of the calibrant or the file with d-spacing

    -
    +
    +has_key(k)
    +
    -
    -read_pixelsSize()
    -

    Read the pixel size from prompt if not available

    -
    +
    +items()
    +
    -
    -read_wavelength()
    -

    Read the wavelength

    -
    +
    +keys()
    +
    -
    -regression()
    +
    +values()
    +
    +
    +

    distortion Module

    -
    -class pyFAI.calibration.Recalibration(dataFiles=None, darkFiles=None, flatFiles=None, pixelSize=None, splineFile=None, detector=None, wavelength=None, calibrant=None)
    -

    Bases: pyFAI.calibration.AbstractCalibration

    -

    class doing the re-calibration of frames

    +
    +class pyFAI.distortion.Distortion(detector='detector', shape=None, resize=False, empty=0, mask=None, method='CSR', device=None, workgroup=8)
    +

    Bases: object

    +

    This class applies a distortion correction on an image.

    +

    New version compatible both with CSR and LUT...

    -
    -parse()
    -

    parse options from command line

    +
    +__init__(detector='detector', shape=None, resize=False, empty=0, mask=None, method='CSR', device=None, workgroup=8)
    +
    +++ + + + +
    Parameters:
      +
    • detector – detector instance or detector name
    • +
    • shape – shape of the output image
    • +
    • resize – allow the output shape to be different from the input shape
    • +
    • empty – value to be given for empty bins
    • +
    • method – “lut” or “csr”, the former is faster
    • +
    • device – Name of the device: None for OpenMP, “cpu” or “gpu” or the id of the OpenCL device a 2-tuple of integer
    • +
    • workgroup – workgroup size for CSR on OpenCL
    • +
    +
    -
    -preprocess()
    -

    do dark, flat correction thresholding, ...

    +
    +calc_LUT(use_common=True)
    +

    Calculate the Look-up table

    + +++ + + + +
    Returns:look up table either in CSR or LUT format depending on serl.method
    -
    -read_dSpacingFile()
    -

    Read the name of the file with d-spacing

    +
    +calc_init()
    +

    Initialize all arrays

    -
    -refine()
    -

    Contains the geometry refinement part specific to Recalibration

    -
    - -
    - -
    -
    -pyFAI.calibration.calib(img, calibrant, detector, basename='from_ipython', reconstruct=False, dist=0.1, gaussian=None, interactive=True)
    -

    Procedural interfact for calibration

    +
    +calc_pos(use_cython=True)
    +

    Calculate the pixel boundary position on the regular grid

    - + - +
    Parameters:
      -
    • img – 2d array representing the calibration image
    • -
    • calibrant – Instance of Calibrant, set-up with wavelength
    • -
    • detector – Detector instance containing the mask
    • -
    • basename – output file base
    • -
    • recontruct – perform image reconstruction of masked pixel ?
    • -
    • dist – initial distance
    • -
    • gaussian – width of the gaussian used for difference of gaussian in the “massif” peak-picking algorithm
    • -
    • interactive – set to False for testing
    • -
    -
    Returns:pixel corner positions (in pixel units) on the regular grid
    Returns:

    AzimuthalIntegrator instance

    -
    Return type:ndarray of shape (nrow, ncol, 4, 2)
    -
    -
    -pyFAI.calibration.get_detector(detector, datafiles=None)
    -

    Detector factory taking into account the binning knowing the datafiles -:param detector: string or detector or other junk -:param datafiles: can be a list of images to be opened and their shape used. -:return pyFAI.detector.Detector instance

    +
    +
    +calc_size(use_cython=True)
    +

    Calculate the number of pixels falling into every single bin and

    + +++ + + + +
    Returns:max of pixel falling into a single bin
    +

    Considering the “half-CCD” spline from ID11 which describes a (1025,2048) detector, +the physical location of pixels should go from: +[-17.48634 : 1027.0543, -22.768829 : 2028.3689] +We chose to discard pixels falling outside the [0:1025,0:2048] range with a lose of intensity

    -
    -
    -

    peak_picker Module

    -
    -
    -class pyFAI.peak_picker.ControlPoints(filename=None, calibrant=None, wavelength=None)
    -

    Bases: object

    -

    This class contains a set of control points with (optionally) their ring number hence d-spacing and diffraction 2Theta angle ...

    -
    -append(points, ring=None, annotate=None, plot=None)
    -
    +
    +correct(image, dummy=None, delta_dummy=None)
    +

    Correct an image based on the look-up table calculated ...

    +
    - @@ -6605,15 +9493,18 @@

    Navigation

    -
    -append_2theta_deg(points, angle=None, ring=None)
    -
    Parameters:
      -
    • point – list of points
    • -
    • ring – ring number
    • -
    • annotate – matplotlib.annotate reference
    • -
    • plot – matplotlib.plot reference
    • +
    • image – 2D-array with the image
    • +
    • dummy – value suggested for bad pixels
    • +
    • delta_dummy – precision of the dummy value
    Returns:

    PointGroup instance

    +
    Returns:

    corrected 2D image

    +
    +reset(method=None, device=None, workgroup=None, prepare=True)
    +

    reset the distortion correction and re-calculate the look-up table

    +
    @@ -6621,550 +9512,516 @@

    Navigation

    Parameters:
      -
    • point – list of points
    • -
    • angle – 2-theta angle in degrees
    • +
    • method – can be “lut” or “csr”, “lut” looks faster
    • +
    • device – can be None, “cpu” or “gpu” or the id as a 2-tuple of integer
    • +
    • worgroup – enforce the workgroup size for CSR.
    • +
    • prepare – set to false to only reset and not re-initialize
    -
    -
    -check()
    -

    check internal consistency of the class

    -
    -
    -
    -dSpacing
    -
    +
    +shape_out
    +

    Calculate/cache the output shape

    +

    :return output shape

    +
    -
    -get(ring=None)
    -

    retireves the last set of points for a given ring (by default the last)

    +
    +uncorrect(image, use_cython=False)
    +

    Take an image which has been corrected and transform it into it’s raw (with loss of information)

    - + + +
    Parameters:ring – index of ring to search for
    Parameters:image – 2D-array with the image
    Returns:uncorrected 2D image
    +

    Nota: to retrieve the input mask on can do:

    +
    >>> msk =  dis.uncorrect(numpy.ones(dis._shape_out)) <= 0
    +
    +
    -
    -
    -getList()
    -

    Retrieve the list of control points suitable for geometry refinement with ring number

    +
    +
    +class pyFAI.distortion.Quad(buffer)
    +

    Bases: object

    +

    Quad modelisation.

    +Modelization of the quad
    +
    +__init__(buffer)
    +
    +
    -
    -getList2theta()
    -

    Retrieve the list of control points suitable for geometry refinement

    -
    +
    +calc_area()
    +
    -
    -getListRing()
    -

    Retrieve the list of control points suitable for geometry refinement with ring number

    -
    +
    +calc_area_AB(I1, I2)
    +
    -
    -getWeightedList(image)
    -

    Retrieve the list of control points suitable for geometry refinement with ring number and intensities -:param image: -:return: a (x,4) array with pos0, pos1, ring nr and intensity

    -

    #TODO: refine the value of the intensity using 2nd order polynomia

    -
    +
    +calc_area_BC(J1, J2)
    +
    -
    -get_dSpacing()
    +
    +calc_area_CD(K1, K2)
    -
    -get_wavelength()
    +
    +calc_area_DA(L1, L2)
    +
    + +
    +
    +calc_area_old()
    +
    + +
    +
    +calc_area_vectorial()
    +
    + +
    +
    +get_box(i, j)
    -
    -load(filename)
    -

    load all control points from a file

    -
    - -
    -
    -pop(ring=None, lbl=None)
    -

    Remove the set of points, either from its code or from a given ring (by default the last)

    - --- - - - -
    Parameters:
      -
    • ring – index of ring of which remove the last group
    • -
    • lbl – code of the ring to remove
    • -
    -
    -
    +
    +get_box_size0()
    +
    -
    -readRingNrFromKeyboard()
    -

    Ask the ring number values for the given points

    -
    +
    +get_box_size1()
    +
    -
    -reset()
    -

    remove all stored values and resets them to default

    -
    +
    +get_idx(i, j)
    +
    -
    -save(filename)
    -

    Save a set of control points to a file -:param filename: name of the file -:return: None

    -
    +
    +get_offset0()
    +
    -
    -setWavelength_change2th(value=None)
    +
    +get_offset1()
    -
    -setWavelength_changeDs(value=None)
    -

    This is probably not a good idea, but who knows !

    -
    +
    +init_slope()
    +
    -
    -set_dSpacing(lst)
    +
    +integrateAB(start, stop, calc_area)
    -
    -set_wavelength(value=None)
    +
    +populate_box()
    -
    -
    -wavelength
    +
    +
    +reinit(A0, A1, B0, B1, C0, C1, D0, D1)
    +
    +
    +pyFAI.distortion.test()
    +
    + +
    +
    +

    worker Module

    +

    This module contains the Worker class:

    +

    A tool able to perform azimuthal integration with: +additional saving capabilities like

    +
      +
    • save as 2/3D structure in a HDF5 File
    • +
    • read from HDF5 files
    • +
    +

    Aims at being integrated into a plugin like LImA or as model for the GUI

    +

    The configuration of this class is mainly done via a dictionary transmitted as a JSON string: +Here are the valid keys:

    +
      +
    • “dist”
    • +
    • “poni1”
    • +
    • “poni2”
    • +
    • “rot1”
    • +
    • “rot3”
    • +
    • “rot2”
    • +
    • “pixel1”
    • +
    • “pixel2”
    • +
    • “splineFile”
    • +
    • “wavelength”
    • +
    • “poni” #path of the file
    • +
    • “chi_discontinuity_at_0”
    • +
    • “do_mask”
    • +
    • “do_dark”
    • +
    • “do_azimuthal_range”
    • +
    • “do_flat”
    • +
    • “do_2D”
    • +
    • “azimuth_range_min”
    • +
    • “azimuth_range_max”
    • +
    • “polarization_factor”
    • +
    • “nbpt_rad”
    • +
    • “do_solid_angle”
    • +
    • “do_radial_range”
    • +
    • “do_poisson”
    • +
    • “delta_dummy”
    • +
    • “nbpt_azim”
    • +
    • “flat_field”
    • +
    • “radial_range_min”
    • +
    • “dark_current”
    • +
    • “do_polarization”
    • +
    • “mask_file”
    • +
    • “detector”
    • +
    • “unit”
    • +
    • “radial_range_max”
    • +
    • “val_dummy”
    • +
    • “do_dummy”
    • +
    • “method”
    • +
    -
    -class pyFAI.peak_picker.PeakPicker(data, reconst=False, mask=None, pointfile=None, calibrant=None, wavelength=None, detector=None, method='massif')
    +
    +class pyFAI.worker.DistortionWorker(detector=None, dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)

    Bases: object

    -

    This class is in charge of peak picking, i.e. find bragg spots in the image -Two methods can be used : massif or blob

    -
    -
    -VALID_METHODS = ['massif', 'blob', 'watershed']
    -
    +

    Simple worker doing dark, flat, solid angle and polarization correction

    +
    +
    +__init__(detector=None, dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)
    +

    Constructor of the worker +:param dark: array +:param flat: array +:param solidangle: solid-angle array +:param polarization: numpy array with 2D polarization corrections +:param device: Used to influance OpenCL behavour: can be “cpu”, “GPU”, “Acc” or even an OpenCL context

    +
    -
    -closeGUI()
    -
    +
    +process(data, normalization_factor=1.0)
    +

    Process the data and apply a normalization factor +:param data: input data +:param normalization: normalization factor +:return processed data

    +
    + + +
    +
    +class pyFAI.worker.PixelwiseWorker(dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)
    +

    Bases: object

    +

    Simple worker doing dark, flat, solid angle and polarization correction

    -
    -contour(data, cmap='autumn', linewidths=2, linestyles='dashed')
    -

    Overlay a contour-plot

    +
    +__init__(dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)
    +

    Constructor of the worker

    - +
    Parameters:data – 2darray with the 2theta values in radians...
    Parameters:
      +
    • dark – array
    • +
    • flat – array
    • +
    • solidangle – solid-angle array
    • +
    • polarization – numpy array with 2D polarization corrections
    • +
    • device – Used to influance OpenCL behavour: can be “cpu”, “GPU”, “Acc” or even an OpenCL context
    • +
    +
    -
    -display_points(minIndex=0, reset=False)
    -

    display all points and their ring annotations -:param minIndex: ring index to start with -:param reset: remove all point before re-displaying them

    +
    +process(data, normalization_factor=None)
    +

    Process the data and apply a normalization factor +:param data: input data +:param normalization: normalization factor +:return processed data

    -
    -
    -finish(filename=None, callback=None)
    -

    Ask the ring number for the given points

    - --- - - - -
    Parameters:filename – file with the point coordinates saved
    +
    +
    +class pyFAI.worker.Worker(azimuthalIntegrator=None, shapeIn=(2048, 2048), shapeOut=(360, 500), unit='r_mm', dummy=None, delta_dummy=None, azimuthalIntgrator=None)
    +

    Bases: object

    -
    -gui(log=False, maximize=False, pick=True)
    +
    +__init__(azimuthalIntegrator=None, shapeIn=(2048, 2048), shapeOut=(360, 500), unit='r_mm', dummy=None, delta_dummy=None, azimuthalIntgrator=None)
    - +
    Parameters:log – show z in log scale
    Parameters:
      +
    • AzimuthalIntegrator (azimuthalIntgrator) – pyFAI.AzimuthalIntegrator instance
    • +
    • AzimuthalIntegrator – pyFAI.AzimuthalIntegrator instance (deprecated)
    • +
    • shapeIn – image size in input
    • +
    • shapeOut – Integrated size: can be (1,2000) for 1D integration
    • +
    • unit – can be “2th_deg, r_mm or q_nm^-1 ...
    • +
    +
    -
    -
    -help = ['Please select rings on the diffraction image. In parenthesis, some modified shortcuts for single button mouse (Apple):', ' * Right-click (click+n): try an auto find for a ring', ' * Right-click + Ctrl (click+b): create new group with one point', ' * Right-click + Shift (click+v): add one point to current group', ' * Right-click + m (click+m): find more points for current group', ' * Center-click or (click+d): erase current group', ' * Center-click + 1 or (click+1): erase closest point from current group']
    -
    -
    -
    -init(method, sync=True)
    -

    Unified initializer

    -
    +
    +do_2D()
    +
    -
    -
    -load(filename)
    -

    load a filename and plot data on the screen (if GUI)

    -
    +
    +
    +error_model
    +
    -
    -massif_contour(data)
    -

    Overlays a mask over a diffraction image

    - --- - - - -
    Parameters:data – mask to be overlaid
    +
    +get_config()
    +

    return configuration as a dictionary

    -
    -on_minus_pts_clicked(*args)
    -

    callback function

    -
    +
    +get_error_model()
    +
    -
    -on_option_clicked(*args)
    -

    callback function

    +
    +get_json_config()
    +

    return configuration as a JSON string

    -
    -on_plus_pts_clicked(*args)
    -

    callback function

    -
    +
    +get_normalization_factor()
    +
    -
    -on_refine_clicked(*args)
    -

    callback function

    -
    +
    +get_unit()
    +
    -
    -
    -onclick(event)
    -

    Called when a mouse is clicked

    -
    +
    +
    +normalization_factor
    +
    -
    -peaks_from_area(**kwargs)
    -

    Return the list of peaks within an area

    +
    +process(data, normalization_factor=1.0, writer=None)
    +

    Process a frame +#TODO: +dark, flat, sa are missing

    - - -
    Parameters:
      -
    • mask – 2d array with mask.
    • -
    • Imin – minimum of intensity above the background to keep the point
    • -
    • keep – maximum number of points to keep
    • -
    • method – enforce the use of detection using “massif” or “blob” or “watershed”
    • -
    • ring – ring number to which assign the points
    • -
    • dmin – minimum distance between two peaks (in pixels)
    • -
    • seed – good starting points.
    • +
    Parameters:
      +
    • data – numpy array containing the input image
    • +
    • writer – An open writer in which ‘write’ will be called with the result of the integration
    Returns:

    list of peaks [y,x], [y,x], ...]

    -
    -
    -remove_grp(lbl)
    -

    remove a group of points

    +
    +reconfig(shape=(2048, 2048), sync=False)
    +

    This is just to force the integrator to initialize with a given input image shape

    - +
    Parameters:lbl – label of the group of points
    Parameters:
      +
    • shape – shape of the input image
    • +
    • sync – return only when synchronized
    • +
    +
    -
    -reset()
    -

    Reset control point and graph (if needed)

    +
    +reset()
    +

    this is just to force the integrator to initialize

    -
    -sync_init()
    +
    +save_config(filename=None)
    - - -
    -
    -class pyFAI.peak_picker.PointGroup(points=None, ring=None, annotate=None, plot=None, force_label=None)
    -

    Bases: object

    -

    Class contains a group of points ... -They all belong to the same Debye-Scherrer ring

    -
    -
    -code
    -

    Numerical value for the label: mainly for sorting

    -
    - -
    -
    -classmethod get_label()
    -

    return the next label

    -
    -
    -
    -get_ring()
    -
    - -
    -
    -label
    -
    - -
    -
    -last_label = 0
    -
    - -
    -
    -classmethod reset_label()
    -

    reset intenal counter

    -
    - -
    -
    -ring
    +
    +setDarkcurrentFile(imagefile)
    -
    -
    -classmethod set_label(label)
    -

    update the internal counter if needed

    +
    +
    +setExtension(ext)
    +

    enforce the extension of the processed data file written

    -
    -set_ring(value)
    +
    +setFlatfieldFile(imagefile)
    -
    - -
    -
    -

    massif Module

    -
    -
    -class pyFAI.massif.Massif(data=None)
    -

    Bases: object

    -

    A massif is defined as an area around a peak, it is used to find neighboring peaks

    -
    -
    -TARGET_SIZE = 1024
    +
    +
    +setJsonConfig(jsonconfig)
    -
    -calculate_massif(x)
    -

    defines a map of the massif around x and returns the mask

    +
    +setSubdir(path)
    +

    Set the relative or absolute path for processed data

    -
    -delValleySize()
    +
    +set_error_model(value)
    -
    -find_peaks(x, nmax=200, annotate=None, massif_contour=None, stdout=<open file '<stdout>', mode 'w' at 0x7fceb9e2e150>)
    -

    All in one function that finds a maximum from the given seed (x) -then calculates the region extension and extract position of the neighboring peaks. -:param x: seed for the calculation, input coordinates -:param nmax: maximum number of peak per region -:param annotate: call back method taking number of points + coordinate as input. -:param massif_contour: callback to show the contour of a massif with the given index. -:param stdout: this is the file where output is written by default. -:return: list of peaks

    -
    +
    +set_normalization_factor(value)
    +
    -
    -getBinnedData()
    -

    :return binned data

    -
    +
    +set_unit(value)
    +
    + +
    +
    +unit
    +
    -
    -getBluredData()
    -
    +
    +warmup(sync=False)
    +

    Process a dummy image to ensure everything is initialized

    +
    - +
    Returns:a blurred image
    Parameters:sync – wait for processing to be finished
    -
    -
    -getLabeledMassif(pattern=None)
    -
    --- - - - -
    Returns:an image composed of int with a different value for each massif
    -
    -
    -getMedianData()
    -
    +
    +
    +pyFAI.worker.make_ai(config)
    +

    Create an Azimuthal integrator from the configuration +stand alone function !

    +
    - + + +
    Returns:a spacial median filtered image
    Parameters:config – dict with all parameters
    Returns:configured (but uninitialized) AzimuthalIntgrator
    +
    +
    +

    units Module

    +

    Manages the different units

    +

    Nota for developers: this module is used a singleton to store all units in a +unique manner. This explains the number of top-level variables on the one +hand and their CAPITALIZATION on the other.

    +
    +
    +class pyFAI.units.Unit(name, scale=1, label=None, equation=None, center=None, corner=None, delta=None)
    +

    Bases: object

    +

    Represents a unit.

    +

    It has at least a name and a scale (in SI-unit)

    -
    -getValleySize()
    -
    - -
    -
    -initValleySize()
    -
    - -
    -
    -nearest_peak(x)
    -
    +
    +__init__(name, scale=1, label=None, equation=None, center=None, corner=None, delta=None)
    +

    Constructor of a unit.

    +
    - +
    Parameters:x – coordinates of the peak
    Parameters:
      +
    • name ((str)) – name of the unit
    • +
    • scale ((float)) – scale of th unit to go to SI
    • +
    • label ((string)) – label for nice representation in matplotlib, +can use latex representation
    • +
    • equation ((funct)) – equation to calculate the value from coordinates +(x,y,z) in detector space. +Parameters of the function are x, y, z, lambda
    • +
    • center ((str)) – name of the fast-path function
    • +
    +
    -

    :returns the coordinates of the nearest peak

    -
    -peaks_from_area(mask, Imin=None, keep=1000, dmin=0.0, seed=None, **kwarg)
    -

    Return the list of peaks within an area

    +
    +get(key)
    +

    Mimic the dictionary interface

    - + - +
    Parameters:
      -
    • mask – 2d array with mask.
    • -
    • Imin – minimum of intensity above the background to keep the point
    • -
    • keep – maximum number of points to keep
    • -
    • kwarg – ignored parameters
    • -
    • dmin – minimum distance to another peak
    • -
    • seed – list of good guesses to start with
    • -
    -
    Parameters:key ((str)) – key wanted
    Returns:

    list of peaks [y,x], [y,x], ...]

    -
    Returns:self.key
    -
    -
    -setValleySize(size)
    -
    - -
    -
    -valley_size
    -

    Defines the minimum distance between two massifs

    -
    - -
    - -
    -
    -

    blob_detection Module

    -
    -
    -class pyFAI.blob_detection.BlobDetection(img, cur_sigma=0.25, init_sigma=0.5, dest_sigma=1, scale_per_octave=2, mask=None)
    -

    Bases: object

    -

    Performs a blob detection: -http://en.wikipedia.org/wiki/Blob_detection -using a Difference of Gaussian + Pyramid of Gaussians

    -
    -
    -direction()
    -

    Perform and plot the two main directions of the peaks, considering their previously -calculated scale ,by calculating the Hessian at different sizes as the combination of -gaussians and their first and second derivatives

    -
    -
    -nearest_peak(p, refine=True, Imin=None)
    -

    Return the nearest peak from a position

    +
    +
    +pyFAI.units.eq_2th(x, y, z, wavelength=None)
    +

    Calculates the 2theta aperture of the cone

    @@ -7172,331 +10029,296 @@

    Navigation

    Parameters:
      -
    • p – input position (y,x) 2-tuple of float
    • -
    • refine – shall the position be refined on the raw data
    • -
    • Imin – minimum of intensity above the background
    • +
    • x – horizontal position, towards the center of the ring, from sample position
    • +
    • y – Vertical position, to the roof, from sample position
    • +
    • z – distance from sample along the beam
    • +
    • wavelength – in meter
    -
    -
    -peaks_from_area(mask, keep=None, refine=True, Imin=None, dmin=0.0, **kwargs)
    -

    Return the list of peaks within an area

    +
    +
    +pyFAI.units.eq_q(x, y, z, wavelength)
    +

    Calculates the modulus of the scattering vector

    - - -
    Parameters:
      -
    • mask – 2d array with mask.
    • -
    • refine – shall the position be refined on the raw data
    • -
    • Imin – minimum of intensity above the background
    • -
    • kwarg – ignored parameters
    • +
    Parameters:
      +
    • x – horizontal position, towards the center of the ring, from sample position
    • +
    • y – Vertical position, to the roof, from sample position
    • +
    • z – distance from sample along the beam
    • +
    • wavelength – in meter
    Returns:

    list of peaks [y,x], [y,x], ...]

    -
    -
    -
    -process(max_octave=None)
    -

    Perform the keypoint extraction for max_octave cycles or until all octaves have been processed. -:param max_octave: number of octave to process

    -
    - -
    -
    -refine_Hessian(kpx, kpy, kps)
    -

    Refine the keypoint location based on a 3 point derivative, and delete uncoherent keypoints

    +
    +
    +pyFAI.units.eq_r(x, y, z=None, wavelength=None)
    +

    Calculates the radius

    Parameters:
      -
    • kpx – x_pos of keypoint
    • -
    • kpy – y_pos of keypoint
    • -
    • kps – s_pos of keypoint
    • +
    • x – horizontal position, towards the center of the ring, from sample position
    • +
    • y – Vertical position, to the roof, from sample position
    • +
    • z – distance from sample along the beam
    • +
    • wavelength – in meter
    -

    :return arrays of corrected coordinates of keypoints, values and locations of keypoints

    -
    - -
    -
    -refine_Hessian_SG(kpx, kpy, kps)
    -

    Savitzky Golay algorithm to check if a point is really the maximum -:param kpx: x_pos of keypoint -:param kpy: y_pos of keypoint -:param kps: s_pos of keypoint -:return array of corrected keypoints

    -
    -
    -refinement()
    +
    +
    +pyFAI.units.register_radial_unit(name, scale=1, label=None, equation=None, center=None, corner=None, delta=None)
    -
    -
    -show_neighboor()
    +
    +
    +pyFAI.units.to_unit(obj, type_=None)
    +
    +
    +

    utils Module

    +

    Utilities, mainly for image treatment

    +
    +
    +class pyFAI.utils.FixedParameters
    +

    Bases: set

    +

    Like a set, made for FixedParameters in geometry refinement

    -
    -show_stats()
    -

    Shows a window with the repartition of keypoint in function of scale/intensity

    +
    +add_or_discard(key, value=True)
    +

    Add a value to a set if value, else discard it +:param key: element to added or discared from set +:type value: boolean. If None do nothing ! +:return: None

    -
    -
    -tresh = 0.6
    -
    -
    -
    -pyFAI.blob_detection.image_test()
    -
    - -
    -
    -pyFAI.blob_detection.local_max(dogs, mask=None, n_5=True)
    +
    +pyFAI.utils.binning(input_img, binsize, norm=True)
    - + + +
    Parameters:dogs – 3d array with (sigma,y,x) containing difference of gaussians
    Parameters:
      +
    • input_img – input ndarray
    • +
    • binsize – int or 2-tuple representing the size of the binning
    • +
    • norm – if False, do average instead of sum
    • +
    +
    Returns:

    binned input ndarray

    +
    -

    @parm mask: mask out keypoint next to the mask (or inside the mask) -:param n_5: look for a larger neighborhood

    -
    -pyFAI.blob_detection.make_gaussian(im, sigma, xc, yc)
    -
    - -
    -
    -

    calibrant Module

    -

    Calibrant

    -

    A module containing classical calibrant and also tools to generate d-spacing.

    -

    Interesting formula: -http://geoweb3.princeton.edu/research/MineralPhy/xtalgeometry.pdf

    -
    -
    -class pyFAI.calibrant.Calibrant(filename=None, dSpacing=None, wavelength=None)
    -

    Bases: object

    -

    A calibrant is a reference compound where the d-spacing (interplanar distances) -are known. They are expressed in Angstrom (in the file)

    -
    -
    -append_2th(value)
    -
    - -
    -
    -append_dSpacing(value)
    -
    +
    +pyFAI.utils.calc_checksum(ary, safe=True)
    +

    Calculate the checksum by default (or returns its buffer location if unsafe)

    +
    -
    -
    -dSpacing
    -
    +
    +
    +pyFAI.utils.center_of_mass(img)
    +

    Calculate the center of mass of of the array. +Like scipy.ndimage.measurements.center_of_mass +:param img: 2-D array +:return: 2-tuple of float with the center of mass

    +
    -
    -
    -fake_calibration_image(ai, shape=None, Imax=1.0, U=0, V=0, W=0.0001)
    -

    Generates a fake calibration image from an azimuthal integrator

    - +
    +
    +pyFAI.utils.concatenate_cl_kernel(filenames)
    +
    - +
    Parameters:
      -
    • ai – azimuthal integrator
    • -
    • Imax – maximum intensity of rings
    • -
    • V, W (U,) – width of the peak from Caglioti’s law (FWHM^2 = Utan(th)^2 + Vtan(th) + W)
    • -
    -
    Parameters:filenames (list of str which can be filename of kernel as a string.) – filenames containing the kernels
    +

    this method concatenates all the kernel from the list

    -
    -
    -get_2th()
    -
    - -
    -
    -get_2th_index(angle)
    -

    return the index in the 2theta angle index

    -
    - -
    -
    -get_dSpacing()
    -
    - -
    -
    -get_wavelength()
    -
    - -
    -
    -load_file(filename=None)
    -
    - -
    -
    -save_dSpacing(filename=None)
    -

    save the d-spacing to a file

    +
    +
    +pyFAI.utils.convert_CamelCase(name)
    +

    convert a function name in CamelCase into camel_case

    -
    -
    -setWavelength_change2th(value=None)
    -
    - -
    -
    -setWavelength_changeDs(value=None)
    -

    This is probably not a good idea, but who knows !

    +
    +
    +pyFAI.utils.deg2rad(dd)
    +

    Convert degrees to radian in the range -pi->pi

    + +++ + + + +
    Parameters:dd – angle in degrees
    +

    Nota: depending on the platform it could be 0<2pi +A branch is cheaper than a trigo operation

    -
    -
    -set_dSpacing(lst)
    -
    - -
    -
    -set_wavelength(value=None)
    -
    - -
    -
    -wavelength
    -
    - +
    +
    +pyFAI.utils.dog(s1, s2, shape=None)
    +

    2D difference of gaussian +typically 1 to 10 parameters

    -
    -
    -class pyFAI.calibrant.Cell(a=1, b=1, c=1, alpha=90, beta=90, gamma=90, lattice='triclinic', lattice_type='P')
    -

    Bases: object

    -

    This is a cell object, able to calculate the volume and d-spacing according to formula from:

    -

    http://geoweb3.princeton.edu/research/MineralPhy/xtalgeometry.pdf

    -
    -
    -classmethod cubic(a, lattice_type='P')
    -

    Factory for cubic lattices

    +
    +
    +pyFAI.utils.dog_filter(input_img, sigma1, sigma2, mode='reflect', cval=0.0)
    +

    2-dimensional Difference of Gaussian filter implemented with FFT

    - +
    Parameters:a – unit cell length
    Parameters:
      +
    • input_img (array-like) – input_img array to filter
    • +
    • sigma (scalar or sequence of scalars) – standard deviation for Gaussian kernel. +The standard deviations of the Gaussian filter are given for each axis as a sequence, +or as a single number, in which case it is equal for all axes.
    • +
    • mode – {‘reflect’,’constant’,’nearest’,’mirror’, ‘wrap’}, optional +The mode parameter determines how the array borders are +handled, where cval is the value when mode is equal to +‘constant’. Default is ‘reflect’
    • +
    • cval – scalar, optional +Value to fill past edges of input if mode is ‘constant’. Default is 0.0
    • +
    +
    -
    -
    -d(hkl)
    -

    Calculate the actual d-spacing for a 3-tuple of integer representing a -family of Miller plans

    +
    +
    +pyFAI.utils.expand(input_img, sigma, mode='constant', cval=0.0)
    +

    Expand array a with its reflection on boundaries

    - - - - + +
    Parameters:hkl – 3-tuple of integers
    Returns:the inter-planar distance
    Parameters:
      +
    • a – 2D array
    • +
    • sigma – float or 2-tuple of floats.
    • +
    • mode – “constant”, “nearest”, “reflect” or “mirror”
    • +
    • cval – filling value used for constant, 0.0 by default
    • +
    +
    +

    Nota: sigma is the half-width of the kernel. For gaussian convolution it is adviced that it is 4*sigma_of_gaussian

    -
    -
    -d_spacing(dmin=1.0)
    -

    Calculate all d-spacing down to dmin

    -

    applies selection rules

    +
    +
    +pyFAI.utils.expand2d(vect, size2, vertical=True)
    +

    This expands a vector to a 2d-array.

    +

    The result is the same as:

    +
    if vertical:
    +    numpy.outer(numpy.ones(size2), vect)
    +else:
    +    numpy.outer(vect, numpy.ones(size2))
    +
    +
    +

    This is a ninja optimization: replace *1 with a memcopy, saves 50% of +time at the ms level.

    - - - +
    Parameters:dmin – minimum value of spacing requested
    Returns:dict d-spacing as string, list of tuple with Miller indices -preceded with the numerical value
    Parameters:
      +
    • vect – 1d vector
    • +
    • size2 – size of the expanded dimension
    • +
    • vertical – if False the vector is expanded to the first dimension. +If True, it is expanded to the second dimension.
    • +
    +
    -
    -
    -classmethod diamond(a)
    -

    Factory for Diamond type FCC like Si and Ge

    +
    +
    +pyFAI.utils.expand_args(args)
    +

    Takes an argv and expand it (under Windows, cmd does not convert *.tif +into a list of files. +Keeps only valid files (thanks to glob)

    - + + +
    Parameters:a – unit cell length
    Parameters:args – list of files or wilcards
    Returns:list of actual args
    -
    -
    -get_type()
    -
    +
    +
    +pyFAI.utils.float_(val)
    +

    Convert anything to a float ... or None if not applicable

    +
    -
    -
    -classmethod hexagonal(a, c, lattice_type='P')
    -

    Factory for hexagonal lattices

    +
    +
    +pyFAI.utils.gaussian(M, std)
    +

    Return a Gaussian window of length M with standard-deviation std.

    +

    This differs from the scipy.signal.gaussian implementation as: +- The default for sym=False (needed for gaussian filtering without shift) +- This implementation is normalized

    Parameters:
      -
    • a – unit cell length
    • -
    • c – unit cell length
    • +
    • M – length of the windows (int)
    • +
    • std – standatd deviation sigma
    +

    The FWHM is 2*numpy.sqrt(2 * numpy.pi)*std

    -
    -
    -lattices = ['cubic', 'tetragonal', 'hexagonal', 'rhombohedral', 'orthorhombic', 'monoclinic', 'triclinic']
    -
    - -
    -
    -classmethod monoclinic(a, b, c, beta, lattice_type='P')
    -

    Factory for hexagonal lattices

    +
    +
    +pyFAI.utils.gaussian_filter(input_img, sigma, mode='reflect', cval=0.0, use_scipy=True)
    +

    2-dimensional Gaussian filter implemented with FFT

    @@ -7504,776 +10326,512 @@

    Navigation

    Parameters:
      -
    • a – unit cell length
    • -
    • b – unit cell length
    • -
    • c – unit cell length
    • -
    • beta – unit cell angle
    • +
    • input_img (array-like) – input array to filter
    • +
    • sigma (scalar or sequence of scalars) – standard deviation for Gaussian kernel. +The standard deviations of the Gaussian filter are given for each axis as a sequence, +or as a single number, in which case it is equal for all axes.
    • +
    • mode – {‘reflect’,’constant’,’nearest’,’mirror’, ‘wrap’}, optional +The mode parameter determines how the array borders are +handled, where cval is the value when mode is equal to +‘constant’. Default is ‘reflect’
    • +
    • cval – scalar, optional +Value to fill past edges of input if mode is ‘constant’. Default is 0.0
    -
    -
    -classmethod orthorhombic(a, b, c, lattice_type='P')
    -

    Factory for orthorhombic lattices

    +
    +
    +pyFAI.utils.get_calibration_dir()
    +

    get the full path of a calibration directory

    - +
    Parameters:
      -
    • a – unit cell length
    • -
    • b – unit cell length
    • -
    • c – unit cell length
    • -
    -
    Returns:the full path of the calibrant file
    -
    -
    -classmethod rhombohedral(a, alpha, lattice_type='P')
    -

    Factory for hexagonal lattices

    +
    +
    +pyFAI.utils.get_cl_file(filename)
    +

    get the full path of a openCL file

    - +
    Parameters:
      -
    • a – unit cell length
    • -
    • alpha – unit cell angle
    • -
    -
    Returns:the full path of the openCL source file
    -
    -
    -save(name, long_name=None, doi=None, dmin=1.0, dest_dir=None)
    -

    Save informations about the cell in a d-spacing file, usable as Calibrant

    +
    +
    +pyFAI.utils.get_ui_file(filename)
    +

    get the full path of a user-interface file

    - +
    Parameters:
      -
    • name – name of the calibrant
    • -
    • doi – reference of the publication used to parametrize the cell
    • -
    • dmin – minimal d-spacing
    • -
    • dest_dir – name of the directory where to save the result
    • -
    -
    Returns:the full path of the ui
    -
    -
    -selection_rules = None
    -

    contains a list of functions returning True(allowed)/False(forbiden)/None(unknown)

    +
    +
    +pyFAI.utils.int_(val)
    +

    Convert anything to an int ... or None if not applicable

    -
    -
    -set_type(lattice_type)
    -
    - -
    -
    -classmethod tetragonal(a, c, lattice_type='P')
    -

    Factory for tetragonal lattices

    +
    +
    +pyFAI.utils.is_far_from_group(pt, lst_pts, d2)
    +

    Tells if a point is far from a group of points, distance greater than d2 (distance squared)

    - + +
    Parameters:
      -
    • a – unit cell length
    • -
    • c – unit cell length
    • +
    Parameters:
      +
    • pt – point of interest
    • +
    • lst_pts – list of points
    • +
    • d2 – minimum distance squarred
    Returns:

    True If the point is far from all others.

    +
    -
    -
    -type
    -
    - -
    -
    -types = {'I': 'Body centered', 'P': 'Primitive', 'C': 'Side centered', 'R': 'Rhombohedral', 'F': 'Face centered'}
    -
    - -
    -
    -volume
    -
    - -
    -
    -
    -class pyFAI.calibrant.calibrant_factory(basedir=None)
    +
    +class pyFAI.utils.lazy_property(fget)

    Bases: object

    -

    Behaves like a dict but is actually a factory: -Each time one retrieves an object it is a new geniune new calibrant (unmodified)

    -
    -
    -get(what, notfound=None)
    -
    - -
    -
    -has_key(k)
    -
    - -
    -
    -items()
    -
    - -
    -
    -keys()
    -
    - +

    meant to be used for lazy evaluation of an object attribute. +property should represent non-mutable data, as it replaces itself.

    -
    -values()
    +
    +__init__(fget)
    -
    -
    -

    distortion Module

    -
    -
    -class pyFAI.distortion.Distortion(detector='detector', shape=None, resize=False, empty=0, mask=None, method='LUT', device=None, workgroup=8)
    -

    Bases: object

    -

    This class applies a distortion correction on an image.

    -

    New version compatible both with CSR and LUT...

    -
    -
    -calc_LUT(use_common=True)
    -

    Calculate the Look-up table

    +
    +
    +pyFAI.utils.maximum_position(img)
    +

    Same as scipy.ndimage.measurements.maximum_position: +Find the position of the maximum of the values of the array.

    - + + +
    Returns:look up table either in CSR or LUT format depending on serl.method
    Parameters:img – 2-D image
    Returns:2-tuple of int with the position of the maximum
    -
    -
    -calc_init()
    -

    Initialize all arrays

    -
    - -
    -
    -calc_pos(use_cython=True)
    -

    Calculate the pixel boundary position on the regular grid

    - --- - - - -
    Returns:pixel corner positions (in pixel units) on the regular grid
    -

    @rtyep: ndarray of shape (nrow, ncol, 4, 2)

    +
    +
    +pyFAI.utils.measure_offset(img1, img2, method='numpy', withLog=False, withCorr=False)
    +

    Measure the actual offset between 2 images +:param img1: ndarray, first image +:param img2: ndarray, second image, same shape as img1 +:param withLog: shall we return logs as well ? boolean +:return: tuple of floats with the offsets

    -
    -
    -calc_size(use_cython=True)
    -

    Calculate the number of pixels falling into every single bin and

    +
    +
    +pyFAI.utils.readFloatFromKeyboard(text, dictVar)
    +

    Read float from the keyboard ....

    - +
    Returns:max of pixel falling into a single bin
    Parameters:
      +
    • text – string to be displayed
    • +
    • dictVar – dict of this type: {1: [set_dist_min],3: [set_dist_min, set_dist_guess, set_dist_max]}
    • +
    +
    -

    Considering the “half-CCD” spline from ID11 which describes a (1025,2048) detector, -the physical location of pixels should go from: -[-17.48634 : 1027.0543, -22.768829 : 2028.3689] -We chose to discard pixels falling outside the [0:1025,0:2048] range with a lose of intensity

    -
    -
    -correct(image, dummy=None, delta_dummy=None)
    -

    Correct an image based on the look-up table calculated ...

    - +
    +
    +pyFAI.utils.read_cl_file(filename)
    +
    - + - +
    Parameters:
      -
    • image – 2D-array with the image
    • -
    • dummy – value suggested for bad pixels
    • -
    • delta_dummy – precision of the dummy value
    • -
    -
    Parameters:filename – read an OpenCL file and apply a preprocessor
    Returns:

    corrected 2D image

    -
    Returns:preprocessed source code
    -

    #TODO: #225

    -
    -
    -reset(method=None, device=None, workgroup=None, prepare=True)
    -

    reset the distortion correction and re-calculate the look-up table

    +
    +
    +pyFAI.utils.relabel(label, data, blured, max_size=None)
    +

    Relabel limits the number of region in the label array. +They are ranked relatively to their max(I0)-max(blur(I0)

    - + +
    Parameters:
      -
    • method – can be “lut” or “csr”, “lut” looks faster
    • -
    • device – can be None, “cpu” or “gpu” or the id as a 2-tuple of integer
    • -
    • worgroup – enforce the workgroup size for CSR.
    • -
    • prepare – set to false to only reset and not re-initialize
    • +
    Parameters:
      +
    • label – a label array coming out of scipy.ndimage.measurement.label
    • +
    • data – an array containing the raw data
    • +
    • blured – an array containing the blurred data
    • +
    • max_size – the max number of label wanted
    Returns:

    array like label

    +
    -
    -
    -shape_out
    -

    Calculate/cache the output shape

    -

    :return output shape

    -
    - -
    -
    -uncorrect(image)
    -

    Take an image which has been corrected and transform it into it’s raw (with loss of information)

    +
    +
    +pyFAI.utils.roundfft(N)
    +

    This function returns the integer >=N for which size the Fourier analysis is faster (fron the FFT point of view) +Credit: Alessandro Mirone, ESRF, 2012

    - + - +
    Parameters:image – 2D-array with the image
    Parameters:N – interger on which one would like to do a Fourier transform
    Returns:uncorrected 2D image and a mask (pixels in raw image
    Returns:integer with a better choice
    -
    - -
    -
    -class pyFAI.distortion.Quad(buffer)
    -

    Bases: object

    -
    -
    -
    -
    -

    -

    -
    -
    -
    xxxxxA
    -
    -
    xxxxxxxI’xxxxxxxx x
    -
    -
    -
    -

    xxxxxxxxIxxxxxx | x

    -
    -

    Bxxxxxxxxxxxx | | x -x | | x -x | | x

    -
    -

    x | | x -x | | x -x | | x -x | | x -x | | x

    -
    -
    x | | x -x | | x -x | | x -x O| P A’ x
    -
    -
    -
    -
    —————–J——————+——————————–L———————–
    -

    x | x -x | x -x | x

    -
    -

    x | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD -CxxxxxxxxxxxxxxxxxKxxxxx

    -
    -
    -

    -

    -

    -

    -
    -
    -
    -
    -
    -
    -
    -calc_area()
    -
    - -
    -
    -calc_area_AB(I1, I2)
    -
    - -
    -
    -calc_area_BC(J1, J2)
    -
    - -
    -
    -calc_area_CD(K1, K2)
    -
    - -
    -
    -calc_area_DA(L1, L2)
    -
    - -
    -
    -calc_area_old()
    -
    - -
    -
    -calc_area_vectorial()
    -
    - -
    -
    -get_box(i, j)
    -
    - -
    -
    -get_box_size0()
    -
    - -
    -
    -get_box_size1()
    -
    - -
    -
    -get_idx(i, j)
    -
    - -
    -
    -get_offset0()
    -
    - -
    -
    -get_offset1()
    -
    - -
    -
    -init_slope()
    -
    - -
    -
    -integrateAB(start, stop, calc_area)
    -
    - -
    -
    -populate_box()
    -
    - -
    -
    -reinit(A0, A1, B0, B1, C0, C1, D0, D1)
    -
    - -
    -
    -
    -pyFAI.distortion.test()
    -
    - -
    -
    -

    worker Module

    -

    This module contains the Worker class:

    -

    A tool able to perform azimuthal integration with: -additional saving capabilities like -- save as 2/3D structure in a HDF5 File -- read from HDF5 files

    -

    Aims at being integrated into a plugin like LImA or as model for the GUI

    -

    The configuration of this class is mainly done via a dictionary transmitted as a JSON string: -Here are the valid keys:

    -
    -

    “dist”, -“poni1”, -“poni2”, -“rot1” -“rot3” -“rot2” -“pixel1” -“pixel2”

    -

    “splineFile” -“wavelength”

    -

    “poni” #path of the file

    -

    “chi_discontinuity_at_0” -“do_mask” -“do_dark” -“do_azimuthal_range” -“do_flat” -“do_2D” -“azimuth_range_min” -“azimuth_range_max”

    -

    “polarization_factor” -“nbpt_rad” -“do_solid_angle” -“do_radial_range” -“do_poisson” -“delta_dummy” -“nbpt_azim” -“flat_field” -“radial_range_min” -“dark_current” -“do_polarization” -“mask_file” -“detector” -“unit” -“radial_range_max” -“val_dummy” -“do_dummy” -“method”

    -
    -

    }

    -
    -
    -class pyFAI.worker.DistortionWorker(detector=None, dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)
    -

    Bases: object

    -

    Simple worker doing dark, flat, solid angle and polarization correction

    -
    -
    -process(data, normalization=None)
    -

    Process the data and apply a normalization factor -:param data: input data -:param normalization: normalization factor -:return processed data

    -
    - -
    - -
    -
    -class pyFAI.worker.PixelwiseWorker(dark=None, flat=None, solidangle=None, polarization=None, mask=None, dummy=None, delta_dummy=None, device=None)
    -

    Bases: object

    -

    Simple worker doing dark, flat, solid angle and polarization correction

    -
    -
    -process(data, normalization=None)
    -

    Process the data and apply a normalization factor -:param data: input data -:param normalization: normalization factor -:return processed data

    -
    - -
    - -
    -
    -class pyFAI.worker.Worker(azimuthalIntgrator=None, shapeIn=(2048, 2048), shapeOut=(360, 500), unit='r_mm', dummy=None, delta_dummy=None)
    -

    Bases: object

    -
    -
    -do_2D()
    -
    - -
    -
    -error_model
    -
    - -
    -
    -get_config()
    -

    return configuration as a dictionary

    +
    +pyFAI.utils.shift(input_img, shift_val)
    +

    Shift an array like scipy.ndimage.interpolation.shift(input_img, shift_val, mode=”wrap”, order=0) but faster +:param input_img: 2d numpy array +:param shift_val: 2-tuple of integers +:return: shifted image

    -
    -
    -get_error_model()
    -
    - -
    -
    -get_json_config()
    -

    return configuration as a JSON string

    +
    +
    +pyFAI.utils.shiftFFT(input_img, shift_val, method='fft')
    +

    Do shift using FFTs

    +

    Shift an array like scipy.ndimage.interpolation.shift(input, shift, mode=”wrap”, order=”infinity”) but faster +:param input_img: 2d numpy array +:param shift_val: 2-tuple of float +:return: shifted image

    -
    -
    -get_normalization_factor()
    -
    - -
    -
    -get_unit()
    -
    - -
    -
    -normalization_factor
    -
    +
    +
    +pyFAI.utils.str_(val)
    +

    Convert anything to a string ... but None -> “”

    +
    -
    -
    -process(data)
    -

    Process a frame -#TODO: -dark, flat, sa are missing

    - +
    +
    +pyFAI.utils.unBinning(binnedArray, binsize, norm=True)
    +
    - + + +
    Param:data: numpy array containing the input image
    Parameters:
      +
    • binnedArray – input ndarray
    • +
    • binsize – 2-tuple representing the size of the binning
    • +
    • norm – if True (default) decrease the intensity by binning factor. If False, it is non-conservative
    • +
    +
    Returns:

    unBinned input ndarray

    +
    +
    +
    +

    gui.gui_utils Module

    +

    Module providing gui util tools

    +
    +
    +class pyFAI.gui.utils.Event(width, height)
    +

    Bases: object

    +

    Dummy class for dummy things

    -
    -reconfig(shape=(2048, 2048), sync=False)
    -

    This is just to force the integrator to initialize with a given input image shape

    +
    +__init__(width, height)
    +
    + +
    + +
    +
    +pyFAI.gui.utils.maximize_fig(fig=None)
    +

    Try to set the figure fullscreen

    +
    + +
    +
    +pyFAI.gui.utils.update_fig(fig=None)
    +

    Update a matplotlib figure with a Qt4 backend

    - +
    Parameters:
      -
    • shape – shape of the input image
    • -
    • sync – return only when synchronized
    • -
    -
    Parameters:fig – pylab figure
    +
    +
    +

    ext.bilinear Module

    +

    This extension makes a discrete 2D-array appear like a continuous function thanks +to bilinear interpolations.

    +
    +
    +class pyFAI.ext.bilinear.Bilinear
    +

    Bases: object

    +

    Bilinear interpolator for finding max.

    +

    Instance attribute defined in pxd file

    -
    -reset()
    -

    this is just to force the integrator to initialize

    -
    - -
    -
    -save_config(filename=None)
    +
    +cp_local_maxi(self, size_t x) → size_t
    -
    -
    -setDarkcurrentFile(imagefile)
    +
    +
    +data
    -
    -setExtension(ext)
    -

    enforce the extension of the processed data file written

    +
    +f_cy(self, x)
    +

    Function f((y,x)) where f is a continuous function (y,x) are pixel coordinates +@param x: 2-tuple of float +@return: Interpolated signal from the image (negative for minimizer)

    -
    -
    -setFlatfieldFile(imagefile)
    -
    - -
    -
    -setJsonConfig(jsonconfig)
    +
    +
    +height
    -
    -setSubdir(path)
    -

    Set the relative or absolute path for processed data

    +
    +local_maxi(self, x)
    +

    Return the local maximum ... with sub-pixel refinement

    +

    @param x: 2-tuple of integers +@param w: half with of the window: 1 or 2 are advised +@return: 2-tuple of float with the nearest local maximum

    +

    Sub-pixel refinement: +Second order Taylor expansion of the function; first derivative is null +delta = x-i = -Inverse[Hessian].gradient

    +

    if Hessian is singular or |delta|>1: use a center of mass.

    -
    -
    -set_error_model(value)
    -
    - -
    -
    -set_normalization_factor(value)
    +
    +
    +maxi
    -
    -
    -set_unit(value)
    +
    +
    +mini
    -
    -unit
    +
    +width
    -
    -
    -warmup(sync=False)
    -

    Process a dummy image to ensure everything is initialized

    +
    + +
    +
    +pyFAI.ext.bilinear.calc_cartesian_positions
    +

    calc_cartesian_positions(signatures, args, kwargs, defaults)

    +

    Calculate the Cartesian position for array of position (d1, d2) +with pixel coordinated stored in array pos +This is bilinear interpolation

    - +
    Parameters:sync – wait for processing to be finished
    Parameters:
      +
    • d1 – position in dim1
    • +
    • d2 – position in dim2
    • +
    • pos – array with position of pixels corners
    • +
    +
    +

    :return 3-tuple of position.

    -
    - -
    -
    -pyFAI.worker.make_ai(config)
    -

    Create an Azimuthal integrator from the configuration -Static method !

    +
    +
    +pyFAI.ext.bilinear.convert_corner_2D_to_4D
    +

    convert_corner_2D_to_4D(signatures, args, kwargs, defaults)

    +

    Convert 2 (or 3) arrays of corner position into a 4D array of pixel corner coordinates

    - + - +
    Parameters:config – dict with all parameters
    Parameters:
      +
    • ndim – 2d or 3D output
    • +
    • d1 – 2D position in dim1 (shape +1)
    • +
    • d2 – 2D position in dim2 (shape +1)
    • +
    • d3 – 2D position in dim3 (z) (shape +1)
    • +
    +
    Returns:configured (but uninitialized) AzimuthalIntgrator
    Returns:

    pos 4D array with position of pixels corners

    +
    -
    -

    units Module

    -
    -
    -class pyFAI.units.Enum
    -

    Bases: dict

    -

    Simple class half way between a dict and a class, behaving as an enum

    -
    - +
    +

    ext._bispev Module

    +

    This extension is a re-implementation of bi-cubic spline evaluation from scipy

    +

    Spline evaluation function

    +

    Created on Nov 4, 2013

    +

    @author: zubair, Jerome Kieffer

    -
    -pyFAI.units.eq_2th(x, y, z, wavelength=None)
    -

    Calculates the 2theta aperture of the cone

    - --+
    +pyFAI.ext._bispev.bisplev(x, y, tck, dx=0, dy=0)
    +

    Evaluate a bivariate B-spline and its derivatives.

    +

    Return a rank-2 array of spline function values (or spline derivative +values) at points given by the cross-product of the rank-1 arrays x and +y. In special cases, return an array or just a float if either x or y or +both are floats. Based on BISPEV from FITPACK.

    +
    +
    x, y : ndarray
    +
    Rank-1 arrays specifying the domain over which to evaluate the +spline or its derivative.
    +
    tck : tuple
    +
    A sequence of length 5 returned by bisplrep containing the knot +locations, the coefficients, and the degree of the spline: +[tx, ty, c, kx, ky].
    +
    dx, dy : int, optional
    +
    The orders of the partial derivatives in x and y respectively. +This version does bot implement derivatives.
    +
    +
    +
    vals : ndarray
    +
    The B-spline or its derivative evaluated over the set formed by +the cross-product of x and y.
    +
    +

    splprep, splrep, splint, sproot, splev +UnivariateSpline, BivariateSpline

    +
    +
    See bisplrep to generate the tck representation.
    +
    + - - +
    Parameters:
      -
    • x – horizontal position, towards the center of the ring, from sample position
    • -
    • y – Vertical position, to the roof, from sample position
    • -
    • z – distance from sample along the beam
    • -
    • wavelength – in meter
    • -
    -
    [1]Dierckx P. : An algorithm for surface fitting +with spline functions +Ima J. Numer. Anal. 1 (1981) 267-283.
    -
    - -
    -
    -pyFAI.units.eq_logq(x, y, z, wavelength)
    -

    Calculates the log (decimal) of the scattering vector

    - --+
    + - - + + +
    Parameters:
      -
    • x – horizontal position, towards the center of the ring, from sample position
    • -
    • y – Vertical position, to the roof, from sample position
    • -
    • z – distance from sample along the beam
    • -
    • wavelength – in meter
    • -
    -
    [2]Dierckx P. : An algorithm for surface fitting +with spline functions +report tw50, Dept. Computer Science,K.U.Leuven, 1980.
    + + + +
    [3]Dierckx P. : Curve and surface fitting with splines, +Monographs on Numerical Analysis, Oxford University Press, 1993.
    +
    +
    +

    ext._blob Module

    +

    Blob detection is used to find peaks in images by performing subsequent blurs

    +

    Some Cythonized function for blob detection function

    -
    -pyFAI.units.eq_q(x, y, z, wavelength)
    -

    Calculates the modulus of the scattering vector

    +
    +pyFAI.ext._blob.local_max(__Pyx_memviewslice dogs, mask=None, bool n_5=False)
    +

    Calculate if a point is a maximum in a 3D space: (scale, y, x)

    - + +
    Parameters:
      -
    • x – horizontal position, towards the center of the ring, from sample position
    • -
    • y – Vertical position, to the roof, from sample position
    • -
    • z – distance from sample along the beam
    • -
    • wavelength – in meter
    • +
    Parameters:
      +
    • dogs – 3D array of difference of gaussian
    • +
    • mask – mask with invalid pixels
    • +
    • N_5 – take a neighborhood of 5x5 pixel in plane
    Returns:

    3d_array with 1 where is_max

    +
    +
    +
    +

    ext.container Module

    +

    Container are a new uniform storage, optimized for the creation of both LUT and CSR. +It has nothing to do with Docker.

    +
    +
    +

    ext._convolution Module

    +

    Convolutions in real space are used to blurs images, used in blob-detection algorithm

    +

    Implementation of a separable 2D convolution

    -
    -pyFAI.units.eq_r(x, y, z=None, wavelength=None)
    -

    Calculates the radius

    +
    +pyFAI.ext._convolution.gaussian(sigma, width=None)
    +

    Return a Gaussian window of length “width” with standard-deviation “sigma”.

    Parameters:
      -
    • x – horizontal position, towards the center of the ring, from sample position
    • -
    • y – Vertical position, to the roof, from sample position
    • -
    • z – distance from sample along the beam
    • -
    • wavelength – in meter
    • +
    • sigma – standard deviation sigma
    • +
    • width – length of the windows (int) By default 8*sigma+1,
    +

    Width should be odd.

    +

    The FWHM is 2*sqrt(2 * pi)*sigma

    -
    -pyFAI.units.eq_rd2(x, y, z, wavelength)
    -

    Calculates the reciprocal spacing squared

    +
    +pyFAI.ext._convolution.gaussian_filter(img, sigma)
    +

    Performs a gaussian bluring using a gaussian kernel.

    @@ -8282,49 +10840,21 @@

    worker<
    -
    -pyFAI.units.to_unit(obj, type_=(2th_deg, 2th_rad, q_nm^-1, q_A^-1, r_mm, r_m, d*2_A^-2, d*2_nm^-2, log(q)_m))
    -
    - - -
    -

    utils Module

    -

    Utilities, mainly for image treatment

    -
    -
    -class pyFAI.utils.FixedParameters
    -

    Bases: set

    -

    Like a set, made for FixedParameters in geometry refinement

    -
    -
    -add_or_discard(key, value=True)
    -

    Add a value to a set if value, else discard it -:param key: element to added or discared from set -:type value: boolean. If None do nothing ! -:return: None

    -
    - -
    - -
    -
    -pyFAI.utils.averageDark(lstimg, center_method='mean', cutoff=None, quantiles=(0.5, 0.5))
    -

    Averages a serie of dark (or flat) images. -Centers the result on the mean or the median ... -but averages all frames within cutoff*std

    +
    +pyFAI.ext._convolution.horizontal_convolution(__Pyx_memviewslice img, __Pyx_memviewslice filter)
    +

    Implements a 1D horizontal convolution with a filter. +The only implemented mode is “reflect” (default in scipy.ndimage.filter)

    Parameters:
      -
    • x – horizontal position, towards the center of the ring, from sample position
    • -
    • y – Vertical position, to the roof, from sample position
    • -
    • z – distance from sample along the beam
    • -
    • wavelength – in meter
    • +
    • img – input image
    • +
    • sigma – width parameter of the gaussian
    - @@ -8332,554 +10862,1121 @@

    worker<
    -
    -pyFAI.utils.averageImages(listImages, output=None, threshold=0.1, minimum=None, maximum=None, darks=None, flats=None, filter_='mean', correct_flat_from_dark=False, cutoff=None, quantiles=None, fformat='edf')
    -

    Takes a list of filenames and create an average frame discarding all saturated pixels.

    +
    +pyFAI.ext._convolution.vertical_convolution(__Pyx_memviewslice img, __Pyx_memviewslice filter)
    +

    Implements a 1D vertical convolution with a filter. +The only implemented mode is “reflect” (default in scipy.ndimage.filter)

    Parameters:
      -
    • lstimg – list of 2D images or a 3D stack
    • -
    • center_method – is the center calculated by a “mean” or a “median”, or “quantile”
    • -
    • cutoff – keep all data where (I-center)/std < cutoff
    • -
    • quantiles – 2-tuple of floats average out data between the two quantiles
    • +
    • img – input image
    • +
    • filter – 1D array with the coefficients of the array
    Returns:

    2D image averaged

    +
    Returns:

    array of the same shape as image with

    -
    Parameters:
      -
    • listImages – list of string representing the filenames
    • -
    • output – name of the optional output file
    • -
    • threshold – what is the upper limit? all pixel > max*(1-threshold) are discareded.
    • -
    • minimum – minimum valid value or True
    • -
    • maximum – maximum valid value
    • -
    • darks – list of dark current images for subtraction
    • -
    • flats – list of flat field images for division
    • -
    • filter – can be “min”, “max”, “median”, “mean”, “sum”, “quantiles” (default=’mean’)
    • -
    • correct_flat_from_dark – shall the flat be re-corrected ?
    • -
    • cutoff – keep all data where (I-center)/std < cutoff
    • -
    • quantiles – 2-tuple containing the lower and upper quantile (0<q<1) to average out.
    • -
    • fformat – file format of the output image, default: edf
    • +
    • img – input image
    • +
    • filter – 1D array with the coefficients of the array
    Returns:

    filename with the data or the data ndarray in case format=None

    +
    Returns:

    array of the same shape as image with

    -
    -
    -pyFAI.utils.binning(input_img, binsize, norm=True)
    +
    +
    +

    ext._distortion Module

    +

    Distortion correction are correction are applied by Look-up table (or CSR)

    +

    Common Look-Up table datatypes

    +
    +
    +class pyFAI.ext._distortion.Distortion(self, detector='detector', shape=None)
    +

    Bases: object

    +

    This class applies a distortion correction on an image.

    +

    It is also able to apply an inversion of the correction.

    +
    +
    +__init__(self, detector='detector', shape=None)
    - - - +
    Parameters:
      -
    • input_img – input ndarray
    • -
    • binsize – int or 2-tuple representing the size of the binning
    • -
    • norm – if False, do average instead of sum
    • -
    -
    Returns:

    binned input ndarray

    -
    Parameters:detector – detector instance or detector name
    -
    -
    -pyFAI.utils.boundingBox(img)
    -

    Tries to guess the bounding box around a valid massif

    +
    +
    +calc_LUT(self)
    +
    + +
    +
    +calc_LUT_size(self)
    +

    Considering the “half-CCD” spline from ID11 which describes a (1025,2048) detector, +the physical location of pixels should go from: +[-17.48634 : 1027.0543, -22.768829 : 2028.3689] +We chose to discard pixels falling outside the [0:1025,0:2048] range with a lose of intensity

    +

    We keep self.pos: pos_corners will not be compatible with systems showing non adjacent pixels (like some xpads)

    +
    + +
    +
    +calc_pos(self)
    +
    + +
    +
    +correct(self, image)
    +

    Correct an image based on the look-up table calculated ...

    - + - +
    Parameters:img – 2D array like
    Parameters:image – 2D-array with the image
    Returns:4-typle (d0_min, d1_min, d0_max, d1_max)
    Returns:corrected 2D image
    -
    -
    -pyFAI.utils.calc_checksum(ary, safe=True)
    -

    Calculate the checksum by default (or returns its buffer location if unsafe)

    -
    - -
    -
    -pyFAI.utils.center_of_mass(img)
    -

    Calculate the center of mass of of the array. -Like scipy.ndimage.measurements.center_of_mass -:param img: 2-D array -:return: 2-tuple of float with the center of mass

    -
    - -
    -
    -pyFAI.utils.concatenate_cl_kernel(filenames)
    -
    +
    +
    +uncorrect(self, image)
    +

    Take an image which has been corrected and transform it into it’s raw (with loss of information)

    +
    - + + +
    Parameters:filenames – filenames containing the kernels
    Parameters:image – 2D-array with the image
    Returns:uncorrected 2D image and a mask (pixels in raw image
    -

    this method concatenates all the kernel from the list

    -
    -
    -pyFAI.utils.convert_CamelCase(name)
    -

    convert a function name in CamelCase into camel_case

    -
    -pyFAI.utils.deg2rad(dd)
    -

    Convert degrees to radian in the range -pi->pi

    +
    +pyFAI.ext._distortion.calc_CSR(__Pyx_memviewslice pos, shape, bin_size, max_pixel_size, __Pyx_memviewslice mask=None)
    +

    Calculate the Look-up table as CSR format

    - + + +
    Parameters:dd – angle in degrees
    Parameters:
      +
    • pos – 4D position array
    • +
    • shape – output shape
    • +
    • bin_size – number of input element per output element (as numpy array)
    • +
    • max_pixel_size – (2-tuple of int) size of a buffer covering the largest pixel
    • +
    +
    Returns:

    look-up table in CSR format: 3-tuple of array

    +
    -

    Nota: depending on the platform it could be 0<2pi -A branch is cheaper than a trigo operation

    -
    - -
    -
    -pyFAI.utils.dog(s1, s2, shape=None)
    -

    2D difference of gaussian -typically 1 to 10 parameters

    -
    -pyFAI.utils.dog_filter(input_img, sigma1, sigma2, mode='reflect', cval=0.0)
    -

    2-dimensional Difference of Gaussian filter implemented with FFTw

    - +
    +pyFAI.ext._distortion.calc_LUT(__Pyx_memviewslice pos, shape, bin_size, max_pixel_size, __Pyx_memviewslice mask=None)
    +
    - + +
    Parameters:
      -
    • input_img (array-like) – input_img array to filter
    • -
    • sigma (scalar or sequence of scalars) – standard deviation for Gaussian kernel. -The standard deviations of the Gaussian filter are given for each axis as a sequence, -or as a single number, in which case it is equal for all axes.
    • -
    • mode – {‘reflect’,’constant’,’nearest’,’mirror’, ‘wrap’}, optional -The mode parameter determines how the array borders are -handled, where cval is the value when mode is equal to -‘constant’. Default is ‘reflect’
    • -
    • cval – scalar, optional -Value to fill past edges of input if mode is ‘constant’. Default is 0.0
    • +
    Parameters:
      +
    • pos – 4D position array
    • +
    • shape – output shape
    • +
    • bin_size – number of input element per output element (numpy array)
    • +
    • max_pixel_size – (2-tuple of int) size of a buffer covering the largest pixel
    • +
    • mask – arry with bad pixels marked as True
    Returns:

    look-up table

    +
    -
    -pyFAI.utils.expand(input_img, sigma, mode='constant', cval=0.0)
    -

    Expand array a with its reflection on boundaries

    +
    +pyFAI.ext._distortion.calc_area(float I1, float I2, float slope, float intercept) → float
    +

    Calculate the area between I1 and I2 of a line with a given slope & intercept

    +
    + +
    +
    +pyFAI.ext._distortion.calc_openmp(__Pyx_memviewslice pos, shape, max_pixel_size=(8, 8), __Pyx_memviewslice mask=None, format='csr', int bins_per_pixel=8)
    +

    Calculate the look-up table (or CSR) using OpenMP

    - + +
    Parameters:
      -
    • a – 2D array
    • -
    • sigma – float or 2-tuple of floats.
    • +
    Parameters:
      +
    • pos – 4D position array
    • +
    • shape – output shape
    • +
    • max_pixel_size – (2-tuple of int) size of a buffer covering the largest pixel
    • +
    • format – can be “CSR” or “LUT”
    • +
    • bins_per_pixel – average splitting factor (number of pixels per bin)
    Returns:

    look-up table in CSR/LUT format

    +
    -

    :param mode:”constant”, “nearest”, “reflect” or mirror -:param cval: filling value used for constant, 0.0 by default

    -

    Nota: sigma is the half-width of the kernel. For gaussian convolution it is adviced that it is 4*sigma_of_gaussian

    -
    -
    -pyFAI.utils.expand2d(vect, size2, vertical=True)
    -

    This expands a vector to a 2d-array.

    -

    The resul is the same as -if vertical:

    +
    +
    +pyFAI.ext._distortion.calc_pos
    +

    calc_pos(signatures, args, kwargs, defaults) +Calculate the pixel boundary position on the regular grid

    -
    numpy.outer(numpy.ones(size2), vect)
    -
    -
    else:
    -
    numpy.outer(vect, numpy.ones( size2))
    -
    -

    This is a ninja optimization: replace *1 with a memcopy, saves 50% of time at the ms level.

    - +
    - + + + + + + + + +
    Parameters:
      -
    • vect – 1d vector
    • -
    • size2 – size
    • -
    • vertical – if False,
    • -
    -
    param pixel_corners:
     pixel corner coordinate as detector.get_pixel_corner()
    param shape:requested output shape. If None, it is calculated
    param pixel1, pixel2:
     pixel size along row and column coordinates
    return:pos, delta1, delta2, shape_out, offset
    +
    -
    -
    -pyFAI.utils.expand_args(args)
    -

    Takes an argv and expand it (under Windows, cmd does not convert *.tif into a list of files. -Keeps only valid files (thanks to glob)

    - +
    +
    +pyFAI.ext._distortion.calc_size
    +

    calc_size(signatures, args, kwargs, defaults) +Calculate the number of items per output pixel

    +
    +
    - + - + + + + + + +
    Parameters:args – list of files or wilcards
    param pos:4D array with position in space
    Returns:list of actual args
    param shape:shape of the output array
    param mask:input data mask
    param offset:2-tuple of float with the minimal index of
    return:number of input element per output elements
    +
    -
    -pyFAI.utils.float_(val)
    -

    Convert anything to a float ... or None if not applicable

    +
    +pyFAI.ext._distortion.clip(int value, int min_val, int max_val) → int
    +

    Limits the value to bounds

    -
    -pyFAI.utils.gaussian(M, std)
    -

    Return a Gaussian window of length M with standard-deviation std.

    -

    This differs from the scipy.signal.gaussian implementation as: -- The default for sym=False (needed for gaussian filtering without shift) -- This implementation is normalized

    +
    +pyFAI.ext._distortion.correct_CSR(image, shape_in, shape_out, LUT, dummy=None, delta_dummy=None)
    +

    Correct an image based on the look-up table calculated ...

    - + +
    Parameters:
      -
    • M – length of the windows (int)
    • -
    • std – standatd deviation sigma
    • +
    Parameters:
      +
    • image – 2D-array with the image
    • +
    • shape_in – shape of input image
    • +
    • shape_out – shape of output image
    • +
    • LUT – Look up table, here a 3-tuple array of ndarray
    • +
    • dummy – value for invalid pixels
    • +
    • delta_dummy – precision for invalid pixels
    Returns:

    corrected 2D image

    +
    -

    The FWHM is 2*numpy.sqrt(2 * numpy.pi)*std

    -
    -pyFAI.utils.gaussian_filter(input_img, sigma, mode='reflect', cval=0.0)
    -

    2-dimensional Gaussian filter implemented with FFTw

    +
    +pyFAI.ext._distortion.correct_LUT(image, shape_in, shape_out, __Pyx_memviewslice LUT, dummy=None, delta_dummy=None)
    +

    Correct an image based on the look-up table calculated ...

    - + +
    Parameters:
      -
    • input_img (array-like) – input array to filter
    • -
    • sigma (scalar or sequence of scalars) – standard deviation for Gaussian kernel. -The standard deviations of the Gaussian filter are given for each axis as a sequence, -or as a single number, in which case it is equal for all axes.
    • -
    • mode – {‘reflect’,’constant’,’nearest’,’mirror’, ‘wrap’}, optional -The mode parameter determines how the array borders are -handled, where cval is the value when mode is equal to -‘constant’. Default is ‘reflect’
    • -
    • cval – scalar, optional -Value to fill past edges of input if mode is ‘constant’. Default is 0.0
    • +
    Parameters:
      +
    • image – 2D-array with the image
    • +
    • shape_in – shape of input image
    • +
    • shape_out – shape of output image
    • +
    • LUT – Look up table, here a 2D-array of struct
    • +
    • dummy – value for invalid pixels
    • +
    • delta_dummy – precision for invalid pixels
    Returns:

    corrected 2D image

    +
    -
    -pyFAI.utils.get_calibration_dir()
    -

    get the full path of a calibration directory

    +
    +pyFAI.ext._distortion.uncorrect_CSR(image, shape, LUT)
    +

    Take an image which has been corrected and transform it into it’s raw (with loss of information)

    - + + +
    Returns:the full path of the calibrant file
    Parameters:
      +
    • image – 2D-array with the image
    • +
    • shape – shape of output image
    • +
    • LUT – Look up table, here a 3-tuple of ndarray
    • +
    +
    Returns:

    uncorrected 2D image and a mask (pixels in raw image not existing)

    +
    -
    -pyFAI.utils.get_cl_file(filename)
    -

    get the full path of a openCL file

    +
    +pyFAI.ext._distortion.uncorrect_LUT(image, shape, __Pyx_memviewslice LUT)
    +

    Take an image which has been corrected and transform it into it’s raw (with loss of information)

    - + + +
    Returns:the full path of the openCL source file
    Parameters:
      +
    • image – 2D-array with the image
    • +
    • shape – shape of output image
    • +
    • LUT – Look up table, here a 2D-array of struct
    • +
    +
    Returns:

    uncorrected 2D image and a mask (pixels in raw image not existing)

    +
    -
    -
    -pyFAI.utils.get_ui_file(filename)
    -

    get the full path of a user-interface file

    +
    +
    +

    ext._geometry Module

    +

    This extension is a fast-implementation for calculating the geometry, i.e. where +every pixel of an array stays in space (x,y,z) or its (r, chi) coordinates.

    +
    +
    +pyFAI.ext._geometry.calc_chi(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)
    +

    Calculate the chi array (azimuthal angles) using OpenMP

    +

    X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) +X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) +X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2) +tan(Chi) = X2 / X1

    - + + +
    Returns:the full path of the ui
    Parameters:
      +
    • L – distance sample - PONI
    • +
    • rot1 – angle1
    • +
    • rot2 – angle2
    • +
    • rot3 – angle3
    • +
    • pos1 – numpy array with distances in meter along dim1 from PONI (Y)
    • +
    • pos2 – numpy array with distances in meter along dim2 from PONI (X)
    • +
    • pos3 – numpy array with distances in meter along Sample->PONI (Z), positive behind the detector
    • +
    +
    Returns:

    ndarray of double with same shape and size as pos1

    +
    -
    -pyFAI.utils.int_(val)
    -

    Convert anything to an int ... or None if not applicable

    -
    - -
    -
    -pyFAI.utils.is_far_from_group(pt, lst_pts, d2)
    -

    Tells if a point is far from a group of points, distance greater than d2 (distance squared)

    +
    +pyFAI.ext._geometry.calc_cosa(double L, ndarray pos1, ndarray pos2, ndarray pos3=None)
    +

    Calculate the cosine of the incidence angle using OpenMP. +Used for sensors thickness effect corrections

    -
    Parameters:
      -
    • pt – point of interest
    • -
    • lst_pts – list of points
    • -
    • d2 – minimum distance squarred
    • +
    • L – distance sample - PONI
    • +
    • pos1 – numpy array with distances in meter along dim1 from PONI (Y)
    • +
    • pos2 – numpy array with distances in meter along dim2 from PONI (X)
    • +
    • pos3 – numpy array with distances in meter along Sample->PONI (Z), positive behind the detector
    Returns:

    True If the point is far from all others.

    +
    Returns:

    ndarray of double with same shape and size as pos1

    -
    -
    -class pyFAI.utils.lazy_property(fget)
    -

    Bases: object

    -

    meant to be used for lazy evaluation of an object attribute. -property should represent non-mutable data, as it replaces itself.

    -
    -
    -
    -pyFAI.utils.maximum_position(img)
    -

    Same as scipy.ndimage.measurements.maximum_position: -Find the position of the maximum of the values of the array.

    +
    +pyFAI.ext._geometry.calc_pos_zyx(double L, double poni1, double poni2, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)
    +

    Calculate the 3D coordinates in the sample’s referential

    - + - +
    Parameters:img – 2-D image
    Parameters:
      +
    • L – distance sample - PONI
    • +
    • poni1 – PONI coordinate along y axis
    • +
    • poni2 – PONI coordinate along x axis
    • +
    • rot1 – angle1
    • +
    • rot2 – angle2
    • +
    • rot3 – angle3
    • +
    • pos1 – numpy array with distances in meter along dim1 from PONI (Y)
    • +
    • pos2 – numpy array with distances in meter along dim2 from PONI (X)
    • +
    • pos3 – numpy array with distances in meter along Sample->PONI (Z), positive behind the detector
    • +
    +
    Returns:2-tuple of int with the position of the maximum
    Returns:

    3-tuple of ndarray of double with same shape and size as pos1

    +
    -
    -pyFAI.utils.measure_offset(img1, img2, method='numpy', withLog=False, withCorr=False)
    -

    Measure the actual offset between 2 images -:param img1: ndarray, first image -:param img2: ndarray, second image, same shape as img1 -:param withLog: shall we return logs as well ? boolean -:return: tuple of floats with the offsets

    +
    +pyFAI.ext._geometry.calc_q(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, double wavelength, pos3=None)
    +

    Calculate the q (scattering vector) array using OpenMP

    +

    X1 = p1*cos(rot2)*cos(rot3) + p2*(cos(rot3)*sin(rot1)*sin(rot2) - cos(rot1)*sin(rot3)) - L*(cos(rot1)*cos(rot3)*sin(rot2) + sin(rot1)*sin(rot3)) +X2 = p1*cos(rot2)*sin(rot3) - L*(-(cos(rot3)*sin(rot1)) + cos(rot1)*sin(rot2)*sin(rot3)) + p2*(cos(rot1)*cos(rot3) + sin(rot1)*sin(rot2)*sin(rot3)) +X3 = -(L*cos(rot1)*cos(rot2)) + p2*cos(rot2)*sin(rot1) - p1*sin(rot2) +tan(Chi) = X2 / X1

    + +++ + + + + + +
    Parameters:
      +
    • L – distance sample - PONI
    • +
    • rot1 – angle1
    • +
    • rot2 – angle2
    • +
    • rot3 – angle3
    • +
    • pos1 – numpy array with distances in meter along dim1 from PONI (Y)
    • +
    • pos2 – numpy array with distances in meter along dim2 from PONI (X)
    • +
    • pos3 – numpy array with distances in meter along Sample->PONI (Z), positive behind the detector
    • +
    • wavelength – in meter to get q in nm-1
    • +
    +
    Returns:

    ndarray of double with same shape and size as pos1

    +
    -
    -pyFAI.utils.readFloatFromKeyboard(text, dictVar)
    -

    Read float from the keyboard ....

    +
    +pyFAI.ext._geometry.calc_r(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)
    +

    Calculate the radius array (radial direction) in parallel

    - + +
    Parameters:
      -
    • text – string to be displayed
    • -
    • dictVar – dict of this type: {1: [set_dist_min],3: [set_dist_min, set_dist_guess, set_dist_max]}
    • +
    Parameters:
      +
    • L – distance sample - PONI
    • +
    • rot1 – angle1
    • +
    • rot2 – angle2
    • +
    • rot3 – angle3
    • +
    • pos1 – numpy array with distances in meter along dim1 from PONI (Y)
    • +
    • pos2 – numpy array with distances in meter along dim2 from PONI (X)
    • +
    • pos3 – numpy array with distances in meter along Sample->PONI (Z), positive behind the detector
    Returns:

    ndarray of double with same shape and size as pos1

    +
    -
    -pyFAI.utils.read_cl_file(filename)
    -
    +
    +pyFAI.ext._geometry.calc_rad_azim(double L, double poni1, double poni2, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None, space='2th', wavelength=None)
    +

    Calculate the radial & azimutal position for each pixel from pos1, pos2, pos3.

    +
    - + - + + +
    Parameters:filename – read an OpenCL file and apply a preprocessor
    Parameters:
      +
    • L – distance sample - PONI
    • +
    • poni1 – PONI coordinate along y axis
    • +
    • poni2 – PONI coordinate along x axis
    • +
    • rot1 – angle1
    • +
    • rot2 – angle2
    • +
    • rot3 – angle3
    • +
    • pos1 – numpy array with distances in meter along dim1 from PONI (Y)
    • +
    • pos2 – numpy array with distances in meter along dim2 from PONI (X)
    • +
    • pos3 – numpy array with distances in meter along Sample->PONI (Z), positive behind the detector
    • +
    • space – can be “2th”, “q” or “r” for radial units. Azimuthal units are radians
    • +
    +
    Returns:preprocessed source code
    Returns:

    ndarray of double with same shape and size as pos1 + (2,),

    +
    Raise:

    KeyError when space is bad ! +ValueError when wavelength is missing

    +
    -
    -pyFAI.utils.relabel(label, data, blured, max_size=None)
    -

    Relabel limits the number of region in the label array. -They are ranked relatively to their max(I0)-max(blur(I0)

    +
    +pyFAI.ext._geometry.calc_tth(double L, double rot1, double rot2, double rot3, ndarray pos1, ndarray pos2, ndarray pos3=None)
    +

    Calculate the 2theta array (radial angle) in parallel

    - + +
    Parameters:
      -
    • label – a label array coming out of scipy.ndimage.measurement.label
    • -
    • data – an array containing the raw data
    • -
    • blured – an array containing the blured data
    • -
    • max_size – the max number of label wanted
    • +
    Parameters:
      +
    • L – distance sample - PONI
    • +
    • rot1 – angle1
    • +
    • rot2 – angle2
    • +
    • rot3 – angle3
    • +
    • pos1 – numpy array with distances in meter along dim1 from PONI (Y)
    • +
    • pos2 – numpy array with distances in meter along dim2 from PONI (X)
    • +
    • pos3 – numpy array with distances in meter along Sample->PONI (Z), positive behind the detector
    Returns:

    ndarray of double with same shape and size as pos1

    +
    -

    :return array like label

    +
    + +
    +
    +

    ext.histogram Module

    +

    Re-implementation of the numpy.histogram, optimized for azimuthal integration. +Deprecated, will be replaced by silx.math.histogramnd

    +

    Re-implementation of numpy histograms using OpenMP

    +
    +
    +pyFAI.ext.histogram.histogram(ndarray pos, ndarray weights, int bins=100, bin_range=None, pixelSize_in_Pos=None, nthread=None, double empty=0.0, double normalization_factor=1.0)
    +

    Calculates histogram of pos weighted by weights

    +

    @param pos: 2Theta array +@param weights: array with intensities +@param bins: number of output bins +@param pixelSize_in_Pos: size of a pixels in 2theta: DESACTIVATED +@param nthread: OpenMP is disabled. unused +@param empty: value given to empty bins +@param normalization_factor: divide the result by this value

    +

    @return 2theta, I, weighted histogram, raw histogram

    +
    + +
    +
    +pyFAI.ext.histogram.histogram2d(ndarray pos0, ndarray pos1, bins, ndarray weights, split=False, nthread=None, double empty=0.0, double normalization_factor=1.0)
    +

    Calculate 2D histogram of pos0,pos1 weighted by weights

    +

    @param pos0: 2Theta array +@param pos1: Chi array +@param weights: array with intensities +@param bins: number of output bins int or 2-tuple of int +@param split: pixel splitting is disabled in histogram +@param nthread: maximum number of thread to use. By default: maximum available. +@param empty: value given to empty bins +@param normalization_factor: divide the result by this value

    +

    @return I, edges0, edges1, weighted histogram(2D), unweighted histogram (2D)

    +

    One can also limit this with OMP_NUM_THREADS environment variable

    +
    + +
    +
    +

    ext.marchingsquares Module

    +

    The marchingsquares algorithm is used for calculating an iso-contour curve (displayed +on the screen while calibrating) but also to seed the points for the “massif” algoritm +during recalib.

    +

    Cythonized version of the marching square function for “isocontour” plot

    +
    +
    +pyFAI.ext.marchingsquares.isocontour(img, isovalue=None, sorted=False)
    +

    isocontour(img, isovalue=None)

    +

    Calculate the iso contours for the given 2D image. If isovalue +is not given or None, a value between the min and max of the image +is used.

    +

    @param img: 2D array representing the image +@param isovalue: the value for which the iso_contour shall be calculated +@param sorted: perform a sorting of the points to have them contiguous ?

    +

    Returns a pointset in which each two subsequent points form a line +piece. This van be best visualized using “vv.plot(result, ls=’+’)”.

    +
    + +
    +
    +pyFAI.ext.marchingsquares.marching_squares(__Pyx_memviewslice img, double isovalue, __Pyx_memviewslice cellToEdge, __Pyx_memviewslice edgeToRelativePosX, __Pyx_memviewslice edgeToRelativePosY)
    +
    + +
    +
    +pyFAI.ext.marchingsquares.sort_edges(edges)
    +

    Reorder edges in such a way they become contiguous

    +
    + +
    +
    +

    ext.morphology Module

    +

    The morphology extension provides a couple of binary morphology operations on images. +They are also implemented in scipy.ndimage in the general case, but not as fast.

    +

    A few binary morphology operation

    +
    +
    +pyFAI.ext.morphology.binary_dilation(__Pyx_memviewslice image, float radius=1.0)
    +

    Return fast binary morphological dilation of an image.

    +

    Morphological dilation sets a pixel at (i,j) to the maximum over all pixels in the neighborhood centered at (i,j). +Dilation enlarges bright regions and shrinks dark regions.

    +

    :param image : ndarray +:param radius: float +:return: ndiamge

    -
    -pyFAI.utils.removeSaturatedPixel(ds, threshold=0.1, minimum=None, maximum=None)
    -
    +
    +pyFAI.ext.morphology.binary_erosion(__Pyx_memviewslice image, float radius=1.0)
    +

    Return fast binary morphological erosion of an image.

    +

    Morphological erosion sets a pixel at (i,j) to the minimum over all pixels +in the neighborhood centered at (i,j). +Erosion shrinks bright regions and enlarges dark regions.

    +

    :param image : ndarray +:param radius: float +:return: ndiamge

    +
    + + +
    +

    ext.reconstruct Module

    +

    Very simple inpainting module for reconstructing the missing part of an image (masked) +to be able to use more common algorithms.

    +

    Cython module to reconstruct the masked values of an image

    +
    +
    +pyFAI.ext.reconstruct.reconstruct(ndarray data, ndarray mask=None, dummy=None, delta_dummy=None)
    +

    reconstruct missing part of an image (tries to be continuous)

    +
    -
    Parameters:
      -
    • ds – a dataset as ndarray
    • -
    • threshold – what is the upper limit? all pixel > max*(1-threshold) are discareded.
    • -
    • minimum – minumum valid value (or True for auto-guess)
    • -
    • maximum – maximum valid value
    • +
    • data – the input image
    • +
    • mask – where data should be reconstructed.
    • +
    • dummy – value of the dummy (masked out) data
    • +
    • delta_dummy – precision for dummy values
    Returns:

    another dataset

    +
    Returns:

    reconstructed image.

    +
    +
    +

    ext.relabel Module

    +

    Relabel regions, used to flag from largest regions to the smallest

    +

    A module to relabel regions

    -
    -pyFAI.utils.roundfft(N)
    -

    This function returns the integer >=N for which size the Fourier analysis is faster (fron the FFT point of view) -Credit: Alessandro Mirone, ESRF, 2012

    +
    +pyFAI.ext.relabel.countThem(ndarray label, ndarray data, ndarray blured)
    +

    Count +:param label: 2D array containing labeled zones +:param data: 2D array containing the raw data +:param blured: 2D array containing the blured data +:return: 2D arrays containing:

    +
    +
      +
    • count pixels in labelled zone: label == index).sum()
    • +
    • max of data in that zone: data[label == index].max()
    • +
    • max of blured in that zone: blured[label == index].max()
    • +
    • data-blured where data is max.
    • +
    +
    +
    + +
    +
    +

    ext.preproc Module

    +

    Contains a preprocessing function in charge of the dark-current subtraction, +flat-field normalization, ... taking care of masked values and normalization.

    +
    +
    +pyFAI.ext.preproc.preproc(data, dark=None, flat=None, solidangle=None, polarization=None, absorption=None, mask=None, dummy=None, delta_dummy=None, float normalization_factor=1.0, empty=None)
    +

    Common preprocessing step for all

    - - - +
    Parameters:N – interger on which one would like to do a Fourier transform
    Returns:integer with a better choice
    Parameters:
      +
    • data – raw value, as a numpy array, 1D or 2D
    • +
    • mask – array non null where data should be ignored
    • +
    • dummy – value of invalid data
    • +
    • delta_dummy – precision for invalid data
    • +
    • dark – array containing the value of the dark noise, to be subtracted
    • +
    • flat – Array containing the flatfield image. It is also checked for dummies if relevant.
    • +
    • solidangle – the value of the solid_angle. This processing may be performed during the rebinning instead. left for compatibility
    • +
    • polarization – Correction for polarization of the incident beam
    • +
    • absorption – Correction for absorption in the sensor volume
    • +
    • normalization_factor – final value is divided by this
    • +
    • empty – value to be given for empty bins
    • +
    +
    +

    All calculation are performed in single precision floating point.

    +

    NaN are always considered as invalid

    +

    if neither empty nor dummy is provided, empty pixels are 0

    -
    -
    -pyFAI.utils.shift(input_img, shift_val)
    -

    Shift an array like scipy.ndimage.interpolation.shift(input_img, shift_val, mode=”wrap”, order=0) but faster -:param input_img: 2d numpy array -:param shift_val: 2-tuple of integers -:return: shifted image

    +
    +
    +

    ext._tree Module

    +

    The tree is used in file hierarchy tree for the diff_map graphical user interface.

    +
    +
    +class pyFAI.ext._tree.TreeItem
    +

    Bases: object

    +

    TreeItem(str label=None, TreeItem parent=None)

    +

    Node of a tree ...

    +

    Each node contains:

    +
    +
      +
    • children: list
    • +
    • parent: TreeItem parent
    • +
    • label: str
    • +
    • order: int
    • +
    • type: str can be “dir”, “file”, “group” or “dataset”
    • +
    • extra: any object
    • +
    +
    +
    +
    +__init__
    +

    x.__init__(...) initializes x; see help(type(x)) for signature

    -
    -
    -pyFAI.utils.shiftFFT(input_img, shift_val, method='fftw')
    -

    Do shift using FFTs -Shift an array like scipy.ndimage.interpolation.shift(input, shift, mode=”wrap”, order=”infinity”) but faster -:param input_img: 2d numpy array -:param shift_val: 2-tuple of float -:return: shifted image

    +
    +
    +add_child(self, TreeItem child)
    +
    + +
    +
    +children
    +

    children: list

    -
    -
    -pyFAI.utils.str_(val)
    -

    Convert anything to a string ... but None -> “”

    +
    +
    +extra
    +

    extra: object

    -
    -
    -pyFAI.utils.unBinning(binnedArray, binsize, norm=True)
    +
    +
    +first(self) → TreeItem
    +
    + +
    +
    +get(self, str label) → TreeItem
    +
    + +
    +
    +has_child(self, str label) → bool
    +
    + +
    +
    +label
    +

    label: str

    +
    + +
    +
    +last(self) → TreeItem
    +
    + +
    +
    +name
    +
    + +
    +
    +next(self) → TreeItem
    +
    + +
    +
    +order
    +

    order: ‘int’

    +
    + +
    +
    +parent
    +

    parent: pyFAI.ext._tree.TreeItem

    +
    + +
    +
    +previous(self) → TreeItem
    +
    + +
    +
    +size
    +
    + +
    +
    +sort(self)
    +
    + +
    +
    +type
    +

    type: str

    +
    + +
    +
    +update(self, TreeItem new_root)
    +

    Add new children in tree

    +
    + +
    + +
    +
    +

    ext.watershed Module

    +

    Peak peaking via inverse watershed for connecting region of high intensity

    +

    Inverse watershed for connecting region of high intensity

    +
    +
    +class pyFAI.ext.watershed.Bilinear
    +

    Bases: object

    +

    Bilinear interpolator for finding max.

    +

    Instance attribute defined in pxd file

    +
    +
    +cp_local_maxi(self, size_t x) → size_t
    +
    + +
    +
    +data
    +
    + +
    +
    +f_cy(self, x)
    +

    Function f((y,x)) where f is a continuous function (y,x) are pixel coordinates +@param x: 2-tuple of float +@return: Interpolated signal from the image (negative for minimizer)

    +
    + +
    +
    +height
    +
    + +
    +
    +local_maxi(self, x)
    +

    Return the local maximum ... with sub-pixel refinement

    +

    @param x: 2-tuple of integers +@param w: half with of the window: 1 or 2 are advised +@return: 2-tuple of float with the nearest local maximum

    +

    Sub-pixel refinement: +Second order Taylor expansion of the function; first derivative is null +delta = x-i = -Inverse[Hessian].gradient

    +

    if Hessian is singular or |delta|>1: use a center of mass.

    +
    + +
    +
    +maxi
    +
    + +
    +
    +mini
    +
    + +
    +
    +width
    +
    + +
    + +
    +
    +class pyFAI.ext.watershed.InverseWatershed(self, data, thres=1.0)
    +

    Bases: object

    +

    Idea:

    +
      +
    • label all peaks
    • +
    • define region around those peaks which raise always to this peak
    • +
    • define the border of such region
    • +
    • search for the pass between two peaks
    • +
    • merge region with high pass between them
    • +
    +
    +
    +NAME = 'Inverse watershed'
    +
    + +
    +
    +VERSION = '1.0'
    +
    + +
    +
    +__init__(self, data, thres=1.0)
    - - - +
    Parameters:
      -
    • binnedArray – input ndarray
    • -
    • binsize – 2-tuple representing the size of the binning
    • -
    • norm – if True (default) decrease the intensity by binning factor. If False, it is non-conservative
    • -
    -
    Returns:

    unBinned input ndarray

    -
    Parameters:data – 2d image as numpy array
    -
    -
    -

    gui_utils Module

    -

    gui_utils

    -

    Module to handle matplotlib and the Qt backend

    -
    -
    -class pyFAI.gui_utils.Event(width, height)
    -

    Bases: object

    -

    Dummy class for dummy things

    +
    +
    +init(self)
    +
    + +
    +
    +init_borders(self)
    +
    + +
    +
    +init_labels(self)
    +
    + +
    +
    +init_pass(self)
    +
    + +
    +
    +init_regions(self)
    +
    + +
    +
    +classmethod load(cls, fname)
    +

    Load data from a HDF5 file

    -
    -
    -pyFAI.gui_utils.maximize_fig(fig=None)
    -

    Try to set the figure fullscreen

    +
    +
    +merge_intense(self, thres=1.0)
    +

    Merge groups then (pass-mini)/(maxi-mini) >=thres

    -
    -
    -pyFAI.gui_utils.update_fig(fig=None)
    -

    Update a matplotlib figure with a Qt4 backend

    - +
    +
    +merge_singleton(self)
    +

    merge single pixel region

    +
    + +
    +
    +merge_twins(self)
    +

    Twins are two peak region which are best linked together: +A -> B and B -> A

    +
    + +
    +
    +peaks_from_area(self, mask, Imin=None, keep=None, bool refine=True, float dmin=0.0, **kwarg)
    +
    - +
    Parameters:fig – pylab figure
    Parameters:
      +
    • mask – mask of data points valid
    • +
    • Imin – Minimum intensity for a peak
    • +
    • keep – Number of points to keep
    • +
    • refine – refine sub-pixel position
    • +
    • dmin – minimum distance from
    • +
    +
    +
    +
    +save(self, fname)
    +

    Save all regions into a HDF5 file

    +
    + +
    + +
    +
    +class pyFAI.ext.watershed.Region
    +

    Bases: object

    +
    +
    +border
    +
    + +
    +
    +get_borders(self)
    +
    + +
    +
    +get_highest_pass(self)
    +
    + +
    +
    +get_index(self)
    +
    + +
    +
    +get_maxi(self)
    +
    + +
    +
    +get_mini(self)
    +
    + +
    +
    +get_neighbors(self)
    +
    + +
    +
    +get_pass_to(self)
    +
    + +
    +
    +get_size(self)
    +
    + +
    +
    +highest_pass
    +
    + +
    +
    +index
    +
    + +
    +
    +init_values(self, __Pyx_memviewslice flat)
    +

    Initialize the values : maxi, mini and pass both height and so on +:param flat: flat view on the data (intensity) +:return: True if there is a problem and the region should be removed

    +
    + +
    +
    +maxi
    +
    + +
    +
    +merge(self, Region other)
    +

    merge 2 regions

    +
    + +
    +
    +mini
    +
    + +
    +
    +neighbors
    +
    + +
    +
    +pass_to
    +
    + +
    +
    +peaks
    +
    + +
    +
    +size
    +
    + +
    +
    @@ -8891,7 +11988,9 @@

    worker<

    Table Of Contents

    Previous topic

    @@ -8959,7 +12072,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • pyFAI API »
  • diff --git a/doc/build/biblio.html b/doc/build/biblio.html index c4b8ed2cc..83a828efb 100644 --- a/doc/build/biblio.html +++ b/doc/build/biblio.html @@ -6,7 +6,7 @@ - <no title> — pyFAI 0.12.0 documentation + Bibliography — pyFAI 0.13.0 documentation @@ -14,7 +14,7 @@ - + @@ -40,7 +40,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • @@ -49,7 +49,9 @@

    Navigation

    - +
    +

    Bibliography

    +
    [SRI2012]PyFAI, a versatile library for azimuthal regrouping @@ -200,6 +202,7 @@

    Navigation

    http://dx.doi.org/10.1107/S1600576714019773
    +
    @@ -244,7 +247,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • @@ -63,8 +63,8 @@

    Navigation

    normal incidence) which is subsequently used for processing the experiment.

    The program pyFAI-calib is used for calibrating the experimental setup using a constrained least squares optimization on -the Debye-Scherrer rings of a reference sample (\(LaB_6\), \(CeO_2\), silver -behenate \(AgBh\), …) and saves the results into a .poni file. +the Debye-Scherrer rings of a reference sample (LaB_6, CeO_2, silver +behenate AgBh, …) and saves the results into a .poni file. Alternatively, geometries calibrated using Fit2D can be imported into pyFAI, including geometric distortions (i.e. optical-fiber tapers distortion) described as spline-files. @@ -75,9 +75,10 @@

    Navigation

    While entering the geometry of the experiment in a poni-file is possible, it is easier to perform a calibration, using the Debye-Sherrer rings of a reference sample called calibrant. -About 30 calibrants are provided by pyFAI like \(LaB_6\), ceria \(CeO_2\), +About 30 calibrants are provided by pyFAI like LaB_6, ceria CeO_2, silicon, corrundum or silver behenate. -Among other simple compound, all of the NIST Standard Reference Materials +Among other simple compound, all of the NIST +Standard Reference Materials have been are tabulated and are directly available as calibrant. One can alternatively provide its own calibrant description files which is a simple text-file containing the largest d-spacing (in Angstrom) for a set of @@ -88,16 +89,29 @@

    Navigation

    Pre-processing of images:

    The typical pre-processing consists of the averaging (or better median filtering) of darks images. -Dark current images are then subtracted from data and corrected for flat.

    +Dark current images are then subtracted from data and corrected for flat. +The pre-processing is best performed using the pyFAI-average tool, which documentation +is available in the pyFAI scripts manual.

    If saturated pixels exists, the are likely to be treated like peaks but their positions will be wrong. It is advised to either mask them out or to desaturate them (pyFAI provides an option, -but it is expensive in calculation time).

    +but it is expensive in calculation time). +A Mask drawing tool, called pyFAI-drawmask, is installed together with pyFAI and +its documentation available in the pyFAI scripts manual.

    +

    To start the calibration the pyFAI-calib tool will need:

    +
      +
    • an image with Debye-Sherrer rings
    • +
    • the energy or the wavelength
    • +
    • the calibrant name or the d-spacing file of the calibrant
    • +
    • the detector description.
    • +

    Peak-picking

    -

    The Peak-picking consists in the identification of peaks and groups of peaks -belonging to same ring. It can be performed by 4 methods described hereafter.

    +

    Once started, pyFAI-calib will ask you to select rings. +The Peak-picking consists in the identification of peaks and groups of peaks +belonging to same ring. +It can be performed by 4 methods described hereafter.

    Massif detection

    This method consists in making the difference of the original image and a blurred @@ -133,7 +147,8 @@

    Monte-Carlo sampling

    Refinement of the parameters

    After selecting groups of peaks, each of them is assigned to a Debye-Scherrer ring number -and associated to a d-spacing value hence a theoritcal 2theta value. +(0-based numbering in python) +and associated to a d-spacing value hence a theoretical 2theta value. A supervised least-squares refinement, performed on the difference of peak position’s 2-theta values versus the expected ones from calibrant provides the 6-geometry parameters fitted.

    @@ -153,7 +168,7 @@

    Validation of the calibration previous | -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • General introduction to PyFAI »
  • diff --git a/doc/build/changelog.html b/doc/build/changelog.html index f4e7f47e9..bd7cd0c3a 100644 --- a/doc/build/changelog.html +++ b/doc/build/changelog.html @@ -6,7 +6,7 @@ - ChangeLog of Versions — pyFAI 0.12.0 documentation + ChangeLog of Versions — pyFAI 0.13.0 documentation @@ -14,7 +14,7 @@ - + @@ -44,7 +44,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • @@ -56,7 +56,63 @@

    Navigation

    ChangeLog of Versions

    -

    0.12.0: 06/2016

    +

    0.13.0: 01/12/2016

    +
      +
    • Global improvement of tests, packaging, code quality, documentation and project tools

      +
    • +
    • +
      Scripts
      +
        +
      • Add support for multiframe formats on pyFAI-average
      • +
      • Add support for monitoring correction from header file (on pyFAI-average)
      • +
      • Add progressbar in the shell (on pyFAI-average and pyFAI-integrate)
      • +
      • Script drawMask_pymca is renamed into pyFAI-drawmask
      • +
      • Rework of the drawmask GUI using silx
      • +
      • pyFAI-drawmask do not have anymore hard dependency on PyMCA
      • +
      • pyFAI-integrate can now be used without qt dependency (–no-gui)
      • +
      • Fix the script to support both Python 2 and 3 (pyFAI-calib, pyFAI-benchmark)
      • +
      • Fix selection of units on diff-map (the user selection was not propagated)
      • +
      +
      +
      +
    • +
    • +
      For users
      +
        +
      • More source code in MIT license
      • +
      • Update name and specification for cameras
      • +
      • Add cameras: Eiger500k, RaspberryPi5M, RaspberryPi8M
      • +
      • Fix Xpad S540 flat detector geometry
      • +
      • Fix definition of CeO2 calibrant
      • +
      • Add mask and flat on multi-geometry
      • +
      • Fix solid angle of the multi-geometry
      • +
      • Fix geometry processing for custom output space
      • +
      • Fix normalization factor and variance
      • +
      • Add support for Qt5
      • +
      • Add support for Debian 9 packaging
      • +
      +
      +
      +
    • +
    • +
      For developers
      +
        +
      • Create common preprocessing for distortion correction
      • +
      • Create common image preprocessing using Cython (NaN filter, flatfield, dark, polarisation)
      • +
      • Refactoring of units module. It allows to register custom units.
      • +
      • Worker can now use Writer
      • +
      • Worker polarization argument is renamed into polarization_factor
      • +
      • Remove the dependency from python-fftw3, use numpy instead
      • +
      • Remove QtWebKit dependency
      • +
      • Fix un-correction of images using sparse matrix from scipy
      • +
      +
      +
      +
    • +
    +
    +
    +

    0.12.0: 06/06/2016

    @@ -170,8 +181,6 @@

    Pixel splitting

    References:

    -

    :: _integrate: http://pythonhosted.org/pyFAI/api/pyFAI.html#pyFAI.azimuthalIntegrator.AzimuthalIntegrator.integrate1d

    -

    :: _CSR: http://en.wikipedia.org/wiki/Sparse_matrix

    @@ -241,7 +250,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • Design of the Python Fast Azimuthal Integration library »
  • diff --git a/doc/build/design/index.html b/doc/build/design/index.html index a4e41821a..9be8835e6 100644 --- a/doc/build/design/index.html +++ b/doc/build/design/index.html @@ -6,7 +6,7 @@ - Design of the Python Fast Azimuthal Integration library — pyFAI 0.12.0 documentation + Design of the Python Fast Azimuthal Integration library — pyFAI 0.13.0 documentation @@ -14,7 +14,7 @@ - + @@ -44,7 +44,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • @@ -125,7 +125,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • @@ -61,7 +61,8 @@

    Simple detector
  • pixel 0 goes from position 0 m to 50e-6m and is centered at 25e-6 m.
  • @@ -69,7 +70,7 @@

    Simple detector

    Complex detectors

    @@ -86,20 +87,20 @@

    Complex detectors

    Detectors classes

    They are used to define families of detectors. In order to take the specificities of each detector into account, pyFAI -contains about 55 detector class definitions (and twice a much with aliases) +contains about 58 detector class definitions (and 168 with aliases) which contain a mask (invalid pixels, gaps, ...) and a method to calculate the pixel positions in Cartesian coordinates. Available detectors can be printed using:

    -
    import pyFAI
    -print(pyFAI.detectors.ALL_DETECTORS)
    +
    >>> import pyFAI
    +>>> print(pyFAI.detectors.ALL_DETECTORS)
     
    -

    For optically coupled CCD detectors, the geometrical distortion is often +

    For optically coupled CCD detectors, the geometric distortion is often described by a bi-dimensional cubic spline which can be imported into the detector instance and be used to calculate the actual pixel position in space.

    @@ -120,7 +121,7 @@

    Nexus Detectors
    detector2nexus -s halfccd.spline -o halfccd.h5
    +
    +

    @@ -143,10 +145,10 @@

    ConclusionTutorials on detector definition which will help -you understanding the mechanisme :

    +you understanding the underlying mechanism:

      -
    • Distortion which explains how to correct images for geometric distortion
    • -
    • CCD-calibration which explains how to calibrate a detector for geometric +
    • Distortion which explains how to correct images for geometric distortion
    • +
    • CCD-calibration which explains how to calibrate such detectors for geometric distortion.

    @@ -211,7 +213,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • General introduction to PyFAI »
  • diff --git a/doc/build/ecosystem.html b/doc/build/ecosystem.html index b5c5bd05e..a069e4ca5 100644 --- a/doc/build/ecosystem.html +++ b/doc/build/ecosystem.html @@ -6,7 +6,7 @@ - PyFAI Ecosystem — pyFAI 0.12.0 documentation + PyFAI Ecosystem — pyFAI 0.13.0 documentation @@ -14,7 +14,7 @@ - + @@ -44,7 +44,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »
  • @@ -179,6 +179,24 @@

    PySAXSPyPI.

    +
    +

    Xi-cam

    +

    Xi-cam is developed by Ronald +Pandolfi, Dinesh Kumar, Singanallur Venkatakrishnan and Alexander Hexemer at ALS.

    +

    Xi-cam aims to provide a community driven platform for multimodal analysis +in synchrotron science. The platform core provides a robust plugin +infrastructure for extensibility, allowing continuing development to simply +add further functionality. Current modules include tools for +characterization with (GI)SAXS, Tomography, and XAS. This will continue to +serve as a development base as algorithms for multimodal analysis develop.

    +

    Seamless remote data access, visualization and analysis are key elements of +Xi-CAM, and will become critical to synchrotron data infrastructure as +expectations for future data volume and acquisition rates rise with +continuously increasing throughputs. The highly interactive design elements +of Xi-cam will similarly support a generation of users which depend on +immediate data quality feedback during high-throughput or burst acquisition +modes.

    +

    xPDFsuite

    Developed by the Billinge Group, this commercial software is described in @@ -222,6 +240,7 @@

    Table Of Contents

  • NanoPeakCell
  • pygix
  • PySAXS
  • +
  • Xi-cam
  • xPDFsuite
  • @@ -272,7 +291,7 @@

    Navigation

  • previous |
  • -
  • pyFAI 0.12.0 documentation »
  • +
  • pyFAI 0.13.0 documentation »