Ejemplo n.º 1
0
    def test___init__cant_set_Y_without_X(self):
        # -------------------
        # can't set `residualer` without `fitter`

        with pytest.raises(ValueError, match="`residualer` without `fitter`."):
            pipeline.Pipeline(
                sampler=self.sampler,
                measurer=self.measurer,
                # fitter=self.fitter,  # skipping fitter
                residualer=object(),
                statistic=self.statistic,
            )

        # -------------------
        # can't set `statistic` without `residualer`

        with pytest.raises(
            ValueError,
            match="`statistic` without `residualer`",
        ):
            pipeline.Pipeline(
                sampler=self.sampler,
                measurer=self.measurer,
                fitter=self.fitter,
                # residualer=self.residualer,  # skipping residualer
                statistic=object(),
            )
Ejemplo n.º 2
0
 def setup_class(cls):
     """Setup fixtures for testing."""
     cls.pipe = pipeline.Pipeline(object())
     cls.inst = pipeline.PipelineResult(
         cls.pipe,
         sample=1,
         measured="2",
         fit=[3, 3.0],
         residual=object(),
         statistic=NotImplemented,
     )
Ejemplo n.º 3
0
    def test___init__(self):
        """Test method ``__init__``."""
        # -------------------
        # basic, same as inst

        pipe = pipeline.Pipeline(
            sampler=self.sampler,
            measurer=self.measurer,
            fitter=self.fitter,
            residualer=self.residualer,
            statistic=self.statistic,
        )

        assert isinstance(pipe, pipeline.Pipeline)
        assert isinstance(pipe._sampler, PotentialSampler)
        assert isinstance(pipe._measurer, MeasurementErrorSampler)
        assert isinstance(pipe._fitter, PotentialFitter)
        assert isinstance(pipe._residualer, object)
        assert isinstance(pipe._statisticer, object)
        assert pipe._result is None

        # -------------------
        # CAN set `fitter` without `measurer`

        pipe = pipeline.Pipeline(
            sampler=self.sampler,
            # measurer=self.measurer,
            fitter=self.fitter,
            residualer=self.residualer,
            statistic=self.statistic,
        )

        assert isinstance(pipe, pipeline.Pipeline)
        assert isinstance(pipe._sampler, PotentialSampler)
        assert pipe._measurer is None
        assert isinstance(pipe._fitter, PotentialFitter)
        assert isinstance(pipe._residualer, object)
        assert isinstance(pipe._statisticer, object)
        assert pipe._result is None
Ejemplo n.º 4
0
    def test___init__frame_mismatch(self):

        fitter = PotentialFitter(
            object(),
            key="unittest",
            frame="icrs",
            representation_type=self.sampler.representation_type,
        )

        with pytest.raises(ValueError, match="must have the same frame."):
            pipeline.Pipeline(
                sampler=self.sampler,
                measurer=self.measurer,
                fitter=fitter,
            )
Ejemplo n.º 5
0
    def test___init__(self):
        """Test method ``__init__``."""
        pipe = pipeline.Pipeline(object())

        # ------------------
        # inits, defaults

        pr = pipeline.PipelineResult(pipe)

        assert isinstance(pr, pipeline.PipelineResult)
        assert pr._parent_ref() is pipe
        assert pr["sample"][0] is None
        assert pr["measured"][0] is None
        assert pr["fit"][0] is None
        assert pr["residual"][0] is None
        assert pr["statistic"][0] is None

        # ------------------
        # inits, values

        assert isinstance(self.inst, pipeline.PipelineResult)
Ejemplo n.º 6
0
    def setup_class(cls):
        """Set up fixtures for testing."""
        cls.mass = 1e12 * u.solMass
        cls.r0 = 10 * u.kpc  # scale factor

        # sampling a potential that lives in a galactocentric frame
        # and enforcing a Cartesian representation
        cls.sampler = PotentialSampler(
            PotentialWrapper(object(), frame="galactocentric"),
            key="unittest",
            frame="galactocentric",
            representation_type="cartesian",
            total_mass=10 * u.solMass,
        )
        # but when we measure, it's 1% errors in icrs, Spherical
        cls.measurer = MeasurementErrorSampler(
            c_err=1 * u.percent,
            method=("rvs", "Gaussian"),
            frame="icrs",
            representation_type="spherical",
        )
        # fitting is done with an SCF potential
        cls.fitter = PotentialFitter(
            object(),
            key="unittest",
            frame=cls.sampler.frame,
            representation_type=cls.sampler.representation_type,
        )
        # the residual function
        cls.residualer = None
        # the statistic function
        cls.statistic = None

        cls.inst = pipeline.Pipeline(
            sampler=cls.sampler,
            measurer=cls.measurer,
            fitter=cls.fitter,
            residualer=cls.residualer,
            statistic=cls.statistic,
        )