Example #1
0
 def test_integrate(self):
     d=Data(path.join(self.datadir,"SLD_200919.dat"))
     d.setas="x..y"
     d.integrate(result=True,header="Total_M")
     result=d["Total_M"]
     self.assertAlmostEqual(result,4.19687459365,7,"Integrate returned the wrong result!")
     d.setas[-1]="y"
     d.plot(multiple="y2")
     self.assertEqual(len(d.axes),2,"Failed to produce plot with double y-axis")
     d.close("all")
     d.setas="x..y"
     fx=d.interpolate(None)
     self.assertEqual(fx(np.linspace(1,1500,101)).shape,(101,7),"Failed to get the interpolated shape right")
class Plottest(unittest.TestCase):
    """Path to sample Data File"""
    datadir = path.join(pth, "sample-data")

    def setUp(self):
        self.d = Data(
            path.join(__home__, "..", "sample-data", "New-XRay-Data.dql"))

    def test_set_no_figs(self):
        self.assertTrue(Options.no_figs,
                        "Default setting for no_figs option is incorrect.")
        Options.no_figs = True
        e = self.d.clone
        ret = e.plot()
        self.assertTrue(
            ret is None,
            "Output of Data.plot() was not None when no_figs is True  and showfig is not set({})"
            .format(type(ret)))
        Options.no_figs = False
        e.showfig = False
        ret = e.plot()
        self.assertTrue(
            isinstance(ret, Data),
            "Return value of Data.plot() was not self when Data.showfig=False ({})"
            .format(type(ret)))
        e.showfig = True
        ret = e.plot()
        self.assertTrue(
            isinstance(ret, Figure),
            "Return value of Data.plot() was not Figure when Data.showfig=False({})"
            .format(type(ret)))
        e.showfig = None
        ret = e.plot()
        self.assertTrue(
            ret is None,
            "Output of Data.plot() was not None when Data.showfig is None ({})"
            .format(type(ret)))
        Options.no_figs = True
        self.assertTrue(Options.no_figs, "set_option no_figs failed.")
        self.d = Data(
            path.join(__home__, "..", "sample-data", "New-XRay-Data.dql"))
        self.d.showfig = False
        ret = self.d.plot()
        self.assertTrue(
            ret is None,
            "Output of Data.plot() was not None when no_figs is True ({})".
            format(type(ret)))
        Options.no_figs = True
        plt.close("all")

    def test_template_settings(self):
        template = DefaultPlotStyle(font__weight="bold")
        self.assertEqual(template["font.weight"], "bold",
                         "Setting ytemplate parameter in init failed.")
        template(font__weight="normal")
        self.assertEqual(template["font.weight"], "normal",
                         "Setting ytemplate parameter in call failed.")
        template["font.weight"] = "bold"
        self.assertEqual(template["font.weight"], "bold",
                         "Setting ytemplate parameter in setitem failed.")
        del template["font.weight"]
        self.assertEqual(template["font.weight"], "normal",
                         "Resettting template parameter failed.")
        keys = sorted([x for x in template])
        self.assertEqual(sorted(template.keys()), keys,
                         "template.keys() and template.iter() disagree.")
        attrs = [x for x in dir(template) if template._allowed_attr(x)]
        length = len(dict(plt.rcParams)) + len(attrs)
        self.assertEqual(len(template), length, "templa length wrong.")

    def test_plot_magic(self):
        self.d.figure()
        dpi = self.d.fig_dpi
        self.d.fig_dpi = dpi * 2
        self.assertEqual(self.d.fig.dpi, dpi * 2,
                         "Failed to get/set attributes on current figure")
        vis = self.d.fig_visible
        self.d.fig_visible = not vis
        self.assertFalse(self.d.fig_visible,
                         "Setting/Getting figure.visible failed")
        plt.close("all")
        plt.figure()
        fn = plt.get_fignums()[0]
        self.d.fig = fn
        self.d.plot()
        self.assertEqual(len(plt.get_fignums()), 1,
                         "Setting Data.fig by integer failed.")
        plt.close("all")
        self.d.plot(plotter=plt.semilogy)
        self.assertEqual(self.d.ax_lines[0].get_c(), "k",
                         "Auto formatting of plot failed")
        self.d.plot(figure=False)
        self.d.plot(figure=1)
        self.assertEqual(len(plt.get_fignums()), 2,
                         "Plotting setting figure failed")
        self.assertEqual(len(self.d.ax_lines), 2,
                         "Plotting setting figure failed")
        self.d.figure(2)
        self.d.plot()
        self.d.plot(figure=True)
        self.assertEqual(len(plt.get_fignums()), 2,
                         "Plotting setting figure failed")
        self.assertEqual(len(self.d.ax_lines), 3,
                         "Plotting setting figure failed")
        plt.close("all")
        d = Data()

    def test_extra_plots(self):
        x = np.random.uniform(-np.pi, np.pi, size=5001)
        y = np.random.uniform(-np.pi, np.pi, size=5001)
        z = (np.cos(4 * np.sqrt(x**2 + y**2)) *
             np.exp(-np.sqrt(x**2 + y**2) / 3.0))**2
        self.d2 = Data(x, y, z, column_headers=["X", "Y", "Z"], setas="xyz")
        self.d2.contour_xyz(projection="2d")  #
        self.assertEqual(len(plt.get_fignums()), 1,
                         "Setting Data.fig by integer failed.")
        plt.close("all")
        X, Y, Z = self.d2.griddata(xlim=(-np.pi, np.pi), ylim=(-np.pi, np.pi))
        plt.imshow(Z)
        self.assertEqual(len(plt.get_fignums()), 1,
                         "Setting Data.fig by integer failed.")
        plt.imshow(Z)
        plt.close("all")
        x, y = np.meshgrid(np.linspace(-np.pi, np.pi, 10),
                           np.linspace(-np.pi, np.pi, 10))
        z = np.zeros_like(x)
        w = np.cos(np.sqrt(x**2 + y**2))
        q = np.arctan2(x, y)
        u = np.abs(w) * np.cos(q)
        v = np.abs(w) * np.sin(q)
        self.d3 = Data(x.ravel(),
                       y.ravel(),
                       z.ravel(),
                       u.ravel(),
                       v.ravel(),
                       w.ravel(),
                       setas="xyzuvw")
        self.d3.plot()
        self.assertEqual(len(plt.get_fignums()), 1,
                         "Setting Data.fig by integer failed.")
        plt.close("all")
        # i=ImageFile(path.join(__home__,"..","sample-data","Kermit.png"))
        # self.d3=Data(i)
        # self.d3.data=i.data
        # self.d3.plot_matrix()

    def test_misc_funcs(self):
        self.assertTrue(
            np.all(hsl2rgb(0.5, 0.5, 0.5) == np.array([[63, 191, 191]])))
        self.d.load(self.d.filename, Q=True)
        self.d.plot()
        self.d.x2()
        self.d.setas = ".yx"
        self.d.plot()
        self.d.tight_layout()
        self.assertEqual(len(self.d.fig_axes), 2,
                         "Creating a second X axis failed")
        plt.close("all")
        for i in range(4):
            self.d.subplot(2, 2, i + 1)
            self.d.plot()
        self.assertEqual(len(self.d.fig_axes), 4, "Creating subplots failed")
        self.d.close()