def spectrum(request): data = TARDISSpectrum( request.param['nu'], request.param['lum'], ) distance = request.param['distance'] if distance: data.distance = distance return data
def spectrum(request): data = TARDISSpectrum( request.param["nu"], request.param["lum"], ) distance = request.param["distance"] if distance: data.distance = distance return data
def calculate_spectrum(self, frequency, points=None, interpolate_shells=-1, raises=True): # Very crude implementation # The c extension needs bin centers (or something similar) # while TARDISSpectrum needs bin edges self.check(raises) N = points or self.points self.interpolate_shells = interpolate_shells frequency = frequency.to("Hz", u.spectral()) luminosity = u.Quantity(formal_integral(self, frequency, N), "erg") * (frequency[1] - frequency[0]) # Ugly hack to convert to 'bin edges' frequency = u.Quantity( np.concatenate([ frequency.value, [frequency.value[-1] + np.diff(frequency.value)[-1]], ]), frequency.unit, ) return TARDISSpectrum(frequency, luminosity)
def calculate_spectrum(self, frequency, points=None, interpolate_shells=0, raises=True): # Very crude implementation # The c extension needs bin centers (or something similar) # while TARDISSpectrum needs bin edges self.check(raises) N = points or self.points if interpolate_shells == 0: # Default Value interpolate_shells = max(2 * self.model.no_of_shells, 80) warnings.warn( "The number of interpolate_shells was not " f"specified. The value was set to {interpolate_shells}.") self.interpolate_shells = interpolate_shells frequency = frequency.to("Hz", u.spectral()) luminosity = u.Quantity(self.formal_integral(frequency, N), "erg") * (frequency[1] - frequency[0]) # Ugly hack to convert to 'bin edges' frequency = u.Quantity( np.concatenate([ frequency.value, [frequency.value[-1] + np.diff(frequency.value)[-1]], ]), frequency.unit, ) return TARDISSpectrum(frequency, luminosity)
def test_creat_from_J(spectrum): actual = TARDISSpectrum( spectrum._frequency, spectrum.luminosity.to('J / s') ) compare_spectra(actual, spectrum)
def test_creat_from_wl(spectrum): actual = TARDISSpectrum( spectrum._frequency.to('angstrom', u.spectral()), spectrum.luminosity ) compare_spectra(actual, spectrum)
def test_luminosity_to_flux(): lum = u.Quantity(np.arange(1, 4, 1) * np.pi, "erg / s") distance = u.Quantity(0.5, "cm") flux = TARDISSpectrum.luminosity_to_flux(lum, distance) test_helper.assert_quantity_allclose( flux, u.Quantity(lum.value / np.pi, "erg s^-1 cm^-2") )
def test_luminosity_to_flux(): lum = u.Quantity(np.arange(1, 4, 1) * np.pi, 'erg / s') distance = u.Quantity(.5, 'cm') flux = TARDISSpectrum.luminosity_to_flux(lum, distance) test_helper.assert_quantity_allclose( flux, u.Quantity(lum.value / np.pi, 'erg s^-1 cm^-2') )
def spectrum_virtual(self): if np.all(self.montecarlo_virtual_luminosity == 0): warnings.warn( "MontecarloRunner.spectrum_virtual" "is zero. Please run the montecarlo simulation with" "no_of_virtual_packets > 0", UserWarning) return TARDISSpectrum(self.spectrum_frequency, self.montecarlo_virtual_luminosity)
def spectrum_reabsorbed(self): return TARDISSpectrum(self.spectrum_frequency, self.montecarlo_reabsorbed_luminosity)
def spectrum(self): return TARDISSpectrum(self.spectrum_frequency, self.montecarlo_emitted_luminosity)