用R图或hist绘制基因型图

时间:2014-02-16 03:01:35

标签: r plot genetics

我正在使用hardy-weinberg进行一个非常简单的模拟(对于所有遗传学家来说)我正在绘制等位基因(0,1)频率的频率,最后是基因型(0,1,2)在100代的过程中的频率。我被困在试图找出R的矩阵。

N = 30 # Size population in each line
lineN = 100 # Number of family lines
Genes0 = array(NA, dim=c(lineN, 2*N)) 

# Randomly form genotypes by sample function / 30:70 probabilites
# In sample x=c(0:1) represents a and A (30:70) alleles of a gene
for (i in 1:lineN) {
    Genes0[i, ] = sample(x=c(0:1), size=10, replace=T, prob=c(0.3,0.7)) 
}

generationN = 100
ParentGenes = Genes0
for (g in 1:generationN) {
  ChildGenes = array(NA, dim=c(lineN, 2*N))
  for (i in 1:lineN) {
    ChildGenes[i, ] = sample(ParentGenes[i, ], replace=T)
  }
}
  ParentGenes = ChildGenes
    table(ChildGenes)/(lineN*2*N) # Allele frequencies

    #Convert allele to genotypes: AA <=> 2; Aa / aA <=> 1; aa <=> 0.
    Genotypes = array(NA, dim=c(lineN, N))
    for  (j in 1:N) {
        Genotypes[, j] = ChildGenes[, 2*j-1] + ChildGenes[, 2*j]
    }
    table(Genotypes)/(lineN*N) # Genotype frequencies.

1 个答案:

答案 0 :(得分:0)

我对遗传学一无所知,所以我不确定我是否跟进,但这就是你想要的:

tab <- do.call(rbind ,apply(ChildGenes, 1, function(x) table(x) / length(x)))

head(tab)

#             0         1
#[1,] 0.2500000 0.7500000
#[2,] 0.4000000 0.6000000
#[3,] 0.2833333 0.7166667
#[4,] 0.2500000 0.7500000
#[5,] 0.4833333 0.5166667
#[6,] 0.3666667 0.6333333

plot(1:100, tab[,1], col = "blue")
points(tab[,2], col = "red")