Rubyで処理している染色体データのファイルがあるとしましょう。
#Base_ID Segment_ID Read_Depth
1 100
2 800
3 seg1 1900
4 seg1 2700
5 1600
6 2400
7 200
8 15000
9 seg2 300
10 seg2 400
11 seg2 900
12 1000
13 600
...
各行を配列のハッシュに貼り付けており、キーは列2のSegment_IDから取得され、値は列3のRead_Depthから取得されています。
mr_hashy = {
"seg1" => [1900, 2700],
"" => [100, 800, 1600, 2400, 200, 15000, 1000, 600],
"seg2" => [300, 400, 900],
}
上記のデータの2つの連続した行で構成される小さなセグメントであるプライマーは、各通常のセグメントの前に追加され、その後に続きます。通常のセグメントには、Segment_IDの空でない文字列値があり、長さが異なりますが、2番目の列に空の文字列がある行はプライマーの一部です。プライマーセグメントの長さは常に同じです。2。上記のように、Base_IDの1、2、5、6、7、8、12、13はプライマーの一部です。上記のデータには、合計で4つのプライマーセグメントがあります。
私がやりたいのは、列2のSegment_IDに空の文字列が含まれる行に遭遇したら、ハッシュの適切な要素にREAD_DEPTHを追加することです。たとえば、上記の私の望ましい結果は次のようになります
mr_hashy = {
"seg1" => [100, 800, 1900, 2700, 1600, 2400],
"seg2" => [200, 15000, 300, 400, 900, 1000, 600],
}