code: def _getScalesDiag(self,termx=0):
          
          assert self.P>1, 'VarianceDecomposition:: diagonal init_method allowed only for multi trait models'
          assert self.noisPos is not None, 'VarianceDecomposition:: noise term has to be set'
          assert termx<self.n_randEffs-1, 'VarianceDecomposition:: termx>=n_randEffs-1'
          assert self.trait_covar_type[self.noisPos] not in ['lowrank','block','fixed'], 'VarianceDecomposition:: diagonal initializaiton not posible for such a parametrization'
          assert self.trait_covar_type[termx] not in ['lowrank','block','fixed'], 'VarianceDecimposition:: diagonal initializaiton not posible for such a parametrization'
          scales = []
          res = self._getH2singleTrait(self.vd.getTerm(termx).getK())
          scaleg = sp.sqrt(res['varg'].mean())
          scalen = sp.sqrt(res['varn'].mean())
          for term_i in range(self.n_randEffs):
              if term_i==termx:
                  _scales = scaleg*self.diag[term_i]
              elif term_i==self.noisPos:
                  _scales = scalen*self.diag[term_i]
              else:
                  _scales = 0.*self.diag[term_i]
              if self.jitter[term_i]>0:
                  _scales = sp.concatenate((_scales,sp.array([sp.sqrt(self.jitter[term_i])])))
              scales.append(_scales)
          return sp.concatenate(scales)
docs: Internal function for parameter initialization
          Uses 2 term single trait model to get covar params for initialization
  
          Args:
              termx:      non-noise term terms that is used for initialization