Exemple #1
0
    def test_pulsar_parameters(self):
        """
        Test reading in pulsar parameters.
        """

        # fail if parameter file is not right
        with pytest.raises(IOError):
            _ = Plot(
                self.cwinpy,
                parameters="iota",
                untrig="cosiota",
                plottype="hist",
                pulsar=985348,
            )

        plot = Plot(
            self.cwinpy,
            parameters="iota",
            untrig="cosiota",
            plottype="hist",
            pulsar=self.pulsar,
        )

        assert list(plot.injection_parameters.keys()) == ["iota"]
        assert plot.injection_parameters["iota"] == np.arccos(
            PulsarParameters(self.pulsar)["COSIOTA"])
Exemple #2
0
    def test_plottype(self):
        """
        Test plot type is valid.
        """

        with pytest.raises(TypeError):
            _ = Plot(self.cwinpy, parameters="h0", plottype="skdfjkfda")
Exemple #3
0
    def test_credible_interval(self):
        """
        Test credible interval calculation.
        """

        plot = Plot(
            self.allresults["CWInPy"],
            parameters=["h0", "cosiota", "psi", "phi0"],
            plottype="corner",
        )

        with pytest.raises(ValueError):
            # invalid parameter
            _ = plot.credible_interval(parameter="skdg")

        interval = plot.credible_interval("psi")
        assert len(interval) == 2
        assert interval[0] < interval[1]
        assert (interval[0] > DEFAULT_BOUNDS["psi"]["low"]
                and interval[1] < DEFAULT_BOUNDS["psi"]["high"])

        # test upper limit
        ul = plot.upper_limit("h0")

        assert isinstance(ul, float)
        assert ul > 0.0

        plot = Plot(
            self.allresults,
            parameters=["h0", "cosiota", "psi", "phi0"],
            plottype="corner",
        )
        interval = plot.credible_interval(parameter="cosiota")
        assert len(interval) == len(self.allresults)

        for label in self.allresults:
            credint = interval[label]
            assert (credint[0] > DEFAULT_BOUNDS["cosiota"]["low"]
                    and credint[1] < DEFAULT_BOUNDS["cosiota"]["high"])

        uls = plot.upper_limit("h0")
        for label in self.allresults:
            assert isinstance(uls[label], float)
            assert uls[label] > 0.0
Exemple #4
0
    def test_plot_nd(self):
        """
        Test multiple dimension plots.
        """

        # corner
        plot = Plot(
            self.allresults,
            parameters=["h0", "cosiota", "psi", "phi0"],
            plottype="corner",
        )
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "corner"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)
        assert len(plot.fig.axes) == 16

        plot.save("nd_corner.png", dpi=150)
        fig.clf()
        fig.close()
        del plot
Exemple #5
0
    def test_untrig(self):
        """
        Test inverting trigonometric function.
        """

        # fail as cannot invert value for Grid
        with pytest.raises(TypeError):
            _ = Plot(self.grid,
                     parameters="cosiota",
                     plottype="hist",
                     untrig="cosiota")

        plot = Plot(self.cwinpy,
                    parameters="iota",
                    untrig="cosiota",
                    plottype="hist")
        assert plot.parameters == ["iota"]
        assert len(plot.results) == 1
        assert "iota" in plot.results["result"].posterior.columns
        assert all((DEFAULT_BOUNDS["iota"]["low"] <=
                    plot.results["result"].posterior["iota"])
                   & (DEFAULT_BOUNDS["iota"]["high"] >
                      plot.results["result"].posterior["iota"]))
