def prepare(self, data, src, lo=None, hi=None): # Note: src is source model before folding if not isinstance(data, DataPHA): raise IOErr('notpha', data.name) lo, hi = bounds_check(lo, hi) self.units = data.units if self.units == "channel": warning("Channel space is unappropriate for the PHA unfolded" + " source model,\nusing energy.") self.units = "energy" self.xlabel = data.get_xlabel() self.title = f'Source Model of {data.name}' self.xlo, self.xhi = data._get_indep(filter=False) # Why do we not apply the mask at the end of prepare? # self.mask = filter_bins((lo, ), (hi, ), (self.xlo, )) # The source model is assumed to not contain an instrument model, # and so it evaluates the expected number of photons/cm^2/s in # each bin (or it can be thought of as a 1 second exposure). # self.y = src(self.xlo, self.xhi) prefix_quant = 'E' quant = 'keV' if self.units == "wavelength": # No other labels use the LaTeX forms for lambda and # Angstrom, so use the text version here too. # prefix_quant = to_latex('\\lambda') # quant = to_latex('\\AA') prefix_quant = 'lambda' quant = 'Angstrom' (self.xlo, self.xhi) = (self.xhi, self.xlo) xmid = abs(self.xhi - self.xlo) sqr = to_latex('^2') self.xlabel = f'{self.units.capitalize()} ({quant})' self.ylabel = f'%s Photons/sec/cm{sqr}%s' if data.plot_fac == 0: self.y /= xmid self.ylabel = self.ylabel % (f'f({prefix_quant})', f'/{quant} ') elif data.plot_fac == 1: self.ylabel = self.ylabel % (f'{prefix_quant} f({prefix_quant})', '') elif data.plot_fac == 2: self.y *= xmid self.ylabel = self.ylabel % ( f'{prefix_quant}{sqr} f({prefix_quant})', f' {quant} ') else: raise PlotErr('plotfac', 'Source', data.plot_fac)
def prepare(self, data, src, lo=None, hi=None): # Note: src is source model before folding if not isinstance(data, DataPHA): raise IOErr('notpha', data.name) lo, hi = bounds_check(lo, hi) self.units = data.units if self.units == "channel": warning("Channel space is unappropriate for the PHA unfolded" + " source model,\nusing energy.") self.units = "energy" self.xlabel = data.get_xlabel() self.title = 'Source Model of %s' % data.name self.xlo, self.xhi = data._get_indep(filter=False) self.mask = filter_bins((lo, ), (hi, ), (self.xlo, )) self.y = src(self.xlo, self.xhi) prefix_quant = 'E' quant = 'keV' if self.units == "wavelength": # No other labels use the LaTeX forms for lambda and # Angstrom, so use the text version here too. # prefix_quant = to_latex('\\lambda') # quant = to_latex('\\AA') prefix_quant = 'lambda' quant = 'Angstrom' (self.xlo, self.xhi) = (self.xhi, self.xlo) xmid = abs(self.xhi - self.xlo) sqr = to_latex('^2') self.xlabel = '%s (%s)' % (self.units.capitalize(), quant) self.ylabel = '%s Photons/sec/cm' + sqr + '%s' if data.plot_fac == 0: self.y /= xmid self.ylabel = self.ylabel % ('f(%s)' % prefix_quant, '/%s ' % quant) elif data.plot_fac == 1: self.ylabel = self.ylabel % ('%s f(%s)' % (prefix_quant, prefix_quant), '') elif data.plot_fac == 2: self.y *= xmid self.ylabel = self.ylabel % ('%s%s f(%s)' % (prefix_quant, sqr, prefix_quant), ' %s ' % quant) else: raise PlotErr('plotfac', 'Source', data.plot_fac)
def prepare(self, data, src, lo=None, hi=None): # Note: src is source model before folding if not isinstance(data, DataPHA): raise IOErr('notpha', data.name) lo, hi = bounds_check(lo, hi) self.units = data.units if self.units == "channel": warning("Channel space is unappropriate for the PHA unfolded" + " source model,\nusing energy.") self.units = "energy" self.xlabel = data.get_xlabel() self.title = 'Source Model of %s' % data.name self.xlo, self.xhi = data._get_indep(filter=False) self.mask = filter_bins((lo,), (hi,), (self.xlo,)) self.y = src(self.xlo, self.xhi) prefix_quant = 'E' quant = 'keV' if self.units == "wavelength": # No other labels use the LaTeX forms for lambda and # Angstrom, so use the text version here too. # prefix_quant = to_latex('\\lambda') # quant = to_latex('\\AA') prefix_quant = 'lambda' quant = 'Angstrom' (self.xlo, self.xhi) = (self.xhi, self.xlo) xmid = abs(self.xhi - self.xlo) sqr = to_latex('^2') self.xlabel = '%s (%s)' % (self.units.capitalize(), quant) self.ylabel = '%s Photons/sec/cm' + sqr + '%s' if data.plot_fac == 0: self.y /= xmid self.ylabel = self.ylabel % ('f(%s)' % prefix_quant, '/%s ' % quant) elif data.plot_fac == 1: self.ylabel = self.ylabel % ('%s f(%s)' % (prefix_quant, prefix_quant), '') elif data.plot_fac == 2: self.y *= xmid self.ylabel = self.ylabel % ('%s%s f(%s)' % (prefix_quant, sqr, prefix_quant), ' %s ' % quant) else: raise PlotErr('plotfac', 'Source', data.plot_fac)
def prepare(self, data, src, lo=None, hi=None): # Note: src is source model before folding if not isinstance(data, DataPHA): raise IOErr("notpha", data.name) lo, hi = bounds_check(lo, hi) self.units = data.units if self.units == "channel": warning("Channel space is unappropriate for the PHA unfolded" + " source model,\nusing energy.") self.units = "energy" self.xlabel = data.get_xlabel() self.title = "Source Model of %s" % data.name self.xlo, self.xhi = data._get_indep(filter=False) self.mask = filter_bins((lo,), (hi,), (self.xlo,)) self.y = src(self.xlo, self.xhi) prefix_quant = "E" quant = "keV" if self.units == "wavelength": prefix_quant = "\\lambda" quant = "\\AA" (self.xlo, self.xhi) = (self.xhi, self.xlo) xmid = abs(self.xhi - self.xlo) self.xlabel = "%s (%s)" % (self.units.capitalize(), quant) self.ylabel = "%s Photons/sec/cm^2%s" if data.plot_fac == 0: self.y /= xmid self.ylabel = self.ylabel % ("f(%s)" % prefix_quant, "/%s " % quant) elif data.plot_fac == 1: self.ylabel = self.ylabel % ("%s f(%s)" % (prefix_quant, prefix_quant), "") elif data.plot_fac == 2: self.y *= xmid self.ylabel = self.ylabel % ("%s^{2} f(%s)" % (prefix_quant, prefix_quant), " %s " % quant) else: raise PlotErr("plotfac", "Source", data.plot_fac)