Exemple #1
0
def test_instance():
    identifier = af.CollectionPriorModel(
        gaussian=Gaussian()
    ).identifier
    assert identifier == af.CollectionPriorModel(
        gaussian=Gaussian()
    ).identifier
    assert identifier != af.CollectionPriorModel(
        gaussian=Gaussian(
            centre=0.5
        )
    ).identifier
def test_float_inequality(session):
    aggregator = af.Aggregator(session)

    for sigma in [
        0.9992237362814176,
        4.9687212446221904,
        9.967065800134504,
    ]:
        session.add(
            af.db.Fit(
                id=str(uuid4()),
                instance={
                    "gaussian": Gaussian(
                        sigma=sigma
                    )
                }
            )
        )
        session.commit()

    assert len(aggregator) == 3

    assert len(aggregator.query(
        aggregator.gaussian.sigma < 3
    )) == 1
    def test_query_before(
            self,
            aggregator,
            grid_fit,
            session
    ):
        session.add(
            db.Fit(
                id="grid2",
                is_grid_search=True,
                instance=Gaussian(
                    centre=2
                )
            )
        )
        session.flush()

        parent_aggregator = aggregator.query(
            aggregator.is_grid_search & (aggregator.centre == 1)
        )

        result, = parent_aggregator.fits

        assert result is grid_fit

        child_aggregator = parent_aggregator.children()

        results = child_aggregator.fits
        assert len(results) == 10

        results = aggregator.query(
            aggregator.is_grid_search & (aggregator.centre == 2)
        ).children().fits
        assert len(results) == 0
Exemple #4
0
def test_job(perturbation_model):
    instance = af.ModelInstance()
    instance.gaussian = Gaussian()
    instance.perturbation = Gaussian()
    image = image_function(instance)
    # noinspection PyTypeChecker
    job = s.Job(
        model=af.Collection(gaussian=af.PriorModel(Gaussian)),
        perturbation_model=af.PriorModel(Gaussian),
        analysis=Analysis(image),
        search=GridSearch(),
    )
    result = job.perform()
    assert isinstance(result, s.JobResult)
    assert isinstance(result.perturbed_result, af.Result)
    assert isinstance(result.result, af.Result)
    assert result.log_likelihood_difference > 0
def make_grid_fit(children):
    return db.Fit(
        id="grid",
        is_grid_search=True,
        children=children,
        instance=Gaussian(
            centre=1
        )
    )
def make_children():
    return [
        db.Fit(
            id=f"child_{i}",
            instance=Gaussian(
                centre=i
            )
        )
        for i in range(10)
    ]
Exemple #7
0
 def test_collection_instance(
         self,
         instance_dict
 ):
     collection = af.Collection(
         gaussian=Gaussian()
     )
     assert collection.dict == {
         "gaussian": instance_dict,
         "type": "collection"
     }
Exemple #8
0
def test_object(paths):
    gaussian = Gaussian(intensity=2.1)

    assert paths.is_object("gaussian") is False

    paths.save_object("gaussian", gaussian)

    assert paths.is_object("gaussian") is True
    assert paths.load_object("gaussian") == gaussian

    paths.remove_object("gaussian")
    assert paths.is_object("gaussian") is False
Exemple #9
0
def make_sensitivity(perturbation_model, search):
    # noinspection PyTypeChecker
    instance = af.ModelInstance()
    instance.gaussian = Gaussian()
    return s.Sensitivity(
        simulation_instance=instance,
        base_model=af.Collection(gaussian=af.PriorModel(Gaussian)),
        perturbation_model=perturbation_model,
        simulate_function=image_function,
        analysis_class=Analysis,
        search=search,
        number_of_steps=2,
    )
def test_instance_from_prior_medians():
    model = af.Model(
        Gaussian
    )
    db.Object.from_object(
        model
    )()
    db.Object.from_object(
        Gaussian()
    )()
    instance = model.instance_from_prior_medians()
    db.Object.from_object(
        instance
    )()
 def test_append(self, frozen_collection):
     with pytest.raises(AssertionError):
         frozen_collection.append(Gaussian())