def _process_data(input_task, output_task, sinograms, slices): import ufo.numpy as unp num_sinograms, num_projections, width = sinograms.shape for i in range(num_sinograms): if i == 0: data = unp.empty_like(sinograms[i, :, :]) else: data = input_task.get_input_buffer() # Set host array pointer and use that as first input data.set_host_array(sinograms[i, :, :].__array_interface__['data'][0], False) input_task.release_input_buffer(data) # Get last output and copy result back into NumPy buffer data = output_task.get_output_buffer() array = unp.asarray(data) frm = int(array.shape[0] / 2 - width / 2) to = int(array.shape[0] / 2 + width / 2) slices[i, :, :] = array[frm:to, frm:to] output_task.release_output_buffer(data) input_task.stop()
def _process_data(input_task, output_task, sinograms, slices): import ufo.numpy as unp num_sinograms, num_projections, width = sinograms.shape for i in range(num_sinograms): if i == 0: data = unp.empty_like(sinograms[i, :, :]) else: data = input_task.get_input_buffer() # Set host array pointer and use that as first input data.set_host_array( sinograms[i, :, :].__array_interface__['data'][0], False) input_task.release_input_buffer(data) # Get last output and copy result back into NumPy buffer data = output_task.get_output_buffer() array = unp.asarray(data) frm = int(array.shape[0] / 2 - width / 2) to = int(array.shape[0] / 2 + width / 2) slices[i, :, :] = array[frm:to, frm:to] output_task.release_output_buffer(data) input_task.stop()