我想使用BioRuby进行反向DNA翻译,这为细菌提供了一个很好的CODON表。
这里有一段代码片段,描述了我拥有的一系列数组(它们还有更多!)。
# Arrays Sample
a = table.revtrans("A") # ["gct", "gcc"]
b = table.revtrans("M") # ["atg"]
c = table.revtrans("L") # ["tta", "ttg", "ctt", "ctc", "cta", "ctg"]
d = ...
我想创建一个包含上述字符串的所有可能组合的数组或散列。
["gctatgtta", "gccatgtta", "gtcatgttg", "gctatgctt", etc]
任何想法如何使用Ruby实现这一目标?我尝试使用combination
方法,但未能产生任何明智的结果。另外,如果可能的话,我希望能够预先确定计算次数!如果可以,请提供一些数学解释!
这些3个字母的字符串是 DNA密码子。每个三元组都可以从预定的amino acid转换为table。我正在做的主要是创造一系列(巨大的)潜在DNA序列,从理论上可以从中产生蛋白质。
谢谢!
答案 0 :(得分:4)
您要使用的是product
。
返回所有数组中所有元素组合的数组。
返回数组的长度是self长度的乘积 和参数数组。
%w(gct gcc).product(%w(atg), %w(tta ttg)).map(&:join)
# => ["gctatgtta", "gctatgttg", "gccatgtta", "gccatgttg"]
答案 1 :(得分:1)
[*a, *b, *c].combination(3).map &:join
#=> ["gctgccatg", "gctgcctta", #...