AbsSpectrumBase#
- class quantarhei.spectroscopy.absbase.AbsSpectrumBase(axis: Any = None, data: Any = None)[source]#
Bases:
DFunction,EnergyUnitsManaged,DataSaveableProvides 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
- 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