docs: def _genBgTerm_fromSNPs(self,vTot=0.5,vCommon=0.1,pCausal=0.5,plot=False):
          """ generate  """
  
          if self.X is None:
              print('Reading in all SNPs. This is slow.')
              rv = plink_reader.readBED(self.bfile,useMAFencoding=True)
              X  = rv['snps']
          else:
              X  = self.X
  
          S  = X.shape[1]
          vSpecific = vTot-vCommon
  
          # select causal SNPs
          nCausal = int(SP.floor(pCausal*S))
          Ic = selectRnd(nCausal,S)
          X = X[:,Ic]
  
          # common effect
          Bc  = SP.dot(self.genWeights(nCausal,self.P),self.genTraitEffect())
          Yc  = SP.dot(X,Bc)
          Yc *= SP.sqrt(vCommon/Yc.var(0).mean())
  
          # indipendent effect
          Bi  = SP.randn(nCausal,self.P)
          Yi  = SP.dot(X,Bi)
          Yi *= SP.sqrt(vSpecific/Yi.var(0).mean())
  
          if plot:
              import pylab as PL
              PL.ion()
              for p in range(self.P):
                  PL.subplot(self.P,1,p+1)
                  PL.plot(SP.arange(self.X.shape[1])[Ic],Bc[:,p],'o',color='y',alpha=0.05)
                  PL.plot(SP.arange(self.X.shape[1])[Ic],Bi[:,p],'o',color='r',alpha=0.05)
                  #PL.ylim(-2,2)
                  PL.plot([0,Ic.shape[0]],[0,0],'k')
  
          return Yc, Yi