Tajima 的 D 用于不同长度的序列

Tajimas D for sequences of different length

我正在尝试使用 R 中的试剂来计算 Tajima 的 D。我有一个 DNA.bin 对象,其中包含我来自不同群体的序列。由于其中的 SNP 和插入缺失,序列的长度不同。 运行 tajima.test 函数时出现以下错误:

as.matrix.DNAbin(x) 中的错误: 列表中的 DNA 序列长度不同。

如何计算不同长度序列的 Tajima 的 D?

这是我目前所做的:

   x <- structure(c("55548", "43297", "35309", "34468", "AATTCAATGCTCGGGAAGCAAGGAAAGCTGGGGACCAACTTCTCTTGGAGACATGAGCTTAGTGCAGTTAGATCGGAAGAGCA", "AATTCCTAAAACACCAATCAAGTTGGTGTTGCTAATTTCAACACCAACTTGTTGATCTTCACGTTCACAACCGTCTTCACGTT", "AATTCACCACCACCACTAGCATACCATCCACCTCCATCACCACCACCGGTTAAGATCGGAAGAGCACACTCTGAACTGTAAACCCAGTC", "AATTCTATTGGTCATCACAATGGTGGTCCGTGGCTCACGTGCGTTCCTTGTGCAGGTCAACAGGTCAAGTTAAGATCGGAAGA"), .Dim = c(4L, 2L))
   y <- t(sapply(strsplit(x[,2],""), tolower))
   my.dnabin <- as.DNAbin(y)
   tajima.test(my.dnabin)

田岛的 D 使用核苷酸的成对比较,因此需要您的 DNA is properly aligned 在 运行ning 之前。你的目前不是,所以你得到一个错误。大多数 DNA.bin 方法假设您的 DNA 是对齐的 - 这应该是您的第一步。

要对齐您的 DNA,请尝试使用 ape 的 clustal 命令 - 您需要安装 clustal。我使用 clustal omega 因为我认为 R 不是进行 DNA 比对的最佳方法。

您将得到一个对齐的 DNA 序列,现在适合田岛的 D(注意间隙,用于对齐序列):

x <- structure(c("55548", "43297", "35309", "34468", 
                 "AATTCAATGCTCGGGAAGCAAGGAAAGCT---GGGGACCAACTTCTCTTGGAGACATGAGCTTAGTGCAGTTAGATCGGAAGAGCA-----------------------",
                 "AATTCCTAAAACACCAATCAAGT----TG---------GTGTTGCTAATTTCAACACCAACTTGTTGAT------------CTTCACGTTCACAACCGTCTTCACGTT-",
                 "-----AATTCACCA-------------CCACCACTAGCATACCATCCACCT--CCATCACCACCACCGGTTAAGATCGGAAGAGCACACTCTGAACTGTAAACCCAGTC",
                 "AATTCTATTGGTCATCACAATGGTGGTCCGTGGCTCACGTGCGTTCCTTGTGCAGGTCAACAGGTCAAGTTAAGATCGGAAGA--------------------------"), .Dim = c(4L, 2L))

现在您的测试将 运行:

   y <- t(sapply(strsplit(x[,2],""), tolower))
   my.dnabin <- as.DNAbin(y)
   tajima.test(my.dnabin)
$D
[1] -5.624054

$Pval.normal
[1] 1.865271e-08

$Pval.beta
[1] 0