示例#1
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)
    ]
    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
示例#3
0
def test_embedded_query(
        session,
        aggregator
):
    model_1 = db.Fit(
        id="model_1",
        instance=af.Collection(
            gaussian=m.Gaussian(
                centre=1
            )
        ),
        info={"info": 3}
    )
    model_2 = db.Fit(
        id="model_2",
        instance=af.Collection(
            gaussian=m.Gaussian(
                centre=2
            )
        ),
        info={"info": 4}
    )

    session.add_all([
        model_1,
        model_2
    ])

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

    assert result == []

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

    assert result == [model_1]

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

    assert result == [model_2]
示例#4
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
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)
    ]
示例#7
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
示例#8
0
def test_set_and_retrieve(
        session
):
    fit = db.Fit()
    fit.named_instances[
        "one"
    ] = af.Gaussian()

    assert isinstance(
        fit.named_instances[
            "one"
        ],
        af.Gaussian
    )
示例#9
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
    )
示例#10
0
def test_fit():
    assert db.Fit(info={"info": 1}).id != db.Fit(info={"info": 2}).id
示例#11
0
def make_gaussian_1():
    return db.Fit(id="gaussian_1",
                  instance=m.Gaussian(centre=1),
                  info={"info": 1},
                  is_complete=True,
                  unique_tag="one")
示例#12
0
def make_gaussian_2():
    return db.Fit(id="gaussian_2",
                  instance=m.Gaussian(centre=2),
                  info={"info": 2},
                  is_complete=False,
                  unique_tag="two")
示例#13
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))
示例#14
0
def make_fit():
    return db.Fit(id="id", info={"key": "value"})