Source code for lib5c.algorithms.variance.lognorm_dispersion

"""
Module for estimating lognormal dispersion parameters for 5C interaction data.
"""

import numpy as np


[docs]def dispersion_to_variance(disp, exp): """ Converts a dispersion estimate to a variance by applying it to the expected value of unlogged counts. Parameters ---------- disp : float or np.ndarray The dispersion (variance of logged values). exp : float or np.ndarray The expected value (of unlogged values). Returns ------- float or np.ndarray The variance. """ mu = np.log(exp) - disp / 2 # convert exp to mean of log counts return dispersion_to_variance_direct(disp, mu)
[docs]def dispersion_to_variance_direct(disp, mu): """ Converts a dispersion estimate to a variance by applying it to the expected value of logged counts. Parameters ---------- disp : float or np.ndarray The dispersion (variance of logged values). mu : float or np.ndarray The expected value (of logged values). Returns ------- float or np.ndarray The variance. """ return (np.exp(disp) - 1) * np.exp(2 * mu + disp)
[docs]def variance_to_dispersion(var, exp): """ Converts a variance estimate to a dispersion by applying it to the expected value of unlogged counts. Parameters ---------- var : float or np.ndarray The variance (of unlogged values). exp : float or np.ndarray The expected value (of unlogged values). Returns ------- float or np.ndarray The dispersion (variance of logged values). """ return np.log(1 + var / exp**2)