Hierfstat аллельные частоты - PullRequest
       28

Hierfstat аллельные частоты

0 голосов
/ 05 ноября 2018

Я использую пакет 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
...