示例#1
0
# program.s32_to_float(queue, global_size, (workgroup_size,), d_image.data, d_image_float)  # Pilatus1M
program.u16_to_float(queue, global_size, (workgroup_size,), d_image.data, d_image_float)  # halfccd

program.integrate1(queue, global_size, (workgroup_size,), d_pos.data, d_image_float, d_minmax, numpy.int32(data.size), d_outData, d_outCount)

cl.enqueue_copy(queue, outData, d_outData)
cl.enqueue_copy(queue, outCount, d_outCount)
cl.enqueue_copy(queue, outMerge, d_outMerge)

program.integrate2(queue, (1024,), (workgroup_size,), d_outData, d_outCount, d_outMerge)

cl.enqueue_copy(queue, outData, d_outData)
cl.enqueue_copy(queue, outCount, d_outCount)
cl.enqueue_copy(queue, outMerge, d_outMerge)



ref = ai.xrpd_LUT(data, bins, correctSolidAngle=False)
test = splitPixelFull.fullSplit1D(pos, data, bins)

# assert(numpy.allclose(ref,outMerge))

# plot(outMerge, label="ocl_hist")
plot(ref[0], test[1], label="splitPixelFull")
plot(ref[0], ref[1], label="ref")
# plot(abs(ref-outMerge)/outMerge, label="ocl_csr_fullsplit")
legend()
show()
input()

#!/usr/bin/python

import pyFAI
import numpy
from pyFAI import splitPixelFull, splitPixel

ai = pyFAI.AzimuthalIntegrator(detector="Fairchild")
shape = (2048, 2048)
data = numpy.zeros(shape)
data[100, 200] = 1

tth, I = ai.integrate1d(data, 10000, correctSolidAngle=False, method="splitpixel", unit="2th_deg")

res_splitPixelFull = splitPixelFull.fullSplit1D(ai._corner4Da, data, bins=10000)
res_splitPixel = splitPixel.fullSplit1D(ai._corner4Da, data, bins=10000)

for i, ary in enumerate(("tth", "I", "unweight", "weight")):
    print("Error on %s: %s" % (i, abs(res_splitPixelFull[i] - res_splitPixel[i]).max()))
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
import utilstest
import pyFAI
import numpy
from pyFAI import splitPixelFull, splitPixel

ai = pyFAI.AzimuthalIntegrator(detector="Fairchild")
shape = (2048, 2048)
data = numpy.zeros(shape)
data[100, 200] = 1

tth, I = ai.integrate1d(data,
                        10000,
                        correctSolidAngle=False,
                        method="splitpixel",
                        unit="2th_deg")

res_splitPixelFull = splitPixelFull.fullSplit1D(ai._corner4Da,
                                                data,
                                                bins=10000)
res_splitPixel = splitPixel.fullSplit1D(ai._corner4Da, data, bins=10000)

for i, ary in enumerate(("tth", "I", "unweight", "weight")):
    print("Error on %s: %s" %
          (i, abs(res_splitPixelFull[i] - res_splitPixel[i]).max()))
# program.s32_to_float(queue, global_size, (workgroup_size,), d_image.data, d_image_float)  # Pilatus1M
program.u16_to_float(queue, global_size, (workgroup_size,), d_image.data, d_image_float)  # halfccd

program.integrate1(queue, global_size, (workgroup_size,), d_pos.data, d_image_float, d_minmax, numpy.int32(data.size), d_outData, d_outCount)

cl.enqueue_copy(queue, outData, d_outData)
cl.enqueue_copy(queue, outCount, d_outCount)
cl.enqueue_copy(queue, outMerge, d_outMerge)

program.integrate2(queue, (1024,), (workgroup_size,), d_outData, d_outCount, d_outMerge)

cl.enqueue_copy(queue, outData, d_outData)
cl.enqueue_copy(queue, outCount, d_outCount)
cl.enqueue_copy(queue, outMerge, d_outMerge)



ref = ai.xrpd_LUT(data, bins, correctSolidAngle=False)
test = splitPixelFull.fullSplit1D(pos, data, bins)

# assert(numpy.allclose(ref,outMerge))

# plot(outMerge, label="ocl_hist")
plot(ref[0], test[1], label="splitPixelFull")
plot(ref[0], ref[1], label="ref")
# plot(abs(ref-outMerge)/outMerge, label="ocl_csr_fullsplit")
legend()
show()
six.moves.input()