オブジェクトの配列があり、属性「位置」によって一意の配列を構築したい
boxes.to_a.uniq! {|p| p[:position] }
しかし、2番目の属性「ミスマッチ」が等しいかそれ以上の場合、すべてのダブルスを捨てる前に区別したいと思います。たとえば、私は持っています:
{ position: 233, mismatch: 3},
{ position: 234, mismatch: 3},
{ position: 233, mismatch: 1}
そして最後に、ミスマッチの少ないものを維持したいと思います:
{ position: 234, mismatch: 3},
{ position: 233, mismatch: 1}
オブジェクト 1 と 3 の位置は同じでしたが、最後のオブジェクトではミスマッチが少なかったためです。
編集:ボックスはオブジェクトの配列であり、私はそれを次のように構築します:
@boxes = []
...
@boxes << {
:position => i,
:mismatch => mm,
}
ここで、位置とミスマッチは DNA 配列に対して計算されます。ミスマッチは、9 ヌクレオチド モチーフ ( "TTGATGCTT" のような文字列) へのハミング距離を表します。