Esempio n. 1
0
def test_identifier_version():
    set_version(1)
    identifier = Identifier(af.Gaussian())

    set_version(2)
    assert identifier != Identifier(af.Gaussian())

    assert identifier == Identifier(af.Gaussian(), version=1)
Esempio n. 2
0
def make_job(perturbation_model, search):
    instance = af.ModelInstance()
    instance.gaussian = af.Gaussian()
    base_instance = instance
    instance.perturbation = af.Gaussian()
    image = image_function(instance)
    # noinspection PyTypeChecker
    return s.Job(model=af.Collection(gaussian=af.PriorModel(af.Gaussian)),
                 perturbation_model=af.PriorModel(af.Gaussian),
                 base_instance=base_instance,
                 perturbation_instance=instance,
                 analysis_factory=MockAnalysisFactory(Analysis(image)),
                 search=search,
                 number=1)
Esempio n. 3
0
def _make_children(grid_id):
    return [
        db.Fit(id=f"child_{grid_id}_{i}",
               instance=af.Gaussian(centre=i),
               model=af.Model(af.Gaussian, centre=float(-i)),
               max_log_likelihood=grid_id + i) for i in range(10)
    ]
Esempio n. 4
0
def test_instance():
    model = af.Collection(collection=af.Collection(gaussian=af.Gaussian()))

    parameterization = model.parameterization
    assert parameterization == (
        """model                                                                                     CollectionPriorModel (N=0)
    collection                                                                            CollectionPriorModel (N=0)
        gaussian                                                                          Gaussian (N=0)"""
    )
Esempio n. 5
0
def test_tuple_in_instance_in_collection(target_gaussian, prior):
    # noinspection PyTypeChecker
    source_gaussian = af.Gaussian(centre=(prior, 1.0))

    source = af.CollectionPriorModel(gaussian=source_gaussian)
    target = af.CollectionPriorModel(gaussian=target_gaussian)

    target.take_attributes(source)
    assert target.gaussian.centre == (prior, 1.0)
Esempio n. 6
0
def make_gaussian_0(session):
    gaussian_0 = db.Fit(id="gaussian_0",
                        instance=af.Gaussian(centre=1),
                        info={"info": 1},
                        is_complete=True,
                        unique_tag="zero")
    session.add(gaussian_0)
    session.commit()
    return gaussian_0
Esempio n. 7
0
 def test_append(
         self,
         frozen_collection
 ):
     with pytest.raises(
             AssertionError
     ):
         frozen_collection.append(
             af.Gaussian()
         )
Esempio n. 8
0
def generate_data(centres):
    data = []
    for centre in centres:
        gaussian = af.Gaussian(
            centre=centre,
            normalization=20,
            sigma=5,
        )

        data.append(gaussian(x))
    return data
