predict the conditional mean (BLUP)

        Returns:
            predictions (BLUP)

def predictMean(self):
        """
        predict the conditional mean (BLUP)

        Returns:
            predictions (BLUP)
        """
        assert self.noisPos!=None,      'No noise element'
        assert self.init,               'GP not initialised'
                
        KiY = self.gp.agetKEffInvYCache()
                
        if self.fast==False:
            KiY = KiY.reshape(self.P,self.N).T
                
        Ymean = None
        for term_i in range(self.n_terms):
            if term_i!=self.noisPos:
                Kstar = self.vd.getTerm(term_i).getKcf().Kcross(SP.zeros(1))
                term  = SP.dot(Kstar.T,KiY)
                if self.P>1:
                    C    = self.getEstTraitCovar(term_i)
                    term = SP.dot(term,C)
                if Ymean==None:     Ymean  = term
                else:               Ymean += term
            
        # to generalise
        Ymean+=self.getFixed()[:,0]
                
        return Ymean