我正在寻找一种方法,将字节数组中所有出现的“a”替换为1,“T”替换为2,“C”替换为8,“G”替换为16怎么能做到?

最佳答案

require "narray"

class NArray
  def cast(type)
    a = NArray.new(type,*self.shape)
    a[] = self
    a
  end
end

conv = NArray.int(256)
atcg = NArray.to_na('ATCG', NArray::BYTE).cast(NArray::LINT)
conv[atcg] = [1,2,8,16]

seq_str = 'ABCDAGDE'
seq_ary = NArray.to_na(seq_str, NArray::BYTE).cast(NArray::LINT)

p conv[seq_ary]
#=> NArray.int(8):
#   [ 1, 0, 8, 0, 1, 16, 0, 0 ]

关于ruby - 在Ruby中替换字节类型数组中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8741583/

10-13 05:21