def test_plot_2d_with_dimension_of_size_2(): a = sc.DataArray(data=sc.Variable(dims=['y', 'x'], shape=[2, 4]), coords={ 'x': sc.Variable(dims=['x'], values=[1, 2, 3, 4]), 'y': sc.Variable(dims=['y'], values=[1, 2]) }) plot(a)
def test_plot_customized_axes(): d = make_dense_dataset(ndim=3) plot(d["Sample"], projection="3d", xlabel="MyXlabel", ylabel="MyYlabel", zlabel="MyZlabel")
def test_plot_2d_with_decreasing_edges(): a = sc.DataArray(data=sc.Variable(dims=['y', 'x'], values=np.arange(12).reshape(3, 4)), coords={ 'x': sc.Variable(dims=['x'], values=[4, 3, 2, 1]), 'y': sc.Variable(dims=['y'], values=[1, 2, 3]) }) plot(a)
def test_plot_1d_two_entries_hide_variances(): d = make_dense_dataset(ndim=1, variances=True) d["Background"] = sc.Variable(['tof'], values=2.0 * np.random.rand(50), unit=sc.units.counts) plot(d, errorbars=False) # When variances are not present, the plot does not fail, is silently does # not show variances plot(d, errorbars={"Sample": False, "Background": True})
def test_plot_string_axis_labels_1d_short(): d = sc.Dataset() N = 5 d.coords[Dim.X] = sc.Variable(dims=[Dim.X], values=["a", "b", "c", "d", "e"], unit=sc.units.m) d["Sample"] = sc.Variable([Dim.X], values=np.random.rand(N), unit=sc.units.counts) plot(d)
def test_plot_4d_with_masks_projection_3d(): data = sc.DataArray(data=sc.Variable( dims=['pack', 'tube', 'straw', 'pixel'], values=np.random.rand(2, 8, 7, 256)), coords={}) a = np.sin(np.linspace(0, 3.14, num=256)) data += sc.Variable(dims=['pixel'], values=a) data.masks['tube_ends'] = sc.Variable(dims=['pixel'], values=np.where( a > 0.5, True, False)) plot(data, projection="3d")
def test_plot_string_axis_labels_1d(): d = sc.Dataset() N = 10 d.coords['x'] = sc.Variable( dims=['x'], values=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"], unit=sc.units.m) d["Sample"] = sc.Variable(['x'], values=np.random.rand(N), unit=sc.units.counts) plot(d)
def test_plot_2d_with_labels_but_no_dimension_coord(): N = 50 M = 10 y = np.arange(M).astype(np.float) z = np.random.random([M, N]) d = sc.Dataset() d.coords['y'] = sc.Variable(['y'], values=y, unit=sc.units.m) d['Signal'] = sc.Variable(['y', 'x'], values=z, unit=sc.units.kg) d.coords['somelabels'] = sc.Variable(['x'], values=np.linspace(101., 155., N), unit=sc.units.s) plot(d, axes=['y', 'somelabels'])
def test_plot_3d_data_ragged(): """ This test has caught MANY bugs and should not be disabled. """ d = make_dense_dataset(ndim=3, ragged=True) plot(d) # Also check that it raises an error if we try to have ragged coord along # slider dim with pytest.raises(RuntimeError) as e: plot(d, axes={'x': 'tof', 'y': 'x'}) assert str(e.value) == ("A ragged coordinate cannot lie along " "a slider dimension, it must be one of " "the displayed dimensions.")
def test_plot_2d_ragged_coord_x_and_y_edges(): N = 10 M = 5 x = np.arange(N).astype(np.float64) y = np.arange(M).astype(np.float64) xx, yy = np.meshgrid(x, y) z = np.random.random([M, N]) for i in range(M): xx[i] *= (i + 1.0) d = sc.Dataset() d.coords['x'] = sc.Variable(['y', 'x'], values=xx, unit=sc.units.m) d.coords['y'] = sc.Variable(['y'], values=y, unit=sc.units.m) d['a'] = sc.Variable(['y', 'x'], values=z, unit=sc.units.counts) plot(d)
def test_plot_vector_axis_labels_1d(): d = sc.Dataset() N = 10 vecs = [] for i in range(N): vecs.append(np.random.random(3)) d.coords[Dim.X] = sc.Variable([Dim.X], values=vecs, unit=sc.units.m, dtype=sc.dtype.vector_3_float64) d["Sample"] = sc.Variable([Dim.X], values=np.random.rand(N), unit=sc.units.counts) plot(d)
def test_plot_1d_three_entries_with_labels(): N = 50 d = make_dense_dataset(ndim=1, labels=True) d["Background"] = sc.Variable([Dim.Tof], values=2.0 * np.random.rand(N), unit=sc.units.counts) d.coords[Dim.X] = sc.Variable([Dim.X], values=np.arange(N).astype(np.float64), unit=sc.units.m) d["Sample2"] = sc.Variable([Dim.X], values=10.0 * np.random.rand(N), unit=sc.units.counts) d.labels["Xlabels"] = sc.Variable([Dim.X], values=np.linspace(151., 155., N), unit=sc.units.s) plot(d, axes={Dim.X: "Xlabels", Dim.Tof: "somelabels"})
def test_plot_from_dict_data_array_2d(): plot({ "data": { "dims": ["x", "y"], "values": np.random.random([20, 10]) }, "coords": { "x": { "dims": ["x"], "values": np.arange(21) }, "y": { "dims": ["y"], "values": np.arange(11) } } })
def test_plot_2d_ragged_coord_with_masks(): N = 10 M = 5 x = np.arange(N + 1).astype(np.float64) y = np.arange(M).astype(np.float64) xx, yy = np.meshgrid(x, y) z = np.random.random([M, N]) for i in range(M): xx[i] *= (i + 1.0) d = sc.Dataset() d.coords['x'] = sc.Variable(['y', 'x'], values=xx, unit=sc.units.m) d.coords['y'] = sc.Variable(['y'], values=y, unit=sc.units.m) d['a'] = sc.Variable(['y', 'x'], values=z, unit=sc.units.counts) d['a'].masks['b'] = sc.Variable(['y', 'x'], values=np.where(z < 0.5, True, False), dtype=bool) plot(d)
def test_sparse_data_slice_with_on_the_fly_histogram(): N = 50 M = 10 var = sc.Variable(dims=[Dim.X, Dim.Tof], shape=[M, sc.Dimensions.Sparse], unit=sc.units.us) for i in range(M): v = np.random.normal(50.0, scale=20.0, size=int(np.random.rand() * N)) var[Dim.X, i].values = v d = sc.Dataset() d.coords[Dim.X] = sc.Variable([Dim.X], values=np.arange(M), unit=sc.units.m) d['a'] = sc.DataArray(coords={Dim.Tof: var}) d['b'] = sc.DataArray(coords={Dim.Tof: var * 1.1}) plot(d[Dim.X, 4], bins=100)
def test_plot_2d_with_dimension_of_size_1(): N = 10 M = 1 x = np.arange(N, dtype=np.float64) y = np.arange(M, dtype=np.float64) z = np.arange(M + 1, dtype=np.float64) d = sc.Dataset() d.coords[Dim.X] = sc.Variable([Dim.X], values=x, unit=sc.units.m) d.coords[Dim.Y] = sc.Variable([Dim.Y], values=y, unit=sc.units.m) d.coords[Dim.Z] = sc.Variable([Dim.Z], values=z, unit=sc.units.m) d["a"] = sc.Variable([Dim.Y, Dim.X], values=np.random.random([M, N]), unit=sc.units.counts) d["b"] = sc.Variable([Dim.Z, Dim.X], values=np.random.random([M, N]), unit=sc.units.counts) plot(d["a"]) plot(d["b"])
def test_plot_string_and_vector_axis_labels_2d(): N = 10 M = 5 vecs = [] for i in range(N): vecs.append(np.random.random(3)) d = sc.Dataset() d.coords['x'] = sc.Variable(['x'], values=vecs, unit=sc.units.m, dtype=sc.dtype.vector_3_float64) d.coords['y'] = sc.Variable(['y'], values=['a', 'b', 'c', 'd', 'e'], unit=sc.units.m) d['Signal'] = sc.Variable(['y', 'x'], values=np.random.random([M, N]), unit=sc.units.counts) plot(d)
def test_plot_string_and_vector_axis_labels_2d(): N = 10 M = 5 vecs = [] for i in range(N): vecs.append(np.random.random(3)) d = sc.Dataset() d.coords[Dim.X] = sc.Variable([Dim.X], values=vecs, unit=sc.units.m, dtype=sc.dtype.vector_3_float64) d.coords[Dim.Y] = sc.Variable([Dim.Y], values=["a", "b", "c", "d", "e"], unit=sc.units.m) d["Signal"] = sc.Variable([Dim.Y, Dim.X], values=np.random.random([M, N]), unit=sc.units.counts) plot(d)
def test_plot_projection_3d_with_vectors(): N = 1000 M = 100 theta = np.random.random(N) * np.pi phi = np.random.random(N) * 2.0 * np.pi r = 10.0 + (np.random.random(N) - 0.5) x = r * np.sin(theta) * np.sin(phi) y = r * np.sin(theta) * np.cos(phi) z = r * np.cos(theta) tof = np.arange(M).astype(np.float) a = np.arange(M * N).reshape([M, N]) * np.sin(y) d = sc.Dataset() d.coords['xyz'] = sc.Variable(['xyz'], values=np.array([x, y, z]).T, dtype=sc.dtype.vector_3_float64) d.coords['tof'] = sc.Variable(['tof'], values=tof) d['a'] = sc.Variable(['tof', 'xyz'], values=a) plot(d, projection="3d", positions="xyz")
def test_plot_2d_with_dimension_of_size_1(): N = 10 M = 1 x = np.arange(N, dtype=np.float64) y = np.arange(M, dtype=np.float64) z = np.arange(M + 1, dtype=np.float64) d = sc.Dataset() d.coords['x'] = sc.Variable(['x'], values=x, unit=sc.units.m) d.coords['y'] = sc.Variable(['y'], values=y, unit=sc.units.m) d.coords['z'] = sc.Variable(['z'], values=z, unit=sc.units.m) d['a'] = sc.Variable(['y', 'x'], values=np.random.random([M, N]), unit=sc.units.counts) d['b'] = sc.Variable(['z', 'x'], values=np.random.random([M, N]), unit=sc.units.counts) plot(d['a']) plot(d['b'])
def test_plot_3d_data_with_ragged_bins(): N = 10 M = 8 L = 5 x = np.arange(N + 1).astype(np.float64) y = np.arange(M).astype(np.float64) z = np.arange(L).astype(np.float64) zz, yy, xx = np.meshgrid(z, y, x, indexing='ij') a = np.random.random([L, M, N]) for i in range(M): for j in range(L): xx[j, i, :] *= (i + j + 1.0) d = sc.Dataset() d.coords['x'] = sc.Variable(['z', 'y', 'x'], values=xx, unit=sc.units.m) d.coords['y'] = sc.Variable(['y'], values=y, unit=sc.units.m) d.coords['z'] = sc.Variable(['z'], values=z, unit=sc.units.m) d['a'] = sc.Variable(['z', 'y', 'x'], values=a, unit=sc.units.counts) plot(d)
def test_plot_sliceviewer_with_1d_projection_with_nans(): d = make_dense_dataset(ndim=3, binedges=True, variances=True) d['Sample'].values = np.where(d['Sample'].values < -0.8, np.nan, d['Sample'].values) d['Sample'].variances = np.where(d['Sample'].values < 0., np.nan, d['Sample'].variances) p = plot(d, projection='1d') # Move the sliders p['tof.x.y.counts']['widgets']['sliders']['tof'].value = 10 p['tof.x.y.counts']['widgets']['sliders']['x'].value = 10 p['tof.x.y.counts']['widgets']['sliders']['y'].value = 10
def test_plot_variable(): N = 50 v1d = sc.Variable([Dim.Tof], values=np.random.rand(N), unit=sc.units.counts) v2d = sc.Variable([Dim.Tof, Dim.X], values=np.random.rand(N, N), unit=sc.units.K) v3d = sc.Variable([Dim.Tof, Dim.X, Dim.Y], values=np.random.rand(N, N, N), unit=sc.units.m) plot(v1d) plot(v2d) plot(v3d)
def test_plot_3d_sparse_data(): d = make_sparse_dataset(ndim=3) plot(d)
def test_plot_data_array(): d = make_dense_dataset(ndim=1) plot(d["Sample"])
def test_plot_dataset_view(): d = make_dense_dataset(ndim=2) plot(d[Dim.X, 0])
def test_plot_3d_sparse_data_with_Variable_bins(): d = make_sparse_dataset(ndim=3) bins = sc.Variable([Dim.Tof], values=np.linspace(0.0, 105.0, 50), unit=sc.units.us) plot(d, bins=bins)
def test_plot_3d_sparse_data_with_nparray_bins(): d = make_sparse_dataset(ndim=3) plot(d, bins=np.linspace(0.0, 105.0, 50))
def test_plot_3d_sparse_data_with_int_bins(): d = make_sparse_dataset(ndim=3) plot(d, bins=50)
def test_plot_3d_sparse_data_with_weights(): d = make_sparse_dataset(ndim=3, data=True) plot(d)