def test_input_output_with_complex_functions(): my_particle_distribution = Powerlaw() my_particle_distribution.index = -1.52 electrons = ParticleSource("electrons", distribution_shape=my_particle_distribution) # Now set up the synch. spectrum for our source and the source itself synch_spectrum = _ComplexTestFunction() # Use the particle distribution we created as source for the electrons # producing synch. emission synch_spectrum.particle_distribution = my_particle_distribution synch_source = PointSource("synch_source", ra=12.6, dec=-13.5, spectral_shape=synch_spectrum) my_model = Model(electrons, synch_source) my_model.display() my_model.save("__test.yml") new_model = load_model("__test.yml") assert len(new_model.sources) == len(my_model.sources) assert (my_particle_distribution.index.value == new_model.electrons.spectrum.main.shape.index.value)
def test_duplicate(): instance = Powerlaw() instance.index = -2.25 instance.K = 0.5 # Duplicate it duplicate = instance.duplicate() # Check that we have the same results assert duplicate(2.25) == instance(2.25) # Check that the parameters are not linked anymore instance.index = -1.12 assert instance.index.value != duplicate.index.value print(instance) print(duplicate)
def test_memoizer(): po = Powerlaw() a = np.random.uniform(-3, -1, 2000) b = np.random.uniform(0.1, 10, 2000) for aa, bb in zip(a, b): po.index = aa po.K = bb po(1.0)