docs: def setY(self,Y,standardize=False):
          """
          Set phenotype matrix
          
          Args:
              Y:              phenotype matrix [N, P]
              standardize:	if True, phenotype is standardized (zero mean, unit variance)
          """
          assert Y.shape[0]==self.N, 'CVarianceDecomposition:: Incompatible shape'
          assert Y.shape[1]==self.P, 'CVarianceDecomposition:: Incompatible shape'
  
          
          if standardize:
              Y=preprocess.standardize(Y)
  
          #check that missing values match the current structure
          assert (~(SP.isnan(Y).any(axis=1))==self.Iok).all(), 'CVarianceDecomposition:: pattern of missing values needs to match Y given at initialization'
  
          self.Y = Y
          self.vd.setPheno(Y)
  
          self.optimum = None
      
          self.cache['Sigma']   = None
          self.cache['Hessian'] = None
          self.cache['Lparams'] = None
          self.cache['paramsST']= None