Tajimas D для последовательностей разной длины

Я пытаюсь использовать adegent в R для расчета D Tajima. У меня есть объект DNA.bin, содержащий мои последовательности из разных популяций. Последовательности имеют разную длину из-за SNP и вставок в них. Я получаю следующую ошибку при запуске функции tajima.test:

Ошибка в as.matrix.DNAbin(x): последовательности ДНК в списке не одинаковой длины.

Как можно вычислить 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)

person biobudhan    schedule 23.10.2015    source источник
comment
Вы используете tajima.test из pegas? В adegenet его нет. Ваши последовательности ДНК должны быть выровнены внутри объекта DNA.bin, поэтому все они должны быть одинакового размера. Попробуйте включить некоторые данные в вопрос   -  person jeremycg    schedule 23.10.2015
comment
@jeremycg: Да, я имел в виду tajima.test от pegas. Пожалуйста, проверьте отредактированный вопрос сейчас :-) Я не понял вашего предложения. Ваши последовательности ДНК должны быть выровнены внутри объекта DNA.bin, поэтому все они должны быть одинакового размера. Не могли бы вы уточнить?   -  person biobudhan    schedule 23.10.2015


Ответы (1)


D от Tajima использует попарное сравнение нуклеотидов и поэтому требует, чтобы ваша ДНК была правильно выровнена перед запуском. В настоящее время вашего нет, поэтому вы получаете сообщение об ошибке. Большинство методов DNA.bin предполагают, что ваша ДНК выровнена — это должно быть вашим первым шагом.

Чтобы выровнять свою ДНК, попробуйте команду clustal от ape — вам понадобится установленный clustal. Я использовал clustal omega, так как не думаю, что R — лучший способ сделать выравнивание ДНК.

Вы получите выровненную последовательность ДНК, которая теперь подходит для 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
person jeremycg    schedule 23.10.2015
comment
Большое спасибо за то, что помогли мне узнать, что Tajimas D можно вычислить с выровненными последовательностями! :-) - person biobudhan; 26.10.2015