Source code for jetset.spectral_shapes


__author__ = "Andrea Tramacere"

import numpy as np
from astropy import units
from .frame_converter import  convert_nuFnu_to_nuLnu_src, convert_nu_to_src, convert_nu_src_to_nu_blob, convert_nuLnu_src_to_nuLnu_blob
from .utils import *

__all__=['SED']





[docs] class SED(object): """ Class handling the SED """ def __init__(self, name=None, nu=None, nuFnu=None, nu_residuals=None, residuals=None, nu_src_residuals=None, nuLnu_src_residuals=None, dl=None, z=None, log_log=False, beaming=None): if beaming is None: beaming =1 self.beaming=beaming self.name=name self._nu_units=units.Hz self._nuFnu_units=units.erg/units.cm**2/units.s self._nu_src_units=units.Hz self._nuLnu_src_units = units.erg/units.s self._nuLnu_blob_units = units.erg/units.s self.nu=(nu) self.nuFnu=(nuFnu) self._loglog=log_log if z is not None and dl is not None: # calling setter do not change self.nu_src= (z) # calling setter do not change self.nuLnu_src = (z,dl) self.nu_residuals=nu_residuals self.residuals=residuals self.nu_src_residuals = nu_src_residuals self.nuLnu_src_residuals = nuLnu_src_residuals @property def nu(self): return self._nu @nu.setter def nu(self,nu): if nu is None: self._nu=nu else: self._nu=nu*self._nu_units @property def nuFnu(self): return self._nuFnu @nuFnu.setter def nuFnu(self,nuFnu): if nuFnu is None: self._nuFnu=nuFnu else: self._nuFnu = nuFnu * self._nuFnu_units @property def nu_src(self): return self._nu_src @nu_src.setter def nu_src(self, z): #print('->self._nu',self._nu) if self._nu is None: self._nu_src = self._nu else: if self._loglog is True: self._nu_src =np.log10( convert_nu_to_src(10**(self._nu.value),z,in_frame='obs') )* self._nu_units else: self._nu_src = convert_nu_to_src(self._nu.value,z,in_frame='obs') * self._nu_units #print('->self._nu_src', self._nu_src) @property def nuLnu_src(self): return self._nuLnu @nuLnu_src.setter def nuLnu_src(self, t): z,dl=t #print('2') #print('->',t,z,dl,self._loglog) if self._nuFnu is None: self._nuLnu = None else: if self._loglog is True: self._nuLnu =np.log10( convert_nuFnu_to_nuLnu_src(10**(self._nuFnu.value),z,'obs',dl)) * self._nuLnu_src_units else: self._nuLnu = convert_nuFnu_to_nuLnu_src(self._nuFnu.value, z, 'obs', dl) * self._nuLnu_src_units @property def nuLnu_blob(self): return convert_nuLnu_src_to_nuLnu_blob(self._nuLnu, beaming=self.beaming, in_frame='src')* self._nuLnu_src_units @property def nu_blob(self): return convert_nu_src_to_nu_blob(self._nu_src, beaming=self.beaming, in_frame='src')* self._nu_units
[docs] def get_model_points(self,log_log=False,frame='obs'): check_frame(frame) if frame == 'obs': x, y = self.nu.value, self.nuFnu.value elif frame == 'src': x, y = self.nu_src.value, self.nuLnu_src.value elif frame == 'blob': x,y = self.nu_blob.value, self.nuLnu_blob.value else: unexpected_behaviour() if log_log is True: x=np.copy(x) y=np.copy(y) msk = y>0 x = np.log10(x) y[~msk] = -1E10 y[msk]= np.log10(y[msk]) return x, y
[docs] def get_residuals(self, log_log=False): residuals = self.residuals nu_residuals = self.nu_residuals if log_log == False: return nu_residuals, residuals else: return nu_residuals, np.log10(residuals)
[docs] def fill(self,nu=None,nuFnu=None,nu_residuals=None,residuals=None,log_log=False): self._loglog=log_log #if nu is not None: self.nu=(nu) #if nuFnu is not None: self.nuFnu=(nuFnu) if residuals is not None: self.residuals=residuals if nu_residuals is not None: self.nu_residuals=nu_residuals
[docs] def fill_nuLnu(self, nu_src_residuals=None, nuLnu_src_residuals=None, z=None, dl=None): if z is not None and dl is not None: #calling setter do not change self.nu_src = (z) # calling setter do not change self.nuLnu_src = (z,dl) if nuLnu_src_residuals is not None: self.nuLnu_src_residuals = nuLnu_src_residuals if nu_src_residuals is not None: self.nu_src_residuals = nu_src_residuals
# # class poly_shape(object): # """ # Class for log-log polynomial shapes # """ # def __init__(self,name=None,nu=None,nuFnu=None): # self.name=name # self.nu=nu # self.nuFnu=nuFnu # # def get_model_points(self): # return self.nu,self.nuFnu # #