# 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()