Base Model

class rapoc.models.model.Model(input_data)[source]

Base model class.

Variables:
  • input_data (str or dict) – data file name or data dictionary

  • model_name (str) – model name

  • band (tuple) – investigated band. Is initialised only after the use of map()

  • selected_grid (astropy.units.Quantity) – investigated grid. Is initialised only after the use of map()

  • mol (str) – molecule name

  • mol_mass (astropy.units.Quantity) – molecular mass

  • pressure_grid (astropy.units.Quantity) – data pressure grid in si units

  • temperature_grid (astropy.units.Quantity) – data temperature grid in si units

  • wavenumber_grid (astropy.units.Quantity) – data wavenumber grid

  • opacities (astropy.units.Quantity) – data opacities grid in si units

  • frequency_grid (astropy.units.Quantity) – data frequency grid

  • wavelength_grid (astropy.units.Quantity) – data wavelength grid

Parameters:

input_data (str or dict) – data file name or input_data dictionary. If the input is a str, the correspondent loader is used (ExoMolFileLoader) if the file format is supported. If is dict, then DictLoader is used.

Raises:

IOError – if data format is not supported:

Examples

For the sake of semplicity let’s assume we use an ExoMol file as input

>>> from rapoc.models import Model
>>> exomolFile = 'example.TauREx.h5'
>>> model = Model(input_data=exomolFile)
opacity_model(opacities, nu, T_input)[source]

Computes the mean opacity in the investigated range.

Parameters:
  • opacities (np.array) – opacity array. Has the same dimension of the frequency grid nu

  • nu (np.array) – frequency grid

  • T_input (float) – temperature

Returns:

mean opacity computed from the model

Return type:

float

extract_opacities(T_input, band, P_input=None, units='si')[source]

Returns the input_data opacities for given pressure, temperature and band.

Parameters:
  • T_input (float or np.array) – temperature to use for the estimation. This should be a astropy.units.Quantity with specified units, if not K are assumed as units. Can either be a single value or an array.

  • band (tuple) – this should be a tuple of astropy.units.Quantity indicating the edges of the band to use in the estimation. The units used reveal the intention to work in wavelengths, wavenumbers or frequencies.

  • P_input (float or np.array) – pressure to use for the estimation. This should be a astropy.units.Quantity with specified units, if not Pa are assumed as units. Can either be a single value or an array. It can be None in the case of data not depending on pressure, as Rayleigh scattering. Default is None.

  • units (str or astropy.units, optional) – indicates the output units system. If si the opacity is returned as \(m^2/kg\), if cgs is returned as \(cm^2/g\). Instead of a string, you can also indicate the units using astropy.units. Units is si by default.

Returns:

  • astropy.units.Quantity – returns the estimated opacity for the pressures and temperatures indicated. If only one pressure and temperature are indicated, it returns a single Quantity. If n pressures and m temperatures are indicated, it return a Quantity array of dimensions (n,m)

  • list – list of wavenumber (or wavelength or frequency) index relative to the investigated band

estimate(T_input, band, P_input=None, mode='closest', units='si')[source]

It estimates the model opacity in the indicated pressure and temperature grid for the indicated band, using the opacity_model().

Parameters:
  • T_input (float or np.array) – temperature to use for the estimation. This should be a astropy.units.Quantity with specified units, if not K are assumed as units. Can either be a single value or an array.

  • band (tuple) – this should be a tuple of astropy.units.Quantity indicating the edges of the band to use in the estimation. The units used reveal the intention to work in wavelengths, wavenumbers or frequencies.

  • P_input (float or np.array) – pressure to use for the estimation. This should be a astropy.units.Quantity with specified units, if not Pa are assumed as units. Can either be a single value or an array. It can be None in the case of data not depending on pressure, as Rayleigh scattering. Default is None.

  • mode (str, optional) – indicates the estimation mode desired. If closest the output will be the opacity computed from the data at the nearest pressure on the data grid to the indicated one, and at the nearest temperature on the data grid to the indicated one. If {‘linear’, ‘loglinear’} it’s used the scipy.interpolate.griddata() with the indicated kind. To interpolate a map of opacities over the data grid is computed first using map(). Mode is closest by default.

  • units (str or astropy.units, optional) – indicates the output units system. If si the opacity is returned as \(m^2/kg\), if cgs is returned as \(cm^2/g\). Instead of a string, you can also indicate the units using astropy.units. Units is si by default.

