Source code for test_microlsimulator

import collections

import unittest.mock as mock
import numpy as np
import pytest

from pyLIMA import microlsimulator


[docs]def test_poisson_noise(): flux = np.array([150, 10 ** 5.2, 0.1]) error = flux ** 0.5 assert np.allclose(microlsimulator.poisson_noise(flux), error)
[docs]def test_noisy_observations(): flux = np.array([150, 10 ** 5.2, 0.1]) error = flux ** 0.5 flux_observed = np.random.normal(flux, error) assert np.all( np.abs(microlsimulator.noisy_observations(flux, error) - flux_observed) < 10 * error) # 10 sigma diff allowed
[docs]def test_time_simulation(): time_start = 0 time_end = 10 sampling = 2.5 bad_weather = 0.0 time = microlsimulator.time_simulation(time_start, time_end, sampling, bad_weather) assert len(time) == 90
[docs]def test_red_noise(): time = np.linspace(0, 100, 30) red_noise = microlsimulator.red_noise(time) assert len(red_noise) == 30 assert max(red_noise) < 10 * 0.5 / 100.0
[docs]def test_simulate_a_microlensing_event(): event = microlsimulator.simulate_a_microlensing_event() assert event.ra == 270 assert event.dec == -30 assert event.name == 'Microlensing pyLIMA simulation'
[docs]def test_simulate_a_telescope(): event = mock.MagicMock() telescope = microlsimulator.simulate_a_telescope('blabli', event, 0,42,1, 'Space', 'orange', altitude = 51, longitude = 51, latitude=51) assert len(telescope.lightcurve_flux[:, 0]) == 42*24 event.ra = 270 event.dec = -30 telescope = microlsimulator.simulate_a_telescope('blabli', event,2457850,2457900,1, 'Earth', 'orange', altitude = 0, longitude = 0, latitude=-30, bad_weather_percentage=0.0, minimum_alt=0, moon_windows_avoidance=0, maximum_moon_illumination=100.0 ) histogram, windows = np.histogram(telescope.lightcurve_flux[:,0],np.arange(2457850,2457900)) assert len(telescope.lightcurve_flux[:, 0]) == 461.0 assert histogram[0]<histogram[-1]
[docs]def test_simulate_a_microlensing_model(): event = mock.MagicMock() telescope = mock.MagicMock() telescope.name = 'NDG' telescope.lightcurve_flux = np.array([[0, 1], [2, 2]]).T event.telescopes = [] event.telescopes.append(telescope) model = microlsimulator.simulate_a_microlensing_model(event) assert model.model_type == 'PSPL'
[docs]def test_simulate_microlensing_model_parameters(): event = mock.MagicMock() telescope = mock.MagicMock() telescope.name = 'NDG' telescope.lightcurve_flux = np.array([[0, 1], [2, 2]]).T event.telescopes = [] event.telescopes.append(telescope) model = microlsimulator.simulate_a_microlensing_model(event) parameters = microlsimulator.simulate_microlensing_model_parameters(model) assert -300 < parameters[0] assert parameters[0] < 300 assert 0 < parameters[1] assert parameters[1] < 2 assert 1 < parameters[2] assert parameters[2] < 500 model = microlsimulator.simulate_a_microlensing_model(event,'FSPL') parameters = microlsimulator.simulate_microlensing_model_parameters(model) assert parameters[1] < 0.1 assert parameters[3] < 0.05 model = microlsimulator.simulate_a_microlensing_model(event, 'DSPL') parameters = microlsimulator.simulate_microlensing_model_parameters(model) assert parameters[2] < 100
[docs]def test_simulate_fluxes_parameters(): telescope = mock.MagicMock() telescopes = [telescope] fake_flux_parameters = microlsimulator.simulate_fluxes_parameters(telescopes) assert len(fake_flux_parameters) == 2 assert fake_flux_parameters[0] > 10 ** ((27.4 - 22) / 2.5) assert fake_flux_parameters[0] < 10 ** ((27.4 - 14) / 2.5) assert fake_flux_parameters[1] < 1 assert fake_flux_parameters[1] > 0
[docs]def test_simulate_lightcurve_flux(): event = mock.MagicMock() telescope = mock.MagicMock() telescope.name = 'NDG' telescope.lightcurve_flux = np.array([[0, 51, 69], [2, 42, 28.65]]) event.telescopes = [] event.telescopes.append(telescope) model = microlsimulator.simulate_a_microlensing_model(event) parameters = microlsimulator.simulate_microlensing_model_parameters(model) fake_flux_parameters = microlsimulator.simulate_fluxes_parameters(event.telescopes) pyLIMA_parameters = model.compute_pyLIMA_parameters(parameters + fake_flux_parameters) microlsimulator.simulate_lightcurve_flux(model, pyLIMA_parameters, 'No') assert np.all(telescope.lightcurve_flux[:, 1] != [51, 42]) assert np.all(telescope.lightcurve_flux[:, 2] != [69, 28.65]) microlsimulator.simulate_lightcurve_flux(model, pyLIMA_parameters, 'Yes') assert np.all(telescope.lightcurve_flux[:, 1] != [51, 42]) assert np.all(telescope.lightcurve_flux[:, 2] != [69, 28.65])