'Create a frozen inverse Wishart distribution.
Parameters
df : array_like
Degrees of freedom of the distribution
scale : array_like
Scale matrix of the distribution
seed : None or int or np.random.RandomState instance, optional
This parameter defines the RandomState object to use for drawing
random variates.
If None (or np.random), the global np.random state is used.
If integer, it is used to seed the local RandomState instance
Default is None.'

def __init__(self, df, scale, seed=None):

    self._dist = invwishart_gen(seed)
    (self.dim, self.df, self.scale) = self._dist._process_parameters(df, scale)
    (C, lower) = scipy.linalg.cho_factor(self.scale, lower=True)
    self.log_det_scale = (2 * np.sum(np.log(C.diagonal())))
    eye = np.eye(self.dim)
    self.inv_scale = scipy.linalg.cho_solve((C, lower), eye)
    self.C = scipy.linalg.cholesky(self.inv_scale, lower=True)
