Source code for gaiaxpy.generator.multi_synthetic_photometry_generator

from sys import stdout

from tqdm import tqdm

from gaiaxpy.core.generic_variables import pbar_colour, pbar_units, pbar_message
from gaiaxpy.spectrum.multi_synthetic_photometry import MultiSyntheticPhotometry
from .synthetic_photometry_generator import SyntheticPhotometryGenerator


[docs] class MultiSyntheticPhotometryGenerator(SyntheticPhotometryGenerator): def __init__(self, photometric_system, bp_model, rp_model): self.function_label = 'photsystem' if not photometric_system: raise ValueError('Photometric system list cannot be empty.') self.photometric_system = photometric_system self.system_label = [phot_system.get_system_label() for phot_system in self.photometric_system] self.bp_model = bp_model self.rp_model = rp_model
[docs] def generate(self, parsed_input_data, extension, output_file, output_format, save_file): __FUNCTION_KEY = 'photometry' # Recover attributes systems = self.photometric_system internal_systems = [system.value for system in systems] # Generate XP variables xp_sampling_list = [system.load_xpsampling_from_xml() for system in internal_systems] xp_sampling_grid_xp_merge_tuples_list = [system.load_xpmerge_from_xml() for system in internal_systems] xp_sampling_grid_list = [element[0] for element in xp_sampling_grid_xp_merge_tuples_list] xp_merge_list = [element[1] for element in xp_sampling_grid_xp_merge_tuples_list] # Get basis functions list sampled_basis_func_list = [self._get_sampled_basis_functions(xp_sampling, xp_sampling_grid) for xp_sampling, xp_sampling_grid in zip(xp_sampling_list, xp_sampling_grid_list)] # One list per system photometry_list_of_lists = [self._create_photometry_list(parsed_input_data, phot_system, sampled_basis_func, xp_merge) for phot_system, sampled_basis_func, xp_merge in zip(systems, sampled_basis_func_list, xp_merge_list)] # Now the first list contains the photometries in all systems for the first source_id, and so on. rearranged_photometry_list = [sublist for sublist in tqdm(zip(*photometry_list_of_lists), desc=pbar_message[__FUNCTION_KEY], total=len(parsed_input_data), unit=pbar_units[__FUNCTION_KEY], leave=False, colour=pbar_colour, file=stdout)] return MultiSyntheticPhotometry(systems, rearranged_photometry_list)._generate_output_df()