给定符号列表,我想遍历每个可能的 k 长度字符串(称为k-mer )。例如,如果k = 3
和symbols = {A, C, G, T}
,则:
AAA
AAC
AAG
...
TTG
TTT
这是我生成字符串的代码:
local k = 3
local bases = {'A', 'C', 'T', 'G'}
-- Generate the string (AAA...AAA)
local kmer_gen = {}
for i = 1,k do kmer_gen[i] = "A" end
local kmer = table.concat(kmer_gen)
它有效,但肯定看起来不太好。这可以更优雅地实现吗?
现在,我不确定如何遍历可能的 k-mers。一种解决方案是继续替换每个字符,但这并不有效。另一种方法是从二进制解码(每个 2 位代表一个基数),但实现很混乱,需要按位运算。还有其他想法吗?