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
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) ]
def test_collection_instance( self, instance_dict ): collection = af.Collection( gaussian=Gaussian() ) assert collection.dict == { "gaussian": instance_dict, "type": "collection" }
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
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())