美文网首页
用R语言模拟遗传漂变Genetic Drift

用R语言模拟遗传漂变Genetic Drift

作者: Jason数据分析生信教室 | 来源:发表于2023-02-06 15:46 被阅读0次

    先引用一段维基百科对遗传漂变的描述:
    遗传漂变(又称基因漂变,英語:genetic drift)是指种群中基因库在代际发生随机改变的一种现象。由于任何一个个体的生存与繁殖都受到随机因素的影响,繁殖过程可視作一种抽样,子代携带的等位基因即是对亲代抽取的一种样本。这一过程中的抽样误差使子代中的等位基因频率与亲代并不相等,尤其是在小种群中。遗传漂变可能改变某一等位基因的频率,甚至致其完全消失,进而降低种群的遗传多样性。一般情况下,种群的生物个体的数量越少,遗传漂变的效应就越强。遗传漂变是生物进化的关键机制之一。

    概率模型

    为解释遗传漂变,可用瓶子中的20个小球来代表某种群及其20个初始个体。其中半数小球是红色,半数是蓝色,代表种群中的两种等位基因。每一代的生物体都随机繁殖。模拟繁殖的方法是从第一瓶中随机选取一个小球,并在第二个瓶中投入一个同色球,直到装满20个新球为止。第二个瓶子表示种群的第二代个体。相比上一代,由小球数量表示的等位基因频率通常会发生改变,除非瓶中恰好有10个红色、10个蓝色球。

    重复几次,以随机“繁殖”每一代的小球。每一代中取到的红球、蓝球的累计数目都会上下浮动,有时红球多些,有时相反。这正是遗传漂变——由代际等位基因分布的随机改变所导致的基因频率变化。

    若在某一代,选取的所有小球都是同一颜色,那么这一等位基因就被固定,另一等位基因则永久丢失,而接下来的所有后代都将携带同一种等位基因。在较小的种群中,某一等位基因可能在几代之内就被固定下来。


    随机抽样与二项分布

    设想一个带有A,a两种等位基因的,足够大的种群。两种等位基因都是中性的,不影响生物体生存、繁殖。其频率均为1/2,而基因型频率分别为Aa=1/2,AA=1/4,aa=1/4。假定出于某种环境因素,有4个个体迁移出去,形成了一个小而孤立的新种群。虽然这4个个体的选择完全随机,但是新种群中A、a的基因频率很可能不再是1/2。不仅如此,它们有1/256的概率全带有aa基因型。4个个体还对应着8个配子;每个配子都带有A、a之一。于是,新种群的基因构成有9种可能,且满足二项分布。

    对于任何一个有限大的种群,以上的推算都成立。如果种群大小为N且在繁殖前后保持不变,对于一个频率为p的等位基因A,由二项分布可以确定它在下一代的频率期望仍为p。然而,A的频率将会出现上下浮动,还存在着在下一代消失的可能性,且基因频率越低,被丢弃的概率就越高。经过足够多代以后,该种群必然出现全部个体都为某一等位基因纯合子的情形。

    R语言实现

    drift <- function(N,iFreq,Gen,Rep){
      Frequency<-numeric(Gen+1)
      Num<-numeric(Gen+1)
      Generation<-numeric(Gen)
      par(new=F)
      
      for(j in 1:Rep){
        Frequency[1]<-iFreq
        for(i in 1:Gen){
          Generation[i]<-i
          Num[i]<-rbinom(1,N,Frequency[i]) 
          Frequency [i+1]<-Num[i]/N
        }       
        Generation[i+1]<-i+1
        plot(Generation, Frequency, ylim=c(0, 1), xlim=c(1, Gen), type="l", lty=1, col=j)
        par(new=T)
      }
    }
    
    
    drift(100,0.5,1000,100)
    

    相关文章

      网友评论

          本文标题:用R语言模拟遗传漂变Genetic Drift

          本文链接:https://www.haomeiwen.com/subject/kmytkdtx.html