code: def predictMean(self):
          
          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
docs: predict the conditional mean (BLUP)
  
          Returns:
              predictions (BLUP)