HensleyDraine2017

class pysm3.HensleyDraine2017(map_I, map_Q, map_U, freq_ref_I, freq_ref_P, nside, has_polarization=True, unit_I=None, unit_Q=None, unit_U=None, map_dist=None, mpi_comm=None, f_fe=None, f_car=None, rnd_uval=True, uval=0.2, nside_uval=256, seed=None)[source] [edit on github]

Bases: Model

This is a model for modified black body emission.

Attributes:
I_ref, Q_ref, U_ref: ndarray

Arrays containing the intensity or polarization reference templates at frequency freq_ref_I or freq_ref_P.

This function initializes the Hensley-Draine 2017 model.

The initialization of this model consists of:

i) reading in emission templates from file, reading in data tables for the emissivity of silicate grains, silsicate grains with iron inclusions, and carbonaceous grains,

ii) interpolating these tables across wavelength and interstellar radiation field (ISRF) strength,

iii) generating a random realization of the interstellar radiation field, based on the modified Stefan-Boltzmann law, and measurements of dust temperature from Planck.

Parameters:
map_I, map_Q, map_U: `pathlib.Path` object

Paths to the maps to be used as I, Q, U templates.

unit_*string or Unit

Unit string or Unit object for all input FITS maps, if None, the input file should have a unit defined in the FITS header.

freq_ref_I, freq_ref_P: Quantity or string

Reference frequencies at which the intensity and polarization templates are defined. They should be a astropy Quantity object or a string (e.g. “1500 MHz”) compatible with GHz.

nside: int

Resolution parameter at which this model is to be calculated.

f_fe: float

Fractional composition of grain population with iron inclusions.

f_car: float

Fractional composition of grain population in carbonaceous grains.

rnd_uval: bool (optional, default=True)

Decide whether to draw a random realization of the ISRF.

uval: float

This value is used only if rnd_uval is False, the default of 0.2 corresponds reasonably well to a Modifield Black Body model with temperature of 20K and an index of 1.54

nside_uval: int (optional, default=256)

HEALPix nside at which to evaluate the ISRF before ud_grade is applied to get the output scaling law. The default is the resolution at which the inputs available (COMMANDER dust beta and temperature).

seed: int

Number used to seed RNG for uval.

Methods Summary

evaluate_hd17_model_scaling(freq)

Method to evaluate the frequency scaling in the HD17 model.

evaluate_mbb_scaling(freq)

Method to evaluate a simple MBB scaling model with a constant index of 1.54.

get_emission(freqs[, weights])

This function calculates the model of Hensley and Draine 2017 for the emission of a mixture of silicate, cabonaceous, and silicate grains with iron inclusions.

Methods Documentation

evaluate_hd17_model_scaling(freq: Unit('GHz'))[source] [edit on github]

Method to evaluate the frequency scaling in the HD17 model. This caluculates the scaling factor to be applied to a set of T, Q, U maps in uK_RJ at some reference frequencies self.freq_ref_I, self.freq_ref_P, in order to scale them to frequencies freqs.

Parameters:
freq: float

Frequency, convertible to microns, at which scaling factor is to be calculated.

Returns:
tuple(ndarray)

Scaling factor for intensity and polarization, at frequency freq. Tuple contains two arrays, each with shape (number of pixels).

evaluate_mbb_scaling(freq: Unit('GHz'))[source] [edit on github]

Method to evaluate a simple MBB scaling model with a constant index of 1.54. This method is used for frequencies below the break frequency (nominally 10 GHz), as the data the HD17 model relies upon stops at 10 GHz.

At these frequencies, dust emission is largely irrelevant compared to other low frequency foregrounds, and so we do not expect the modeling assumptions to be significant. We therefore use a Rayleigh Jeans model for simplicity, and fix scale it from the SED at the break frequency.

Parameters:
freq: float

Frequency at which to evaluate model (convertible to GHz).

Returns:
tuple(ndarray)

Scaling factor for intensity and polarization, at frequency freq. Tuple contains two arrays, each with shape (number of pixels).

get_emission(freqs: Unit('GHz'), weights=None)[source] [edit on github]

This function calculates the model of Hensley and Draine 2017 for the emission of a mixture of silicate, cabonaceous, and silicate grains with iron inclusions.

Parameters:
freqs: float

Frequencies in GHz. When an array is passed, this is treated as a specification of a bandpass, and the bandpass average is calculated. For a single frequency, the emission at that frequency is returned (delta bandpass assumption).

Returns:
ndarray

Maps of T, Q, U for the given frequency specification.

Notes

If weights is not given, a flat bandpass is assumed. If weights is specified, it is automatically normalized.