Returns:

returns the estimated opacity for the pressures and temperatures indicated. If only one pressure and temperature are indicated, it returns a single Quantity. If n pressures and m temperatures are indicated, it return a Quantity array of dimensions (n,m)

Return type:

astropy.units.Quantity

Raises:
  • NotImplementedError: – if the indicated mode is not supported

  • astropy.units.UnitConversionError: – if the input units cannot be converted to si

  • AttributeError: – if the band cannot be interpreted as wavelength, wavenumber or frequency

estimate_plot(T_input, band, P_input=None, mode='closest', force_map=False, fig=None, ax=None, yscale='log', xscale='linear', grid='wavelength')[source]

Produces a plot of the estimates (produced with estimate()), comparing the raw data with the result. If a single estimate is to be plotted, this method produces a plot of raw opacities vs wavelength from the opacities (in grey) and the mean opacity estimated. If multiple estimates are be plotted, it produces a 3D plot, with the surface of mean opacity vs temperature and pressure from the data grid (using map_plot()) and the interpolated data superimposed.

Parameters:
  • T_input (float or np.array) – temperature to use for the estimation. This should be a astropy.units.Quantity with specified units, if not K are assumed as units. Can either be a single value or an array.

  • band (tuple) – this should be a tuple of astropy.units.Quantity indicating the edges of the band to use in the estimation. The units used reveal the intention to work in wavelengths, wavenumbers or frequencies.

  • P_input (float or np.array) – pressure to use for the estimation. This should be a astropy.units.Quantity with specified units, if not Pa are assumed as units. Can either be a single value or an array. It can be None in the case of data not depending on pressure, as Rayleigh scattering. Default is None.

  • mode (str, optional) – indicates the estimation mode desired. If closest the output will be the opacity computed from the data at the nearest pressure on the data grid to the indicated one, and at the nearest temperature on the data grid to the indicated one. If {‘linear’, ‘loglinear’} it’s used the scipy.interpolate.griddata() with the indicated kind. Mode is closest by default.

  • force_map (bool) – If True a 3D map plot is generate even for a single estimate. Default is False.

  • fig (matplotlib.pyplot.figure, optional) – indicates the figure to use. If None a new figure is produced. Default is None

  • ax (matplotlib.pyplot.axis, optional) – indicates the axis of the figure to use. If None a new axis is produced. Default is None

  • yscale (str) – y-axis scale to use. Default is log

  • xscale (str) – x-axis scale to use. Default is linear

  • grid (str) – x-axis grid format. {wavelength, frequency, wavenumber} are supported. Default is wavelength.

Returns:

  • matplotlib.pyplot.figure, optional – figure containing the plot

  • matplotlib.pyplot.axis, optional – axis containing the plot

Raises:

KeyError: – if the indicated grid is not supported

map(band)[source]

Returns the mean opacity map for the indicated model.

Parameters:

band (tuple) – this should be a tuple of astropy.units.Quantity indicating the edges of the band to use in the estimation. The units used reveal the intention to work in wavelengths, wavenumbers or frequencies.

Returns:

mean opacity map in si units

Return type:

np.array

Notes

If the map has been already built for the indicated band, then the method returns the previous map. This speeds up the use of the code in external functions.

map_plot(band, fig=None, ax=None)[source]

Produces a 3D-plot of the model mean opacity map built with map().

Parameters:
  • band (tuple) – this should be a tuple of astropy.units.Quantity indicating the edges of the band to use in the estimation. The units used reveal the intention to work in wavelengths, wavenumbers or frequencies.

  • fig (matplotlib.pyplot.figure, optional) – indicates the figure to use. If None a new figure is produced. Default is None

  • ax (matplotlib.pyplot.axis, optional) – indicates the axis of the figure to use. If None a new axis is produced. Default is None

Returns:

  • matplotlib.pyplot.figure, optional – figure containing the plot

  • matplotlib.pyplot.axis, optinal – axis containing the plot