Source code for paltas.Sources.cosmos_sersic

# -*- coding: utf-8 -*-
"""
Generate Lenstronomy inputs for a COSMOS galaxy + a Sersic Ellipse

This module contains a class that combines a COSMOS galaxy and a Sersic light 
distribution as the two sources for paltas.
"""
from .cosmos import COSMOSCatalog
from .sersic import SingleSersicSource
from ..Utils.cosmology_utils import absolute_to_apparent


[docs] class COSMOSSersic(COSMOSCatalog): """Class to Combine COSMOS galaxy with Sersic light source Args: cosmology_parameters (str,dict, or colossus.cosmology.Cosmology): Either a name of colossus cosmology, a dict with 'cosmology name': name of colossus cosmology, an instance of colussus cosmology, or a dict with H0 and Om0 ( other parameters will be set to defaults). source_parameters (dict): A dictionary containing all the parameters needed to draw sources. Notes: Required Parameters - minimum_size_in_pixels - smallest cutout size for COSMOS sources in pixels - faintest_apparent_mag - faintest apparent AB magnitude for COSMOS source - max_z - highest redshift for COSMOS source - smoothing_sigma - smoothing kernel to apply to COSMOS source in pixels - cosmos_folder - path to COSMOS images - random_rotation - boolean dictating if COSMOS sources will be rotated randomly when drawn - min_flux_radius - minimum half-light radius for COSMOS source in pixels - center_x - x-coordinate lens center for COSMOS source in units of arcseconds - center_y- y-coordinate lens center for COSMOS source in units of arcseconds - mag_sersic - AB absolute magnitude of the sersic - output_ab_zeropoint - AB magnitude zeropoint of the detector - R_sersic - Sersic radius in units of arcseconds - n_sersic - Sersic index - e1_sersic - x-direction ellipticity eccentricity for sersic - e2_sersic - xy-direction ellipticity eccentricity for sersic - center_x_sersic - x-coordinate lens center for sersic in units of arcseconds - center_y_sersic - y-coordinate lens center for sersic in units of arcseconds - z_source - source redshift Optional Parameters - source_absolute_magnitude - AB absolute magnitude of the source. The light from the catalog galaxy will be rescaled to match this magnitude. """ required_parameters = ('minimum_size_in_pixels','faintest_apparent_mag', 'max_z','smoothing_sigma','cosmos_folder','random_rotation', 'min_flux_radius','output_ab_zeropoint','z_source', 'mag_sersic', 'center_x','center_y','R_sersic', 'n_sersic','e1_sersic', 'e2_sersic', 'center_x_sersic','center_y_sersic') optional_parameters = ('source_absolute_magnitude')
[docs] def draw_source(self, catalog_i=None, phi=None): """Creates lenstronomy kwargs for a COSMOS catalog image and a Sersic source Args: catalog_i (int): Index of image in catalog phi (float): Rotation to apply to the image. If not provided, use random or original rotation depending on source_parameters['random_rotation'] Returns: (list,list) A list containing the models ['INTERPOL', 'SERSIC_ELLIPSE'] and a list of two kwarg dicts for the instances of the lenstronomy classes Notes: If catalog_i is not provided, one that meets the cuts will be selected at random. """ model_list, kwargs_list, _ = ( COSMOSCatalog.draw_source(self, catalog_i, phi)) # look up difference between append & extend model_list.append('SERSIC_ELLIPSE') # create dict for sersic sersic_kwargs_dict = {} suffix = '_sersic' for param_name in self.__class__.required_parameters: if suffix in param_name: # R_sersic & n_sersic keep suffix if (param_name == 'R_sersic' or param_name == 'n_sersic'): sersic_kwargs_dict[param_name] = ( self.source_parameters[param_name]) else: sersic_kwargs_dict[param_name[:-7]] = ( self.source_parameters[param_name]) # mag to amp conversion sersic_kwargs_dict.pop('mag') mag_apparent = absolute_to_apparent(self.source_parameters['mag_sersic'], self.source_parameters['z_source'],self.cosmo) sersic_kwargs_dict['amp'] = SingleSersicSource.mag_to_amplitude( mag_apparent,self.source_parameters['output_ab_zeropoint'], sersic_kwargs_dict) kwargs_list.append(sersic_kwargs_dict) return model_list, kwargs_list, [self.source_parameters['z_source']]*2