def plot_image(gaussians, title="", with_axis=True, xlim=None, ylim=None, colorschemes=color_schemes.get_colorbrewer_schemes(),legend_lw=2, *args, **kwargs): """ :param with_axis: if mathematical axis is shown or not :param images: List of List of 2D-images in rgb to plot :param gaussians: [gaussian_1, ... , gaussian_n] gaussians from which the image is calculated :param title: title of picture :return: """ fig, axis = plt.subplots(1, len(gaussians), sharex='col', sharey='row') limits = helper.get_limits(gaussians, xlim, ylim) extent = [limits.x_min, limits.x_max, limits.y_min, limits.y_max] z_list = helper.generate_distribution_grids(gaussians, limits=limits) z_min, z_max, z_sum = helper.generate_weights(z_list) colors = color_schemes.get_representiv_colors(colorschemes) names = [chr(i + 65) for i in range(len(gaussians))] custom_lines = [Line2D([0], [0], color=colors[i], lw=legend_lw) for i in range(len(colors))] for i, gaussian in enumerate(gaussians): img, _ = picture_contours.calculate_image([z_list[i]], z_min, z_max, z_sum, [colorschemes[i]], *args, **kwargs) axis[i].imshow(img, extent=extent, origin='lower') if title == "" and gaussians: title = str(gaussian.get_attributes()[4:-1]) axis[i].set_title(title) axis[i].legend([custom_lines[i]], [names[i]], frameon=False) if not with_axis: axis.axis("off") fig.subplots_adjust(wspace=0.1)
def test_calculate_image_z_values_mode_hierarchic(self): expection = [ 0.4, 0.3, 0.3, 0.1, 0.3, 0.26, 0.26, 0.1, 0.3, 0.3, 0.26, 0.1, 0.2, 0.26, 0.2, 0.1, 0.1, 0.4, 0.4, 0.1 ] z_list = [[[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]]] z_min, z_max, = 0.1, 0.4 z_sum = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() _, z_new = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal", use_c_implementation=True, mode="hierarchic") np.testing.assert_almost_equal(expection, z_new.flatten())
def test_calculate_image_z_values_smallest_distribution_threshold(self): expection = [ 0.4, 0.3, 0.3, 0.1, 0.3, 0.26, 0.26, 0.1, 0.3, 0.3, 0.26, 0.1, 0.2, 0.2, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1 ] z_list = [[[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]]] z_min, z_max, = 0.1, 0.4 z_sum = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() _, z_new = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal", lower_border=40, min_gauss=True) np.testing.assert_almost_equal(expection, z_new.flatten())
def test_calculate_image_mode_alpha_sum_quad(self): expection = [ 5.32024152e-01, 1.68651638e-01, 1.56912529e-02, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 8.82734339e-01, 6.21739187e-01, 4.15755335e-01, 8.82734339e-01, 6.21739187e-01, 4.15755335e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 5.93287936e-01, 5.48320218e-01, 4.13175619e-01, 5.60209572e-01, 5.87508952e-01, 6.70029145e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 9.92155044e-01, 7.03294607e-01, 4.53602567e-01, 5.83604240e-01, 7.21023278e-01, 5.04883988e-01, 8.25209718e-01, 8.06722379e-01, 6.66468977e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 7.02745821e-06, 3.24189033e-01, 1.66017408e-01, 7.02745821e-06, 3.24189033e-01, 1.66017408e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00 ] z_list = [[[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]]] z_min, z_max, = 0.1, 0.4 z_sum = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() result, _ = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal", use_c_implementation=True, mode="alpha_sum_quad") np.testing.assert_almost_equal(expection, result.flatten())
def test_calculate_image_mode_alpha_sum(self): expection = [ 5.32024152e-01, 1.68651638e-01, 1.56912529e-02, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 8.62317137e-01, 6.67454582e-01, 4.82717490e-01, 8.62317137e-01, 6.67454582e-01, 4.82717490e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 9.30715624e-01, 3.85655726e-01, 6.66830259e-02, 5.93287936e-01, 5.48320218e-01, 4.13175619e-01, 6.28583961e-01, 6.02707444e-01, 6.43289740e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 9.92155044e-01, 7.03294607e-01, 4.53602567e-01, 6.45322800e-01, 7.32405248e-01, 5.37824601e-01, 8.25209718e-01, 8.06722379e-01, 6.66468977e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 7.02745821e-06, 3.24189033e-01, 1.66017408e-01, 7.02745821e-06, 3.24189033e-01, 1.66017408e-01, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00 ] z_list = [[[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]]] z_min, z_max, = 0.1, 0.4 z_sum = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() result, _ = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal", use_c_implementation=True, mode="alpha_sum") np.testing.assert_almost_equal(expection, result.flatten())
def test_calculate_image_mode_default(self): """ default should be hierarchic """ expection = [ 0.53202614, 0.16862745, 0.01568627, 0.93071895, 0.38562092, 0.06666667, 0.93071895, 0.38562092, 0.06666667, 1., 1., 1., 0.93071895, 0.38562092, 0.06666667, 0.89451024, 0.58912264, 0.36889634, 0.89451024, 0.58912264, 0.36889634, 1., 1., 1., 0.93071895, 0.38562092, 0.06666667, 0.52720176, 0.57970919, 0.39866916, 0.62858396, 0.60270744, 0.64328974, 1., 1., 1., 0.99215686, 0.70326797, 0.45359477, 0.53919441, 0.71270852, 0.48192737, 0.78778644, 0.82220669, 0.6597027, 1., 1., 1., 1., 1., 1., 0., 0.32418301, 0.16601307, 0., 0.32418301, 0.16601307, 1., 1., 1. ] z_list = [[[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]]] z_min, z_max, = 0.1, 0.4 z_sum = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() result, _ = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal", use_c_implementation=True, mode="default") np.testing.assert_almost_equal(expection, result.flatten())
def test_calculate_image_single(self): expection = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]] z_list = [[[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]]] z_min, z_max, = 0.1, 0.3 z_sum = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() _, z_new = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal") np.testing.assert_almost_equal(expection, z_new)
def test_calculate_image_z_values_multiple(self): """ default should be hierarchic """ expection = [ 0.4, 0.3, 0.3, 0.1, 0.3, 0.26, 0.26, 0.1, 0.3, 0.3, 0.26, 0.1, 0.2, 0.26, 0.2, 0.1, 0.1, 0.4, 0.4, 0.1 ] z_list = [[[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1]], [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]]] z_min, z_max, = 0.1, 0.4 z_sum = [[0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.3, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.4, 0.3, 0.3, 0.1], [0.3, 0.3, 0.3, 0.1], [0.3, 0.3, 0.2, 0.1], [0.2, 0.2, 0.2, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.2, 0.1], [0.1, 0.4, 0.4, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() _, z_new = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal") np.testing.assert_almost_equal(expection, z_new.flatten())
def test_calculate_image_constructed(self): expection = [ 1., 1., 1., 0.59361887, 0.39521946, 0.34250093, 0.48627451, 0.71895425, 0.85359477, 1., 1., 1., 1., 1., 1., 0.59361887, 0.39521946, 0.34250093, 0.48627451, 0.71895425, 0.85359477, 1., 1., 1., 1., 1., 1., 0.59361887, 0.39521946, 0.34250093, 0.48627451, 0.71895425, 0.85359477, 1., 1., 1., 1., 1., 1., 0.59361887, 0.39521946, 0.34250093, 0.48627451, 0.71895425, 0.85359477, 1., 1., 1., 1., 1., 1., 0.59361887, 0.39521946, 0.34250093, 0.48627451, 0.71895425, 0.85359477, 1., 1., 1. ] z_list = [[[0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1]], [[0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1]]] z_min, z_max, z_sum = 0.1, 0.3, [[0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.2, 0.2, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1], [0.1, 0.3, 0.1, 0.1]] colorschemes = color_schemes.get_colorbrewer_schemes() result, _ = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal") np.testing.assert_almost_equal(expection, result.flatten())
def test_calculate_image_real_small(self): expection = [ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.99618958, 0.93030094, 0.87203314, 0.47583421, 0.3521213, 0.47779367, 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.99607843, 0.91240782, 0.83172208, 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1. ] z_list = [[[ 7.35424658e-12, 1.79952481e-09, 1.34697725e-13, 3.08422074e-24, 2.16029678e-41 ], [ 1.21251028e-11, 6.53506479e-05, 1.07745003e-04, 5.43409406e-11, 8.38378119e-24 ], [ 6.11526724e-18, 7.25980122e-07, 2.63643330e-02, 2.92881285e-04, 9.95289044e-13 ], [ 9.43470281e-31, 2.46707488e-15, 1.97341857e-06, 4.82879604e-04, 3.61444219e-08 ], [ 4.45270353e-50, 2.56461812e-30, 4.51860527e-17, 2.43539199e-10, 4.01528258e-10 ]], [[ 1.36757424e-08, 4.97389608e-07, 1.66604650e-07, 5.13951507e-10, 1.46016450e-14 ], [ 1.73606032e-06, 3.01228273e-04, 4.81361410e-04, 7.08420997e-06, 9.60187826e-10 ], [ 2.02966014e-06, 1.68011641e-03, 1.28085521e-02, 8.99301508e-04, 5.81507366e-07 ], [ 2.18537742e-08, 8.63033452e-05, 3.13887068e-03, 1.05138998e-03, 3.24338767e-06 ], [ 2.16707627e-12, 4.08282253e-08, 7.08420997e-06, 1.13205353e-05, 1.66604650e-07 ]]] z_min, z_max, = 4.452703529915074e-50, 0.026364333048110374 z_sum = [[ 1.36830967e-08, 4.99189133e-07, 1.66604784e-07, 5.13951507e-10, 1.46016450e-14 ], [ 1.73607244e-06, 3.66578921e-04, 5.89106413e-04, 7.08426431e-06, 9.60187826e-10 ], [ 2.02966014e-06, 1.68084239e-03, 3.91728851e-02, 1.19218279e-03, 5.81508361e-07 ], [ 2.18537742e-08, 8.63033452e-05, 3.14084410e-03, 1.53426959e-03, 3.27953209e-06 ], [ 2.16707627e-12, 4.08282253e-08, 7.08420997e-06, 1.13207788e-05, 1.67006178e-07 ]] colorschemes = color_schemes.get_colorbrewer_schemes() result, _ = picture_contours.calculate_image(z_list, z_min, z_max, z_sum, colorschemes, method="normal") np.testing.assert_almost_equal(expection, result.flatten())