Tajimas D用于不同长度的序列

时间:2015-10-23 11:51:15

标签: r fasta dna-sequence

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

as.matrix.DNAbin(x)出错:   列表中的DNA序列长度不一样。

如何计算不同长度序列的田岛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)

1 个答案:

答案 0 :(得分:0)

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

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

您将获得一个对齐的DNA序列,现在适用于Tajima的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