def normalize_bin_edges(num_times, num_rois, mean_roi, max_cts): """ This will provide the normalized bin edges and bin centers for each integration time. Parameters ---------- num_times : int number of integration times for XSVS num_rois : int number of ROI's mean_roi : array mean intensity of each ROI shape (number of ROI's) max_cts : int maximum pixel counts Returns ------- norm_bin_edges : array normalized speckle count bin edges shape (num_times, num_rois) norm_bin_centers :array normalized speckle count bin centers shape (num_times, num_rois) """ norm_bin_edges = np.zeros((num_times, num_rois), dtype=object) norm_bin_centers = np.zeros_like(norm_bin_edges) for i in range(num_times): for j in range(num_rois): norm_bin_edges[i, j] = np.arange( max_cts * 2**i) / (mean_roi[j] * 2**i) norm_bin_centers[i, j] = bin_edges_to_centers(norm_bin_edges[i, j]) return norm_bin_edges, norm_bin_centers
def normalize_bin_edges(num_times, num_rois, mean_roi, max_cts): """ This will provide the normalized bin edges and bin centers for each integration time. Parameters ---------- num_times : int number of integration times for XSVS num_rois : int number of ROI's mean_roi : array mean intensity of each ROI shape (number of ROI's) max_cts : int maximum pixel counts Returns ------- norm_bin_edges : array normalized speckle count bin edges shape (num_times, num_rois) norm_bin_centers :array normalized speckle count bin centers shape (num_times, num_rois) """ norm_bin_edges = np.zeros((num_times, num_rois), dtype=object) norm_bin_centers = np.zeros_like(norm_bin_edges) for i in range(num_times): for j in range(num_rois): norm_bin_edges[i, j] = np.arange(max_cts*2**i)/(mean_roi[j]*2**i) norm_bin_centers[i, j] = bin_edges_to_centers(norm_bin_edges[i, j]) return norm_bin_edges, norm_bin_centers
def circular_average(image, calibrated_center, threshold=-1, nx=None, pixel_size=None, mask=None): """Circular average of the the image data The circular average is also known as the radial integration Parameters ---------- image : array Image to compute the average as a function of radius calibrated_center : tuple The center of the image in pixel units argument order should be (row, col) threshold : int, optional Ignore counts above `threshold` nx : int, optional Number of bins in R. Defaults to 100 pixel_size : tuple, optional The size of a pixel (in a real unit, like mm). argument order should be (pixel_height, pixel_width) Returns ------- bin_centers : array The center of each bin in R. shape is (nx, ) ring_averages : array Radial average of the image. shape is (nx, ). """ radial_val = utils.radial_grid(calibrated_center, image.shape, pixel_size) if nx is None: ps = np.min(pixel_size) max_x = np.max(radial_val) / ps min_x = np.min(radial_val) / ps nx = int(max_x - min_x) #print (nx) if mask is None: mask = 1 bin_edges, sums, counts = bin_1D(np.ravel(radial_val * mask), np.ravel(image * mask), nx) th_mask = counts > threshold ring_averages = sums[th_mask] / counts[th_mask] bin_centers = utils.bin_edges_to_centers(bin_edges)[th_mask] return bin_centers, ring_averages
def circular_average(image, calibrated_center, threshold=-1, nx=None, pixel_size=None, mask=None): """Circular average of the the image data The circular average is also known as the radial integration Parameters ---------- image : array Image to compute the average as a function of radius calibrated_center : tuple The center of the image in pixel units argument order should be (row, col) threshold : int, optional Ignore counts above `threshold` nx : int, optional Number of bins in R. Defaults to 100 pixel_size : tuple, optional The size of a pixel (in a real unit, like mm). argument order should be (pixel_height, pixel_width) Returns ------- bin_centers : array The center of each bin in R. shape is (nx, ) ring_averages : array Radial average of the image. shape is (nx, ). """ radial_val = utils.radial_grid(calibrated_center, image.shape, pixel_size ) if nx is None: ps =np.min( pixel_size ) max_x = np.max(radial_val)/ps min_x = np.min(radial_val)/ps nx = int(max_x - min_x) #print (nx) if mask is None: mask =1 bin_edges, sums, counts = bin_1D(np.ravel(radial_val * mask ), np.ravel(image * mask), nx) th_mask = counts > threshold ring_averages = sums[th_mask] / counts[th_mask] bin_centers = utils.bin_edges_to_centers(bin_edges)[th_mask] return bin_centers, ring_averages
def test_bin_edge2center(): test_edges = np.arange(11) centers = core.bin_edges_to_centers(test_edges) assert_array_almost_equal(.5, centers % 1) assert_equal(10, len(centers))