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)
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)
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_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)""" )
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)
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 test_append( self, frozen_collection ): with pytest.raises( AssertionError ): frozen_collection.append( af.Gaussian() )
def generate_data(centres): data = [] for centre in centres: gaussian = af.Gaussian( centre=centre, normalization=20, sigma=5, ) data.append(gaussian(x)) return data
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
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_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]
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, )
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()
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_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
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_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
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
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
def test_collection_instance(self, instance_dict): collection = af.Collection(gaussian=af.Gaussian()) assert collection.dict() == { "gaussian": instance_dict, "type": "collection" }
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)()
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 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)
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
def test_serialize(self): serialized_instance = db.Object.from_object(af.Gaussian()) assert len(serialized_instance.children) == 3
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))
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)