Commit 7811275e authored by Ambra Di Piano's avatar Ambra Di Piano
Browse files

randomise pointing and info source-pointing for safekeeping

parent b103328a
Loading
Loading
Loading
Loading
+23 −7
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@

import pytest
import numpy as np
from astrort.utils.wrap import load_yaml_conf, randomise_pointing
from astrort.utils.wrap import load_yaml_conf, randomise_pointing_sim, get_point_source_info

@pytest.mark.test_conf_file
def test_load_yaml_conf(test_conf_file):
@@ -16,12 +16,28 @@ def test_load_yaml_conf(test_conf_file):
    assert type(configuration) == dict

@pytest.mark.test_conf_file
def test_randomise_pointing(test_conf_file):
def test_randomise_pointing_sim(test_conf_file):
    conf = load_yaml_conf(test_conf_file)
    pointing = randomise_pointing(conf['simulator'])
    pointing = randomise_pointing_sim(conf['simulator'])
    assert type(pointing) == dict
    for key in pointing.keys():
        assert key in ['ra', 'dec', 'offset']
    assert type(pointing['ra']) == type(np.float64(1))
    assert type(pointing['dec']) == type(np.float64(1))
        assert key in ['point_ra', 'point_dec', 'offset', 'source_ra', 'source_dec']
    assert type(pointing['point_ra']) == type(np.float64(1))
    assert type(pointing['point_dec']) == type(np.float64(1))
    assert type(pointing['offset']) == type(np.float64(1))
    assert type(pointing['source_ra']) == type(np.float64(1))
    assert type(pointing['source_dec']) == type(np.float64(1))

@pytest.mark.test_conf_file
def test_get_point_source_info(test_conf_file):
    conf = load_yaml_conf(test_conf_file)
    conf['simulator']['pointing'] = {'ra': 1, 'dec': 1}
    pointing = get_point_source_info(conf['simulator'])
    assert type(pointing) == dict
    for key in pointing.keys():
        assert key in ['point_ra', 'point_dec', 'offset', 'source_ra', 'source_dec']
    assert type(pointing['point_ra']) == type(np.float64(1))
    assert type(pointing['point_dec']) == type(np.float64(1))
    assert type(pointing['offset']) == type(np.float64(1))
    assert type(pointing['source_ra']) == type(np.float64(1))
    assert type(pointing['source_dec']) == type(np.float64(1))
 No newline at end of file
+30 −11
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
import yaml
import numpy as np
import astropy.units as u
from os.path import dirname, abspath, join, basename
from os.path import dirname, abspath, join, basename, isfile
from astrort.utils.utils import seeds_to_string_formatter, get_instrument_fov
from astrort.configure.check_configuration import CheckConfiguration
from rtasci.lib.RTAManageXml import ManageXml
@@ -31,20 +31,14 @@ def configure_simulator_no_visibility(simulator, configuration):
    simulator.fov = get_instrument_fov(configuration['array'])
    simulator.t = [0, configuration['duration']]
    simulator.seed = configuration['seed']
    if configuration['pointing'] == 'random':
        point = randomise_pointing(configuration)
        simulator.ra = point['ra']
        simulator.dec = point['dec']
    else:
    simulator.ra = configuration['pointing']['ra']
    simulator.dec = configuration['pointing']['dec']
    return simulator

def randomise_pointing(simulator):
def randomise_pointing_sim(simulator):
    if '$TEMPLATES$' in simulator['model']:
        simulator['model'] = join(dirname(abspath(__file__)).replace('utils', 'templates'), basename(simulator['model']))
    model_xml = ManageXml(xml=simulator['model'])
    name = model_xml.getName()
    source = model_xml.getRaDec()
    del model_xml
    # use astropy separation
@@ -53,4 +47,29 @@ def randomise_pointing(simulator):
    position_angle = 45 * u.deg
    separation = np.random.random() * get_instrument_fov(simulator['array']) * u.deg
    pointing = source.directional_offset_by(position_angle, separation)
    return {'ra': pointing.ra.deg, 'dec': pointing.dec.deg, 'offset': separation.value}
 No newline at end of file
    return {'point_ra': pointing.ra.deg, 'point_dec': pointing.dec.deg, 'offset': separation.value, 'source_ra': source.ra.deg, 'source_dec': source.dec.deg}

def get_point_source_info(simulator):
    if '$TEMPLATES$' in simulator['model']:
        simulator['model'] = join(dirname(abspath(__file__)).replace('utils', 'templates'), basename(simulator['model']))
    model_xml = ManageXml(xml=simulator['model'])
    source = model_xml.getRaDec()
    del model_xml
    # use astropy separation
    source = SkyCoord(source[0][0] * u.deg, source[1][0] * u.deg, frame='icrs')
    pointing = SkyCoord(simulator['pointing']['ra'] * u.deg, simulator['pointing']['dec'] * u.deg, frame='icrs')
    separation = source.separation(pointing)
    return {'point_ra': pointing.ra.deg, 'point_dec': pointing.dec.deg, 'offset': separation.value, 'source_ra': source.ra.deg, 'source_dec': source.dec.deg}

def write_simulation_info(simulator, configuration, pointing, datfile):
    name = configuration['simulator']['name']
    seed = simulator.seed
    tstart, tstop = simulator.t
    duration = configuration['simulator']['duration']
    point_ra, point_dec, offset, source_ra, source_dec = pointing['point_ra'], pointing['point_dec'], pointing['offset'], pointing['source_ra'], pointing['source_dec']
    if not isfile(datfile):
        with open(datfile, 'w+') as f:
            f.write('name seed start stop duration source_ra source_dec point_ra point_dec offset\n')
    with open(datfile, 'a') as f:
        f.write(f'{name} {seed} {tstart} {tstop} {duration} {source_ra} {source_dec} {point_ra} {point_dec} {offset}')
    return
 No newline at end of file