0

首先,我是红宝石新手,所以请您对我有耐心。:) 其次,在您阅读请求并认为我正在尝试获得简单的答案之前,请相信我,过去 7 天我一直在网上搜索它们,但没有找到任何回答我非常具体的问题的答案. 第三,对冗长的描述感到抱歉,但我需要的帮助是指向正确的方向。

我有一个关于基因漂移的小班项目的想法。在群体遗传学中,概率矩阵用于给出等位基因的频率在 t1 代到 t2 代中从 i 变为 j 的概率。

因此,假设我从 t1 中的一个等位基因 B 副本开始,并且想知道它在 t2 中变为三个副本的概率。该值(由二项分布给出,我已经写了一个小代码,效果很好)然后将进入对应于第 1 列第 3 行的单元格(也许这可以更好地澄清事情:https://docs .google.com/viewer?url=http%3A%2F%2Fsamples.jbpub.com%2F9780763757373%2F57373_CH04_FINAL.pdf)。

我不知道该怎么做并想获得有关信息的是:

  • 我如何制作一个方矩阵,其中行/列的数量由用户确定(比如有人想要获得 4 人口的概率矩阵,其中有 8 个等位基因拷贝,但其他人想要获得概率矩阵100 个人口,其中有 200 个等位基因拷贝?)

  • 如何将二项式分布方程应用于每个不同列/行组合的值(即在对应于第 1 列第 3 行的单元格中,该值将由变量 1 和 3 的二项式方程确定;和在对应于第 4 列第 7 行的单元格中,该值将由具有变量 4 和 7 的二项式方程确定)。变量不同组合的数量(如 1 和 1、1 和 2、1 和 3 等)由用户设置的列/行数决定。

我不是要求任何人给我代码或为我做我的工作,我要求的是你,经验丰富的程序员,为我指出正确答案的方向,因为我非常悲惨地未能找到这个方向。我应该研究数组而不是矩阵吗?我应该研究特定的迭代器吗?哪个?有没有人有我可以研究的更具体的材料,或者可以根据创建矩阵的经验给我提示?我真的很想学习 ruby​​,并学习如何做到这一点,而不仅仅是完成它。

4

1 回答 1

0

要生成矩阵,您可能希望查看 Matrix 类:http ://www.ruby-doc.org/stdlib-1.9.3/libdoc/matrix/rdoc/Matrix.html它的方法Matrix.build(row_size, column_size)看起来像非常适合您的问题。它甚至需要一个可用于生成值的块:

require 'matrix'

Matrix.build( 5, 5 ) do |row, col| 
  binomial_function( row, col )
end

显然,您也需要编写二项式函数 - 看起来您可能已经这样做了?

如何使行/列成为用户选择,取决于您希望最终用户如何运行您的代码。您可能应该在另一个问题中明确表示,网站和命令行脚本之间的方法存在一些差异。

于 2013-07-29T22:02:20.167 回答