【基于R语言群体遗传学】-14-种群起源的相对似然

我们可以将预测的基因型比例视为在种群中看到一组特定等位基因的概率。如果种群在等位基因频率上存在差异,我们可以使用基因型来推断个体起源于每个种群的相对可能性。大家可以先看一下之前的博客:群体遗传学_tRNA做科研的博客-CSDN博客


种群起源的相对似然

假设我们有一个在南太平洋采集的蓝鲸(Balaenoptera musculus)的DNA样本,我们想推断这个个体是起源于南极种群还是澳大利亚种群(目前被认为是亚种,分别是B. m. intermedia和B. m. brevicauda)。下表列出了蓝鲸七个微卫星的实际基因型。

我们可以利用鲸鱼基因型表来确定这两个鲸鱼种群中等位基因的频率(Attard等人,2012年)。我们的popgenr软件包中的“whale”数据集包含了来自南极和澳大利亚的大量鲸鱼基因型。 可以计算两个地区鲸鱼群体中等位基因的频率。这通常涉及到统计每个微卫星位点上不同等位基因的出现次数,并将这些次数除以总的等位基因数量以得到频率。 一旦获得了等位基因频率,就可以比较南极和澳大利亚两个地区的鲸鱼群体在这些微卫星位点上的遗传差异。这种比较有助于理解不同地理区域鲸鱼群体的遗传结构,并可能揭示迁移模式、繁殖隔离或其他进化过程的证据。 


这个数据集包含了264个蓝鲸个体在七个不同位点上的基因型。让我们尝试计算每个等位基因的等位基因频率,特别是在每个亚种群内。为了做到这一点,我们需要先从一个地点,然后从另一个地点计算每个等位基因的数量。因为蓝鲸是二倍体,每个位点名称都有一个下标“1”或“2”来指定每个位点的两个不同副本。我们对数据进行基本处理:

library(popgenr)
data("whale")

# 提取唯一的基因座(loci)名称,移除列名中的下划线和后续字符
loci <- unique(sub(pattern="_.", replacement="", colnames(whale)[-1]))

# 初始化一个空的数据框,用于存储结果
dat <- NULL

# 遍历每个独特的地理位置
for(i in unique(whale$Location)){
  # 筛选出当前地理位置的鲸鱼数据
  x <- whale[whale$Location==i,]
  
  # 对每个基因座进行处理
  for(j in loci){
    # 构造基因座的第一和第二等位基因的列名
    loc1 <- paste(j, "_1", sep="")
    loc2 <- paste(j, "_2", sep="")
    
    # 计算这两个等位基因的频率
    count <- table(c(x[,colnames(x)==loc1], x[,colnames(x)==loc2]))
    freq <- count / sum(count)
    
    # 创建一个包含地点、基因座和频率的数据框
    y <- data.frame(i, j, freq)
    
    # 将这个数据框添加到结果数据框中
    dat <- rbind(dat, y)
  }
}

# 设置最终数据框的列名
colnames(dat) <- c("Location", "Locus", "Allele", "Frequency")

# 显示数据框的前几行以检查结果
head(dat)

现在我们已经得到了每个群体的等位基因频率,我们可以使用p²i2pipj来计算预期的纯合子和杂合子,然后开始得到我们神秘鲸鱼在两个群体中出现的相应基因型的概率。

来自第i个种群的多位点基因型数据(x)的概率是每个基因型j的乘积,它是人群i中相应等位基因频率(pk或pl)的函数,并根据基因型的合子性计算得出,我们先计算GATA位点和Bmy位点:

# 计算南极地区在GATA028位点上,等位基因189和201的频率乘积的两倍
2 * dat[dat$Location == "Antarctica" &
           dat$Locus == "GATA028" &
           dat$Allele == 189, ]$Frequency *
  dat[dat$Location == "Antarctica" &
           dat$Locus == "GATA028" &
           dat$Allele == 201, ]$Frequency

# 计算澳大利亚地区在GATA028位点上,等位基因189和201的频率乘积的两倍
2 * dat[dat$Location == "Australia" &
           dat$Locus == "GATA028" &
           dat$Allele == 189, ]$Frequency *
  dat[dat$Location == "Australia" &
           dat$Locus == "GATA028" &
           dat$Allele == 201, ]$Frequency

