Я использую пакет hierfstat
в R для вычисления данных генотипа.
Для диплоидных генотипов они должны состоять из 2 аллелей, поэтому разделение генотипа на две половины должно дать вам два аллеля. Например. Генотип = "133 444", аллель 1 = "133", аллель 2 = "444".
Однако команда pop.freq
, похоже, определяет различные аллели. Чтобы показать вам, что я имею в виду, давайте сгенерируем фиктивные данные:
dat <- as.data.frame(matrix(c("Pop1", "Pop1", "Pop2", "Pop2", "Pop2", "133444", "133444", "331444", "331441", "131441", "3223", "3333", "2232", "2222", "2223", "33","23","22","22","23"), nrow=5, ncol=4, byrow=FALSE, dimnames = list(NULL, c("Population", "locus1","locus2", "locus3"))))
dat
Population locus1 locus2 locus3
1 Pop1 133444 3223 33
2 Pop1 133444 3333 23
3 Pop2 331444 2232 22
4 Pop2 331441 2222 22
5 Pop2 131441 2223 23
Теперь вычислите частоты аллелей:
p <- pop.freq(dat, diploid=TRUE)
p
$locus1
x Pop1 Pop2
131 0.0000000 0.1666667
133 0.5000000 0.0000000
331 0.0000000 0.3333333
441 0.0000000 0.3333333
444 0.5000000 0.1666667
$locus2
x Pop1 Pop2
2 0.0000000 0.5000000
3 0.5000000 0.0000000
222 0.0000000 0.1666667
223 0.2500000 0.1666667
232 0.0000000 0.1666667
323 0.0000000 0.1666667
333 0.2500000 0.0000000
$locus3
x Pop1 Pop2
0 0.5000000 0.5000000
22 0.0000000 0.3333333
23 0.2500000 0.1666667
33 0.2500000 0.0000000
Выходные данные для $locus1
имеют правильные аллели.
$locus2
не должно иметь первые две строки для аллелей "2" и "3". Почему он это делает?
$locus3
должно быть «2» и «3». То, как они это делают, для полного генотипа.
Аналогично, getal.b
не разделяет генотип на даже аллельные варианты.
Например. Генотип = "133 444", но вместо этого getal.b
разделяет генотип как: аллель 1 = "1334", аллель 2 = "44". Почему и как это делает этот неравномерный раскол? Могу ли я исправить это?
dum<-getal.b(dat2[,-1])
dum
, , 1
[,1] [,2] [,3]
[1,] 1334 32 0
[2,] 1334 33 0
[3,] 3314 22 0
[4,] 3314 22 0
[5,] 1314 22 0
, , 2
[,1] [,2] [,3]
[1,] 44 23 33
[2,] 44 33 23
[3,] 44 32 22
[4,] 41 22 22
[5,] 41 23 23