Esempio n. 9
0
def test_object(paths):
    gaussian = af.Gaussian(normalization=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
Esempio n. 10
0
def make_gaussian_none(
        session
):
    gaussian_none = db.Fit(
        id="gaussian_none",
        instance=af.Gaussian(
            centre=None
        )
    )
    session.add(gaussian_none)
    session.commit()
    return gaussian_none
Esempio n. 11
0
def test_embedded_query(session, aggregator):
    model_1 = db.Fit(id="model_1",
                     instance=af.Collection(gaussian=af.Gaussian(centre=1)),
                     info={"info": 3})
    model_2 = db.Fit(id="model_2",
                     instance=af.Collection(gaussian=af.Gaussian(centre=2)),
                     info={"info": 4})

    session.add_all([model_1, model_2])

    result = aggregator.query(aggregator.model.centre == 0)

    assert result == []

    result = aggregator.query(aggregator.model.gaussian.centre == 1)

    assert result == [model_1]

    result = aggregator.query(aggregator.model.gaussian.centre == 2)

    assert result == [model_2]
Esempio n. 12
0
def make_sensitivity(perturbation_model, search):
    # noinspection PyTypeChecker
    instance = af.ModelInstance()
    instance.gaussian = af.Gaussian()
    return s.Sensitivity(
        simulation_instance=instance,
        base_model=af.Collection(gaussian=af.PriorModel(af.Gaussian)),
        perturbation_model=perturbation_model,
        simulate_function=image_function,
        analysis_class=Analysis,
        search=search,
        number_of_steps=2,
    )
Esempio n. 13
0
def test_visualise(
        multi_search,
        multi_analysis
):
    multi_analysis.visualize(
        multi_search.paths,
        af.Gaussian(),
        True
    )
    search_path = Path(multi_search.paths.output_path)
    assert search_path.exists()
    assert (search_path / "analyses/analysis_0/image/image.png").exists()
    assert (search_path / "analyses/analysis_1/image/image.png").exists()
Esempio n. 14
0
def test_set_and_retrieve(
        session
):
    fit = db.Fit()
    fit.named_instances[
        "one"
    ] = af.Gaussian()

    assert isinstance(
        fit.named_instances[
            "one"
        ],
        af.Gaussian
    )
Esempio n. 15
0
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": af.Gaussian(sigma=sigma)}))
        session.commit()

    assert len(aggregator) == 3

    assert len(aggregator.query(aggregator.model.gaussian.sigma < 3)) == 1
Esempio n. 16
0
def test_query(
        session
):
    fit = db.Fit(
        id="test_query"
    )
    fit.named_instances[
        "one"
    ] = af.Gaussian()

    session.add(fit)
    session.commit()

    fit, = db.Fit.all(
        session
    )

    assert isinstance(
        fit.named_instances[
            "one"
        ],
        af.Gaussian
    )
Esempio n. 17
0
def test_embedded():
    collection = af.CollectionPriorModel(gaussian=af.PriorModel(
        af.Gaussian, centre=af.Gaussian()), )

    assert collection.has_model(af.Gaussian) is True
    assert collection.has_instance(af.Gaussian) is True
Esempio n. 18
0
def test_both():
    collection = af.CollectionPriorModel(gaussian=af.PriorModel(af.Gaussian),
                                         gaussian_2=af.Gaussian())

    assert collection.has_model(af.Gaussian) is True
    assert collection.has_instance(af.Gaussian) is True
Esempio n. 19
0
def test_instance():
    collection = af.CollectionPriorModel(gaussian=af.Gaussian())

    assert collection.has_instance(af.Gaussian) is True
    assert collection.has_model(af.Gaussian) is False
Esempio n. 20
0
 def test_collection_instance(self, instance_dict):
     collection = af.Collection(gaussian=af.Gaussian())
     assert collection.dict() == {
         "gaussian": instance_dict,
         "type": "collection"
     }
Esempio n. 21
0
def test_instance_from_prior_medians():
    model = af.Model(af.Gaussian)
    db.Object.from_object(model)()
    db.Object.from_object(af.Gaussian())()
    instance = model.instance_from_prior_medians()
    db.Object.from_object(instance)()
Esempio n. 22
0
def make_grid_fit_2():
    return db.Fit(id="grid2",
                  unique_tag="grid_fit_2",
                  is_grid_search=True,
                  children=_make_children(2),
                  instance=af.Gaussian(centre=2))
Esempio n. 23
0
def test_save_instance(session):
    paths = af.DatabasePaths(session=session)
    paths.save_named_instance("name", af.Gaussian())
    assert isinstance(paths.fit.named_instances["name"], af.Gaussian)
Esempio n. 24
0
def test_instance():
    identifier = af.CollectionPriorModel(gaussian=af.Gaussian()).identifier
    assert identifier == af.CollectionPriorModel(
        gaussian=af.Gaussian()).identifier
    assert identifier != af.CollectionPriorModel(gaussian=af.Gaussian(
        centre=0.5)).identifier
Esempio n. 25
0
 def test_serialize(self):
     serialized_instance = db.Object.from_object(af.Gaussian())
     assert len(serialized_instance.children) == 3
Esempio n. 26
0
def make_grid_fit(children):
    return db.Fit(id="grid",
                  unique_tag="grid_fit_1",
                  is_grid_search=True,
                  children=children,
                  instance=af.Gaussian(centre=1))
Esempio n. 27
0
def test_tuple_in_instance(target_gaussian, prior):
    # noinspection PyTypeChecker
    source_gaussian = af.Gaussian(centre=(prior, 1.0))
    target_gaussian.take_attributes(source_gaussian)

    assert target_gaussian.centre == (prior, 1.0)