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