【发布时间】:2018-12-02 10:10:26
【问题描述】:
设两个二元向量p1和p2,长度为20,代表两个父母个体的基因型。
p1 <- sample(c(0,1), 20, replace=T)
p2 <- sample(c(0,1), 20, replace=T)
那么前 10 个数字代表一个染色体上的等位基因,第二个 10 个数字代表第二个染色体上的等位基因,即我们正在查看 10 个双等位基因位点。现在我想生成父母双方的后代个体可以拥有的所有可能的基因型。如何在假设重组的情况下创建这些序列(即,如果从p2 的 2 个等位基因中选择基因座 i 处的一个等位基因,则必须从p1 中获取位置 i+10 处的第二个等位基因,反之亦然)?
【问题讨论】:
-
听起来你的数据结构让事情变得更难了。如果将每个父母都表示为具有 10 行(代表 10 个基因座)和 2 列(代表每个基因座的两个等位基因)的矩阵或数据框,会不会更容易?然后重组将对应于从每个父项中选择一列。
-
感谢@user2554330 的提问。是的,这是查看它的另一种方式。尽管如此,我仍然不知道如何有效地生成可能的后代基因型。有什么想法吗?
-
每个亲本有 2^10 种可能的等位基因选择。您可以通过以二进制形式写入数字 0 到 1023 来编码。然后你只有一个从 0 到 1023 的循环用于一个父母,并在其中嵌套另一个从 0 到 1023 的循环。解码选择以构建后代基因型。
-
嗯,我认为有 2^20 种可能的选择(每个基因座 2 个等位基因)。而且解决方案听起来很慢;)但也许没有更好的机会......谢谢
-
每个父母 2^10,总共 2^20。这只是一百万,并非不可行。
标签: r genetics population