Detailed Balance#

class pylit.core.detailed_balance.DetailedBalance(tau)#

Bases: object

Base class for detailed balance computations.

This class stores the inverse temperature parameter \(\beta\), given as the maximum of the provided time axis \(\tau\).

__init__(tau)#

Initialize the DetailedBalance class.

Parameters:

tau (ndarray) – The time axis.

Raises:

ValueError – If the beta is not positive.

property beta: float#

Inverse temperature parameter.

class pylit.core.detailed_balance.OmegaDetailedBalance(tau)#

Bases: DetailedBalance

__call__(func)#

Apply detailed balance to a kernel function.

Given a kernel function \(S(\omega)\), this decorator rescales it as:

\[S_{DB}(\omega) = e^{\beta \omega} S(-\omega) + S(\omega)\]

where \(\beta = \max \tau\).

Parameters:

func – An kernel function \(S(\omega)\).

Returns:

The kernel function fulfilling the detailed balance with respect to \(\beta\)

Examples

>>> import numpy as np
>>> def S(omega): return np.exp(-omega**2)
>>> db = InverseDetailedBalance(tau=np.array([1.0]))
>>> balanced = db(S)
>>> balanced(0.5)
np.exp(1.0 * 0.5) * np.exp(-(-0.5)**2) + np.exp(-(0.5)**2)
__init__(tau)#

Initialize the OmegaDetailedBalance by means of its superclass.

class pylit.core.detailed_balance.TauDetailedBalance(tau)#

Bases: DetailedBalance

__call__(func)#

Apply detailed balance to a Laplace transform.

Given a Laplace transform \(F(\tau)\), this decorator returns a symmetrized version of the function:

\[F_{DB}(\tau) = F(\beta - \tau) + F(\tau)\]

where \(\beta = \max \tau\).

Parameters:

func – A Laplace transform \(F(\tau)\).

Returns:

The detailed balanced Laplace transform.

Examples

>>> import numpy as np
>>> def f(tau): return np.exp(-tau)
>>> db = ForwardDetailedBalance(tau=np.array([2.0]))
>>> balanced = db(f)
>>> balanced(0.5)
np.exp(-0.5) + np.exp(-(2.0 - 0.5))
__init__(tau)#

Initialize the TauDetailedBalance by means of its superclass.