AbsSpectrumBase#

class quantarhei.spectroscopy.absbase.AbsSpectrumBase(axis: Any = None, data: Any = None)[source]#

Bases: DFunction, EnergyUnitsManaged, DataSaveable

Provides basic container for absorption spectrum

Examples

set_axis(axis: Any) None[source]#

Sets axis atribute

Parameters:

axis (FrequencyAxis object) – Frequency axis object. This object has managed energy units

set_data(data: Any) None[source]#

Sets data atribute

Parameters:

data (array like object (numpy array)) – Sets the data of the absorption spectrum

set_by_interpolation(x: Any, y: Any, xaxis: str = 'frequency') None[source]#

Sets the data by interpolation with splines

When the spectrum is defined in wavelength, it is converted to an internal representation in frequency.

Examples

>>> from quantarhei import REAL
>>> from quantarhei import energy_units
>>> abs = AbsSpectrumBase()
>>> x = numpy.array([600.0 + 5.0*ii for ii in range(100)], dtype=REAL)
>>> y = numpy.exp(-(x-800.0)**2/(50**2))
>>> abs.set_by_interpolation(x, y, xaxis="wavelength")
>>> with energy_units("1/cm"):
...     print("%6.3f, %6.3f" % (abs.axis.min, abs.axis.max))
9132.420, 16591.324
clear_data() None[source]#

Sets spectrum data to zero

normalize2(norm: float = 1.0) None[source]#

Normalizes spectrum to a given value

normalize() None[source]#

Normalization to one

subtract(val: Any) None[source]#

Subtracts a value from the spectrum to shift its base line

add_to_data(spect: Any) None[source]#

Performs addition on the data.

Expects a compatible object holding absorption spectrum and adds its data to the present absorption spectrum.

Parameters:

spect (spectrum containing object) – This object should have a compatible axis and some data

Examples

Standard usage

>>> from quantarhei import energy_units
>>> abs = AbsSpectrumBase()
>>> other = AbsSpectrumBase()
>>> with energy_units("1/cm"):
...     w = FrequencyAxis(10000.0, 1000, 5.0)
...     y = numpy.exp(-(w.data-12500.0)**2/(200.0**2))
>>> other.set_axis(w)
>>> other.set_data(y)
>>> abs.add_to_data(other)

Axes have to be compatible (i.e. the same)

>>> yetanother = AbsSpectrumBase()
>>> yetanother.set_axis(FrequencyAxis(8000.0, 1000, 4.0))
>>> abs.add_to_data(yetanother)
Traceback (most recent call last):
    ...
quantarhei.exceptions.QuantarheiError: Incompatible axis

An empty AbsSpectrumBase can be filled by add_to_data() method Axis is taken from the class that we add

>>> yetanother.set_axis(w)
>>> yetanother.add_to_data(abs)
>>> onemore = AbsSpectrumBase()
>>> onemore.add_to_data(other)
>>> numpy.testing.assert_allclose(onemore.data,abs.data)
save_data(name: str, with_axis: ValueAxis | None = None, **kwargs: Any) None[source]#

Saves the data of this absorption spectrum

load_data(name: str, with_axis: ValueAxis | None = None, **kwargs: Any) None[source]#

Loads data from file into this absorption spectrum

plot(**kwargs: Any) None[source]#

Plotting absorption spectrum using the DFunction plot method