Impute values from predictive distribution of the given latent state.

        :param Y: A list of constraints to apply when sampling.  Each constraint
            is a triplet of (r,d,v): r is the row index, d is the column
            index and v is the value of the constraint
        :type Y: list of lists
        :param Q: A list of values to sample.  Each value is doublet of (r, d):
                  r is the row index, d is the column index
        :type Q: list of lists
        :param n: the number of samples to use in the imputation
        :type n: int

        :returns: list of floats -- imputed values in the same order as
            specified by Q

def impute(self, M_c, X_L, X_D, Y, Q, seed, n):
        """Impute values from predictive distribution of the given latent state.

        :param Y: A list of constraints to apply when sampling.  Each constraint
            is a triplet of (r,d,v): r is the row index, d is the column
            index and v is the value of the constraint
        :type Y: list of lists
        :param Q: A list of values to sample.  Each value is doublet of (r, d):
                  r is the row index, d is the column index
        :type Q: list of lists
        :param n: the number of samples to use in the imputation
        :type n: int

        :returns: list of floats -- imputed values in the same order as
            specified by Q
        """
        get_next_seed = make_get_next_seed(seed)
        e = su.impute(M_c, X_L, X_D, Y, Q, n, get_next_seed)
        return e