# 计算南极地区在Bmy1位点上,等位基因265的频率的平方
dat[dat$Location == "Antarctica" &
        dat$Locus == "Bmy1" &
        dat$Allele == 265, ]$Frequency^2

# 计算澳大利亚地区在Bmy1位点上,等位基因265的频率的平方
dat[dat$Location == "Australia" &
        dat$Locus == "Bmy1" &
        dat$Allele == 265, ]$Frequency^2

 假设这些位点是独立遗传的(它们之间有足够的重组并且不是紧密连锁的),我们可以将各个基因型的概率相乘。

上面的例子给出了我们的鲸鱼来自南极种群的总概率。对两个种群进行乘法运算,我们得到的概率非常小,即我们的蓝鲸来自南极(1.905097 × 10^-9)或澳大利亚(1.338643 × 10^-7)。事实上,任何单个复合基因型出现的概率都很低,但我们可以比较概率的可能性比率(一个种群中基因型的概率与另一个种群的概率相比)。

以及两个种群之间的概率占两个概率总和的比例(相对概率):

(Ant <- 0.0569*0.00978*0.121*0.0788*0.0959*0.0192*0.195)
(Aus <- 0.101*0.00723*0.202*0.303*0.760*0.0492*0.0801)
(Rat_ant <- Ant/Aus)
(Rat_aus <- Aus/Ant)
(Rel_ant <- Ant/(Ant+Aus))
(Rel_aus <- Aus/(Ant+Aus))

我们通过pia图进行可视化:

任何单一的微卫星都不是诊断性的,一些基因型在澳大利亚群体中更可能出现,而其他基因型在南极洲更可能出现。然而,有了足够的数据,在这个案例中是七个微卫星,我们可以为我们的鲸鱼可能起源的地方建立一个更有力的案例。我们采样的鲸鱼来自澳大利亚的可能性大约是70倍,确实如此。

DNA fingerprinting

DNA指纹技术作为新技术,给比如亲子鉴定、疑犯鉴定提供了精确的方法,我们来简要看一些问题:

-1-个体并不是从种群中随机抽取的,而是以亲属群的形式存在,他们更有可能共享基因型。

-2-某些个体(人类的同卵双胞胎、无性繁殖克隆或单性生殖物种)在基因上基本上是相同的。检测双胞胎之间罕见的突变差异并考虑体细胞突变,需要比通常进行的更为庞大的基因分型工作。 -3-选择合适的参考种群(一个或多个)来确定等位基因频率会影响计算,而且并不总是清楚哪个种群是最合适的参考。此外,从个体收集遗传数据也存在伦理和法律问题

-4-突变确实会发生。高度可变的标记物,如微卫星,之所以高度可变,是因为它们具有高突变率。偶尔会出现新的突变,可能会使推断变得复杂,如亲子鉴定分析。

-5-这里列出的许多问题使得标准概率计算变得不那么保守;然而,一般来说,足够数量的标记将产生压倒性的概率,可以克服这些问题。 在批判性地解释DNA指纹识别数据时,还必须考虑非遗传因素,如样本可能被污染或混合,人为错误(或故意伪造),如样本标签错误等。这些因素产生的概率可能远高于随机机会下真正的多位点基因型匹配。

对于种群起源的问题远比这里所列出的一些要复杂的多,以后也会更新一些自己的工作。

下一篇博客将讲述最重要的coalescent 理论,也就是溯祖理论

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 20:20:02       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 20:20:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 20:20:02       43 阅读
  4. Python语言-面向对象

    2024-07-12 20:20:02       54 阅读

热门阅读

  1. rust way step 7

    2024-07-12 20:20:02       16 阅读
  2. sqlalchemy通过查询参数生成query

    2024-07-12 20:20:02       15 阅读
  3. git reset hard和soft的使用和区别

    2024-07-12 20:20:02       18 阅读
  4. 目前分布式光纤测温系统的主流架构有哪些?

    2024-07-12 20:20:02       15 阅读
  5. docker pull 报错:missing signature key,docker版本问题

    2024-07-12 20:20:02       16 阅读
  6. 第六篇:Python元组:不可变序列的魅力

    2024-07-12 20:20:02       17 阅读
  7. Linux rpm和ssh损坏修复

    2024-07-12 20:20:02       19 阅读