Exemple #6
0
    def test_parameters(self):
        """
        Test input parameters for plotting.
        """

        # pass parameter with wrong type
        with pytest.raises(TypeError):
            _ = Plot(self.cwinpy, parameters=1)

        # pass unavailable parameter
        with pytest.raises(ValueError):
            _ = Plot(self.cwinpy, parameters="blah")

        # pass real parameter - should fail for default plot type "corner",
        # which cannot be used for a single parameter
        with pytest.raises(TypeError):
            _ = Plot(self.cwinpy, parameters="h0")

        plot = Plot(self.cwinpy, parameters="h0", plottype="hist")
        assert plot.parameters == ["h0"]
        assert plot.plottype == "hist"
        assert plot.fig is None

        # pass two parameters with plottype "kde" - should fail as this can
        # only be used for 1 parameter
        with pytest.raises(TypeError):
            _ = Plot(self.cwinpy, parameters=["h0", "cosiota"], plottype="kde")

        plot = Plot(self.cwinpy, parameters=["h0", "cosiota"])
        assert plot.parameters == ["h0", "cosiota"]
        assert plot.plottype == "corner"
        assert len(plot.results) == 1

        # pass three parameters with plot type "hist" - should fail for as this
        # can only be used for 1 parameter
        with pytest.raises(TypeError):
            _ = Plot(self.cwinpy,
                     parameters=["h0", "cosiota", "psi"],
                     plottype="hist")

        plot = Plot(self.cwinpy,
                    parameters=["h0", "cosiota", "psi"],
                    plottype="corner")
        assert plot.parameters == ["h0", "cosiota", "psi"]
        assert plot.plottype == "corner"
        assert len(plot.results) == 1
Exemple #7
0
    def test_plot_inputs(self):
        """
        Test inputs to plotting class.
        """

        with pytest.raises(TypeError):
            # fails with no positional arguments
            _ = Plot()

        with pytest.raises(TypeError):
            # fails with position argument of the wrong type
            _ = Plot(1)

        # test reading in different objects
        for res in [
                self.lppen,
                read_in_result(self.cwinpy),
                Grid.read(self.grid)
        ]:
            plot = Plot(res)
            assert len(plot.results) == 1

        # test reading in dictionary - parameters is not specified, so should
        # fail with inconsistent parameter error
        with pytest.raises(ValueError):
            _ = Plot({
                "lppen": self.lppen,
                "CWInPy": read_in_result(self.cwinpy),
                "grid": Grid.read(self.grid),
            })

        # try reading non-existent files
        with pytest.raises(IOError):
            _ = Plot({"one": "no_file.hdf", "two": "blah.json"})

        plot = Plot(self.allresults, parameters=["h0", "psi"])
        assert len(plot.results) == len(self.allresults)

        for label, restype in zip(self.allresults.keys(),
                                  [Result, Result, Grid]):
            assert isinstance(plot.results[label], restype)
Exemple #8
0
    def test_plot_2d(self):
        """
        Test 2D plots.
        """

        # corner
        plot = Plot(self.allresults,
                    parameters=["h0", "cosiota"],
                    plottype="corner")
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "corner"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)
        assert len(plot.fig.axes) == 4

        plot.save("twod_corner.png", dpi=150)
        fig.clf()
        fig.close()
        del plot

        # triangle
        plot = Plot(self.allresults,
                    parameters=["h0", "cosiota"],
                    plottype="triangle")
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "triangle"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)
        assert len(plot.fig.axes) == 4

        plot.save("twod_triangle.png", dpi=150)
        fig.clf()
        fig.close()
        del plot

        # reverse triangle
        plot = Plot(self.allresults,
                    parameters=["h0", "cosiota"],
                    plottype="reverse_triangle")
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "reverse_triangle"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)
        assert len(plot.fig.axes) == 4

        plot.save("twod_reverse_triangle.png", dpi=150)
        fig.clf()
        fig.close()
        del plot

        # contour
        plot = Plot(self.allresults,
                    parameters=["h0", "cosiota"],
                    plottype="contour")
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "contour"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)
        assert len(plot.fig.axes) == 1

        plot.save("twod_contour.png", dpi=150)
        fig.clf()
        fig.close()
        del plot
Exemple #9
0
    def test_plot_1d(self):
        """
        Test 1D plots.
        """

        # histogram
        plot = Plot(self.allresults, parameters="h0", plottype="hist")
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "hist"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)

        plot.save("oned_hist.png", dpi=150)
        fig.clf()
        fig.close()
        del plot

        # histogram with KDE
        plot = Plot(self.allresults,
                    parameters="h0",
                    plottype="hist",
                    kde=True)
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "hist"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)

        plot.save("oned_hist_with_kde.png", dpi=150)
        fig.clf()
        fig.close()
        del plot

        # KDE
        plot = Plot(self.allresults, parameters="h0", plottype="kde")
        assert len(plot.results) == len(self.allresults)
        assert plot.plottype == "kde"

        fig = plot.plot()  # create plot
        assert isinstance(fig, Figure) and isinstance(plot.fig, Figure)

        plot.save("oned_kde.png", dpi=150)
        fig.clf()
        fig.close()
        del plot