utils
Modules:
| Name | Description |
|---|---|
detailed_balance |
|
plotting |
|
utils |
|
Functions:
| Name | Description |
|---|---|
detailed_balance_factor |
Compute the detailed balance factor (DBF): $$ DBF(E, T) = E(n(E)+1)=\frac{E}{(1 - e^{-E / |
slicerplot_with_residuals |
Create a SlicerPlot with an additional subplot for residuals. |
Functions
detailed_balance_factor(energy, temperature, energy_unit='meV', temperature_unit='K', divide_by_temperature=True)
Compute the detailed balance factor (DBF): $$ DBF(E, T) = E(n(E)+1)=\frac{E}{(1 - e^{-E / (k_B*T)})}}, $$ where \(n(E)\) is the Bose-Einstein distribution, \(E\) is the energy transfer, and \(T\) is the temperature. \(k_B\) is the Boltzmann constant. If divide_by_temperature is True, the result is normalized by \(k_B*T\) to have value 1 at \(E=0\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
energy
|
float | list | np.ndarray | sc.Variable
|
The energy transfer. If number, assumed to be in meV unless energy_unit is set. |
required |
temperature
|
float | sc.Variable | Parameter
|
The temperature. If number, assumed to be in K unless temperature_unit is set. |
required |
energy_unit
|
str | sc.Unit
|
Unit for energy if energy is given as a number or list. |
'meV'
|
temperature_unit
|
str | sc.Unit
|
Unit for temperature if temperature is given as a number. |
'K'
|
divide_by_temperature
|
bool
|
If True, divide the result by \(k_B*T\) to make it dimensionless and have value 1 at E=0. By default, True. |
True
|
Raises:
| Type | Description |
|---|---|
TypeError
|
If energy or temperature is not a number, list, numpy array, or scipp Variable, or if energy_unit or temperature_unit is not a string or scipp Unit, or if divide_by_temperature is not a boolean. |
ValueError
|
If temperature is negative, or if energy is a numpy array with more than 1 dimension, or if temperature is a scipp Variable that does not have a single dimension named 'temperature', or if energy is a scipp Variable that does not have a single dimension named 'energy'. |
UnitError
|
If the provided energy_unit or temperature_unit is invalid, or if the units of energy or temperature cannot be converted to the expected units. |
ZeroDivisionError
|
If divide_by_temperature is True and temperature is zero. |
Returns:
| Type | Description |
|---|---|
np.ndarray
|
Detailed balance factor evaluated at the given energy and temperature. |
Examples:
>>> detailed_balance_factor(1.0, 300) # 1 meV at 300 K
>>> detailed_balance_factor(
... energy=[1.0, 2.0],
... temperature=300,
... energy_unit='microeV',
... temperature_unit='K',
... divide_by_temperature=False,
... )
slicerplot_with_residuals(dg, *, residuals_key='Residuals', keep=None, operation='sum', **kwargs)
Create a SlicerPlot with an additional subplot for residuals.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dg
|
sc.DataGroup
|
DataGroup containing the data to plot. Must include a key for residuals. |
required |
residuals_key
|
str
|
Key in the DataGroup that contains the residuals data. |
'Residuals'
|
keep
|
list[str] | str | None
|
Dimensions to keep in the SlicerPlot. Passed to SlicerPlot. |
None
|
operation
|
str
|
Operation to apply when reducing the residuals data. Passed to SlicerPlot. |
'sum'
|
**kwargs
|
object
|
Additional keyword arguments passed to SlicerPlot. |
{}
|
Returns:
| Type | Description |
|---|---|
InteractiveFigure
|
A figure containing the SlicerPlot and the residuals subplot. |
Raises:
| Type | Description |
|---|---|
TypeError
|
If dg is not a sc.DataGroup or if residuals_key is not a string. |
ValueError
|
If residuals_key is not found in the DataGroup. |
Modules
detailed_balance
Functions:
| Name | Description |
|---|---|
detailed_balance_factor |
Compute the detailed balance factor (DBF): $$ DBF(E, T) = E(n(E)+1)=\frac{E}{(1 - e^{-E / |
Classes
Functions
detailed_balance_factor(energy, temperature, energy_unit='meV', temperature_unit='K', divide_by_temperature=True)
Compute the detailed balance factor (DBF): $$ DBF(E, T) = E(n(E)+1)=\frac{E}{(1 - e^{-E / (k_B*T)})}}, $$ where \(n(E)\) is the Bose-Einstein distribution, \(E\) is the energy transfer, and \(T\) is the temperature. \(k_B\) is the Boltzmann constant. If divide_by_temperature is True, the result is normalized by \(k_B*T\) to have value 1 at \(E=0\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
energy
|
float | list | np.ndarray | sc.Variable
|
The energy transfer. If number, assumed to be in meV unless energy_unit is set. |
required |
temperature
|
float | sc.Variable | Parameter
|
The temperature. If number, assumed to be in K unless temperature_unit is set. |
required |
energy_unit
|
str | sc.Unit
|
Unit for energy if energy is given as a number or list. |
'meV'
|
temperature_unit
|
str | sc.Unit
|
Unit for temperature if temperature is given as a number. |
'K'
|
divide_by_temperature
|
bool
|
If True, divide the result by \(k_B*T\) to make it dimensionless and have value 1 at E=0. By default, True. |
True
|
Raises:
| Type | Description |
|---|---|
TypeError
|
If energy or temperature is not a number, list, numpy array, or scipp Variable, or if energy_unit or temperature_unit is not a string or scipp Unit, or if divide_by_temperature is not a boolean. |
ValueError
|
If temperature is negative, or if energy is a numpy array with more than 1 dimension, or if temperature is a scipp Variable that does not have a single dimension named 'temperature', or if energy is a scipp Variable that does not have a single dimension named 'energy'. |
UnitError
|
If the provided energy_unit or temperature_unit is invalid, or if the units of energy or temperature cannot be converted to the expected units. |
ZeroDivisionError
|
If divide_by_temperature is True and temperature is zero. |
Returns:
| Type | Description |
|---|---|
np.ndarray
|
Detailed balance factor evaluated at the given energy and temperature. |
Examples:
>>> detailed_balance_factor(1.0, 300) # 1 meV at 300 K
>>> detailed_balance_factor(
... energy=[1.0, 2.0],
... temperature=300,
... energy_unit='microeV',
... temperature_unit='K',
... divide_by_temperature=False,
... )
plotting
Functions:
| Name | Description |
|---|---|
slicerplot_with_residuals |
Create a SlicerPlot with an additional subplot for residuals. |
Functions
slicerplot_with_residuals(dg, *, residuals_key='Residuals', keep=None, operation='sum', **kwargs)
Create a SlicerPlot with an additional subplot for residuals.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dg
|
sc.DataGroup
|
DataGroup containing the data to plot. Must include a key for residuals. |
required |
residuals_key
|
str
|
Key in the DataGroup that contains the residuals data. |
'Residuals'
|
keep
|
list[str] | str | None
|
Dimensions to keep in the SlicerPlot. Passed to SlicerPlot. |
None
|
operation
|
str
|
Operation to apply when reducing the residuals data. Passed to SlicerPlot. |
'sum'
|
**kwargs
|
object
|
Additional keyword arguments passed to SlicerPlot. |
{}
|
Returns:
| Type | Description |
|---|---|
InteractiveFigure
|
A figure containing the SlicerPlot and the residuals subplot. |
Raises:
| Type | Description |
|---|---|
TypeError
|
If dg is not a sc.DataGroup or if residuals_key is not a string. |
ValueError
|
If residuals_key is not found in the DataGroup. |