Loading astrort/configure/test.yml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ mapper: plot: true plot: true region: false region: false output: /data01/homes/dipiano/astroRT/astrort/testing/tmp output: /data01/homes/dipiano/astroRT/astrort/testing/tmp save: npy visibility: visibility: start_time: '2030-01-01T00:00:00' start_time: '2030-01-01T00:00:00' Loading astrort/simulator/base_mapper.py +1 −1 Original line number Original line Diff line number Diff line Loading @@ -37,7 +37,7 @@ def base_mapper(configuration_file, seeds=None): fitsmap = execute_mapper_no_visibility(configuration, log) fitsmap = execute_mapper_no_visibility(configuration, log) log.info(f"Mapping (seed = {seed}) complete, took {time() - clock_map} s") log.info(f"Mapping (seed = {seed}) complete, took {time() - clock_map} s") # make plot # make plot if configuration['mapper']['plot']: if configuration['mapper']['plot'] and configuration['mapper']['save'] == 'fits': clock_plot = time() clock_plot = time() plotmap = plot_map(fitsmap, log) plotmap = plot_map(fitsmap, log) log.info(f"Plotting (seed = {seed}) complete, took {time() - clock_plot} s") log.info(f"Plotting (seed = {seed}) complete, took {time() - clock_plot} s") Loading astrort/testing/test_simulator/test_base_mapper.py +11 −3 Original line number Original line Diff line number Diff line Loading @@ -8,6 +8,7 @@ import pytest import pytest import numpy as np import numpy as np from yaml import dump from shutil import rmtree from shutil import rmtree from os import listdir from os import listdir from os.path import isfile, join from os.path import isfile, join Loading @@ -17,21 +18,28 @@ from astrort.utils.wrap import load_yaml_conf @pytest.mark.test_conf_file @pytest.mark.test_conf_file @pytest.mark.parametrize('seeds', [None, list()]) @pytest.mark.parametrize('seeds', [None, list()]) def test_base_mapper(test_conf_file, seeds): @pytest.mark.parametrize('save', ['fits', 'npy']) def test_base_mapper(test_conf_file, seeds, save): # clean output # clean output conf = load_yaml_conf(test_conf_file) conf = load_yaml_conf(test_conf_file) conf['mapper']['save'] = save rmtree(conf['mapper']['output'], ignore_errors=True) rmtree(conf['mapper']['output'], ignore_errors=True) # run simulator # run simulator base_simulator(test_conf_file) base_simulator(test_conf_file) if type(seeds) == list: if type(seeds) == list: seeds = np.arange(conf['simulator']['samples']) seeds = np.arange(conf['simulator']['samples']) base_mapper(test_conf_file, seeds) # write new mapper configuration update_conf_file = join(conf['mapper']['output'], 'tmp.yml') with open(update_conf_file, 'w+') as f: dump(conf, f, default_flow_style=False) base_mapper(update_conf_file, seeds) # check output # check output expected_maps = conf['simulator']['samples'] expected_maps = conf['simulator']['samples'] found_maps = len([f for f in listdir(conf['mapper']['output']) if isfile(join(conf['mapper']['output'], f)) and '.fits' in f and conf['simulator']['name'] in f and 'map' in f]) found_maps = len([f for f in listdir(conf['mapper']['output']) if isfile(join(conf['mapper']['output'], f)) and conf['mapper']['save'] in f and conf['simulator']['name'] in f and 'map' in f]) assert found_maps == expected_maps, f"Expected {expected_maps} maps, found {found_maps}" assert found_maps == expected_maps, f"Expected {expected_maps} maps, found {found_maps}" astrort/testing/test_utils/test_wrap.py +6 −3 Original line number Original line Diff line number Diff line Loading @@ -152,9 +152,11 @@ def test_execute_mapper_no_visibility(test_conf_file): assert isfile(fitsmap) assert isfile(fitsmap) @pytest.mark.test_conf_file @pytest.mark.test_conf_file def test_plot_map(test_conf_file): @pytest.mark.parametrize('save', ['fits', 'npy']) def test_plot_map(test_conf_file, save): # clean output # clean output conf = load_yaml_conf(test_conf_file) conf = load_yaml_conf(test_conf_file) conf['mapper']['save'] = save rmtree(conf['mapper']['output'], ignore_errors=True) rmtree(conf['mapper']['output'], ignore_errors=True) conf['simulator']['samples'] = 1 conf['simulator']['samples'] = 1 log = set_logger(logging.CRITICAL) log = set_logger(logging.CRITICAL) Loading @@ -162,5 +164,6 @@ def test_plot_map(test_conf_file): # run simulator # run simulator base_simulator(test_conf_file) base_simulator(test_conf_file) fitsmap = execute_mapper_no_visibility(conf, log) fitsmap = execute_mapper_no_visibility(conf, log) if save == 'fits': plotmap = plot_map(fitsmap, log) plotmap = plot_map(fitsmap, log) assert isfile(plotmap) assert isfile(plotmap) No newline at end of file astrort/utils/mapping.py +17 −12 Original line number Original line Diff line number Diff line Loading @@ -191,26 +191,19 @@ class Mapper(): extent = [pointing['ra']-roi, pointing['ra']+roi, pointing['dec']-roi, pointing['dec']+roi] extent = [pointing['ra']-roi, pointing['ra']+roi, pointing['dec']-roi, pointing['dec']+roi] return extent return extent def heatmap_with_smoothing(self, x, y, extent, sigma=1, bins=1000): def get_heatmap(self, x, y, extent, sigma=0, bins=1000): r = [[extent[0], extent[1]], [extent[2], extent[3]]] r = [[extent[0], extent[1]], [extent[2], extent[3]]] heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins) heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins) if sigma != 0: heatmap = gaussian_filter(heatmap, sigma=sigma) heatmap = gaussian_filter(heatmap, sigma=sigma) return heatmap.T return heatmap.T def heatmap(self, x, y, extent, bins=1000): def from_dl3_to_dl4(self, dl3_data, pointing, maproi=5, pixelsize=0.02, sigma=0): r = [[extent[0], extent[1]], [extent[2], extent[3]]] heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins) return heatmap.T def from_dl3_to_dl4(self, dl3_data, pointing, maproi=5, pixelsize=0.02, sigma=1): ra = np.array(dl3_data.field('RA')).flatten() ra = np.array(dl3_data.field('RA')).flatten() dec = np.array(dl3_data.field('DEC')).flatten() dec = np.array(dl3_data.field('DEC')).flatten() nbins = self.get_binning_size(maproi=maproi, pixelsize=pixelsize) nbins = self.get_binning_size(maproi=maproi, pixelsize=pixelsize) extent = self.get_extent(pointing=pointing, roi=maproi) extent = self.get_extent(pointing=pointing, roi=maproi) if sigma != 0: dl4_data = self.get_heatmap(ra, dec, extent=extent, bins=nbins, sigma=sigma) dl4_data = self.heatmap_with_smoothing(ra, dec, extent=extent, bins=nbins, sigma=sigma) else: dl4_data = self.heatmap(ra, dec, extent=extent, bins=nbins) return dl4_data return dl4_data def selection_cuts(self, dl3_data, pointing, trange=None, erange=None, maproi=None): def selection_cuts(self, dl3_data, pointing, trange=None, erange=None, maproi=None): Loading @@ -224,3 +217,15 @@ class Mapper(): if len(dl3_data) == 0: if len(dl3_data) == 0: self.log.warning("Empty photon list selection.") self.log.warning("Empty photon list selection.") return dl3_data return dl3_data def get_countmap_in_npy(self, dl3_file, pixelsize=0.02, maproi=5, trange=None, erange=None, sigma=1, npyname='heatmap.npy'): dl3_hdr = self.get_dl3_hdr(dl3_file=dl3_file) pointing = {'ra': float(dl3_hdr['RA_PNT']), 'dec': float(dl3_hdr['DEC_PNT'])} dl3_data = self.get_dl3_data(dl3_file=dl3_file) dl3_data = self.selection_cuts(dl3_data=dl3_data, pointing=pointing, trange=trange, erange=erange, maproi=maproi) if sigma != 0: dl4_data = self.from_dl3_to_dl4(dl3_data=dl3_data, pointing=pointing, maproi=maproi, pixelsize=0.02, sigma=sigma) else: dl4_data = self.from_dl3_to_dl4(dl3_data=dl3_data, pointing=pointing, maproi=maproi, pixelsize=pixelsize) np.save(npyname, dl4_data, allow_pickle=True, fix_imports=True) return Loading
astrort/configure/test.yml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ mapper: plot: true plot: true region: false region: false output: /data01/homes/dipiano/astroRT/astrort/testing/tmp output: /data01/homes/dipiano/astroRT/astrort/testing/tmp save: npy visibility: visibility: start_time: '2030-01-01T00:00:00' start_time: '2030-01-01T00:00:00' Loading
astrort/simulator/base_mapper.py +1 −1 Original line number Original line Diff line number Diff line Loading @@ -37,7 +37,7 @@ def base_mapper(configuration_file, seeds=None): fitsmap = execute_mapper_no_visibility(configuration, log) fitsmap = execute_mapper_no_visibility(configuration, log) log.info(f"Mapping (seed = {seed}) complete, took {time() - clock_map} s") log.info(f"Mapping (seed = {seed}) complete, took {time() - clock_map} s") # make plot # make plot if configuration['mapper']['plot']: if configuration['mapper']['plot'] and configuration['mapper']['save'] == 'fits': clock_plot = time() clock_plot = time() plotmap = plot_map(fitsmap, log) plotmap = plot_map(fitsmap, log) log.info(f"Plotting (seed = {seed}) complete, took {time() - clock_plot} s") log.info(f"Plotting (seed = {seed}) complete, took {time() - clock_plot} s") Loading
astrort/testing/test_simulator/test_base_mapper.py +11 −3 Original line number Original line Diff line number Diff line Loading @@ -8,6 +8,7 @@ import pytest import pytest import numpy as np import numpy as np from yaml import dump from shutil import rmtree from shutil import rmtree from os import listdir from os import listdir from os.path import isfile, join from os.path import isfile, join Loading @@ -17,21 +18,28 @@ from astrort.utils.wrap import load_yaml_conf @pytest.mark.test_conf_file @pytest.mark.test_conf_file @pytest.mark.parametrize('seeds', [None, list()]) @pytest.mark.parametrize('seeds', [None, list()]) def test_base_mapper(test_conf_file, seeds): @pytest.mark.parametrize('save', ['fits', 'npy']) def test_base_mapper(test_conf_file, seeds, save): # clean output # clean output conf = load_yaml_conf(test_conf_file) conf = load_yaml_conf(test_conf_file) conf['mapper']['save'] = save rmtree(conf['mapper']['output'], ignore_errors=True) rmtree(conf['mapper']['output'], ignore_errors=True) # run simulator # run simulator base_simulator(test_conf_file) base_simulator(test_conf_file) if type(seeds) == list: if type(seeds) == list: seeds = np.arange(conf['simulator']['samples']) seeds = np.arange(conf['simulator']['samples']) base_mapper(test_conf_file, seeds) # write new mapper configuration update_conf_file = join(conf['mapper']['output'], 'tmp.yml') with open(update_conf_file, 'w+') as f: dump(conf, f, default_flow_style=False) base_mapper(update_conf_file, seeds) # check output # check output expected_maps = conf['simulator']['samples'] expected_maps = conf['simulator']['samples'] found_maps = len([f for f in listdir(conf['mapper']['output']) if isfile(join(conf['mapper']['output'], f)) and '.fits' in f and conf['simulator']['name'] in f and 'map' in f]) found_maps = len([f for f in listdir(conf['mapper']['output']) if isfile(join(conf['mapper']['output'], f)) and conf['mapper']['save'] in f and conf['simulator']['name'] in f and 'map' in f]) assert found_maps == expected_maps, f"Expected {expected_maps} maps, found {found_maps}" assert found_maps == expected_maps, f"Expected {expected_maps} maps, found {found_maps}"
astrort/testing/test_utils/test_wrap.py +6 −3 Original line number Original line Diff line number Diff line Loading @@ -152,9 +152,11 @@ def test_execute_mapper_no_visibility(test_conf_file): assert isfile(fitsmap) assert isfile(fitsmap) @pytest.mark.test_conf_file @pytest.mark.test_conf_file def test_plot_map(test_conf_file): @pytest.mark.parametrize('save', ['fits', 'npy']) def test_plot_map(test_conf_file, save): # clean output # clean output conf = load_yaml_conf(test_conf_file) conf = load_yaml_conf(test_conf_file) conf['mapper']['save'] = save rmtree(conf['mapper']['output'], ignore_errors=True) rmtree(conf['mapper']['output'], ignore_errors=True) conf['simulator']['samples'] = 1 conf['simulator']['samples'] = 1 log = set_logger(logging.CRITICAL) log = set_logger(logging.CRITICAL) Loading @@ -162,5 +164,6 @@ def test_plot_map(test_conf_file): # run simulator # run simulator base_simulator(test_conf_file) base_simulator(test_conf_file) fitsmap = execute_mapper_no_visibility(conf, log) fitsmap = execute_mapper_no_visibility(conf, log) if save == 'fits': plotmap = plot_map(fitsmap, log) plotmap = plot_map(fitsmap, log) assert isfile(plotmap) assert isfile(plotmap) No newline at end of file
astrort/utils/mapping.py +17 −12 Original line number Original line Diff line number Diff line Loading @@ -191,26 +191,19 @@ class Mapper(): extent = [pointing['ra']-roi, pointing['ra']+roi, pointing['dec']-roi, pointing['dec']+roi] extent = [pointing['ra']-roi, pointing['ra']+roi, pointing['dec']-roi, pointing['dec']+roi] return extent return extent def heatmap_with_smoothing(self, x, y, extent, sigma=1, bins=1000): def get_heatmap(self, x, y, extent, sigma=0, bins=1000): r = [[extent[0], extent[1]], [extent[2], extent[3]]] r = [[extent[0], extent[1]], [extent[2], extent[3]]] heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins) heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins) if sigma != 0: heatmap = gaussian_filter(heatmap, sigma=sigma) heatmap = gaussian_filter(heatmap, sigma=sigma) return heatmap.T return heatmap.T def heatmap(self, x, y, extent, bins=1000): def from_dl3_to_dl4(self, dl3_data, pointing, maproi=5, pixelsize=0.02, sigma=0): r = [[extent[0], extent[1]], [extent[2], extent[3]]] heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins) return heatmap.T def from_dl3_to_dl4(self, dl3_data, pointing, maproi=5, pixelsize=0.02, sigma=1): ra = np.array(dl3_data.field('RA')).flatten() ra = np.array(dl3_data.field('RA')).flatten() dec = np.array(dl3_data.field('DEC')).flatten() dec = np.array(dl3_data.field('DEC')).flatten() nbins = self.get_binning_size(maproi=maproi, pixelsize=pixelsize) nbins = self.get_binning_size(maproi=maproi, pixelsize=pixelsize) extent = self.get_extent(pointing=pointing, roi=maproi) extent = self.get_extent(pointing=pointing, roi=maproi) if sigma != 0: dl4_data = self.get_heatmap(ra, dec, extent=extent, bins=nbins, sigma=sigma) dl4_data = self.heatmap_with_smoothing(ra, dec, extent=extent, bins=nbins, sigma=sigma) else: dl4_data = self.heatmap(ra, dec, extent=extent, bins=nbins) return dl4_data return dl4_data def selection_cuts(self, dl3_data, pointing, trange=None, erange=None, maproi=None): def selection_cuts(self, dl3_data, pointing, trange=None, erange=None, maproi=None): Loading @@ -224,3 +217,15 @@ class Mapper(): if len(dl3_data) == 0: if len(dl3_data) == 0: self.log.warning("Empty photon list selection.") self.log.warning("Empty photon list selection.") return dl3_data return dl3_data def get_countmap_in_npy(self, dl3_file, pixelsize=0.02, maproi=5, trange=None, erange=None, sigma=1, npyname='heatmap.npy'): dl3_hdr = self.get_dl3_hdr(dl3_file=dl3_file) pointing = {'ra': float(dl3_hdr['RA_PNT']), 'dec': float(dl3_hdr['DEC_PNT'])} dl3_data = self.get_dl3_data(dl3_file=dl3_file) dl3_data = self.selection_cuts(dl3_data=dl3_data, pointing=pointing, trange=trange, erange=erange, maproi=maproi) if sigma != 0: dl4_data = self.from_dl3_to_dl4(dl3_data=dl3_data, pointing=pointing, maproi=maproi, pixelsize=0.02, sigma=sigma) else: dl4_data = self.from_dl3_to_dl4(dl3_data=dl3_data, pointing=pointing, maproi=maproi, pixelsize=pixelsize) np.save(npyname, dl4_data, allow_pickle=True, fix_imports=True) return