On Wed, Oct 27, 2010 at 2:05 PM, Maurizio C. [email protected]
wrote:
example
(3) convert them to string and put in a single array ( this is
required for
compatibility with BioRuby classes and methods that deal withDNA
sequences as strings)
(4) make further analysis on these sequences by BioRuby.
Looking around for permutations in Ruby, I came across
http://snippets.dzone.com/posts/show/3332
and adapting it a little bit for your use case, I came up with:
class Array
def sequence(i = 0, *a)
return a.join if i == size
self[i].map {|x| sequence(i+1, *(a + [x]))}
end
end
ss = [[“tcg”, “agt”, “tct”, “agc”, “tca”, “tcc”],
[“aaa”, “aag”],
[“ctg”, “tta”, “ctt”, “cta”, “ctc”, “ttg”]]
p ss.sequence.flatten
$ ruby permutations.rb
[“tcgaaactg”, “tcgaaatta”, “tcgaaactt”, “tcgaaacta”, “tcgaaactc”,
“tcgaaattg”, “tcgaagctg”, “tcgaagtta”, “tcgaagctt”, “tcgaagcta”,
“tcgaagctc”, “tcgaagttg”, “agtaaactg”, “agtaaatta”, “agtaaactt”,
“agtaaacta”, “agtaaactc”, “agtaaattg”, “agtaagctg”, “agtaagtta”,
“agtaagctt”, “agtaagcta”, “agtaagctc”, “agtaagttg”, “tctaaactg”,
“tctaaatta”, “tctaaactt”, “tctaaacta”, “tctaaactc”, “tctaaattg”,
“tctaagctg”, “tctaagtta”, “tctaagctt”, “tctaagcta”, “tctaagctc”,
“tctaagttg”, “agcaaactg”, “agcaaatta”, “agcaaactt”, “agcaaacta”,
“agcaaactc”, “agcaaattg”, “agcaagctg”, “agcaagtta”, “agcaagctt”,
“agcaagcta”, “agcaagctc”, “agcaagttg”, “tcaaaactg”, “tcaaaatta”,
“tcaaaactt”, “tcaaaacta”, “tcaaaactc”, “tcaaaattg”, “tcaaagctg”,
“tcaaagtta”, “tcaaagctt”, “tcaaagcta”, “tcaaagctc”, “tcaaagttg”,
“tccaaactg”, “tccaaatta”, “tccaaactt”, “tccaaacta”, “tccaaactc”,
“tccaaattg”, “tccaagctg”, “tccaagtta”, “tccaagctt”, “tccaagcta”,
“tccaagctc”, “tccaagttg”]
Which if I understood correctly solves your steps 1 to 3.
Hope this helps,
Jesus.