Скажем, у меня есть файл хромосомных данных, которые я обрабатываю с помощью 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],
}
A primer , который представляет собой небольшой сегмент, состоящий из двух последовательных строк в приведенных выше данных, добавляется и следует за каждым регулярным сегментом. Обычные сегменты имеют значение непустой строки для Segment_ID и различаются по длине, в то время как строки с пустой строкой во втором столбце являются частями праймеров. Сегменты праймера всегда имеют одинаковую длину, 2. Приведенные выше значения Base_ID 1, 2, 5, 6, 7, 8, 12, 13 являются частями праймеров. Всего в приведенных выше данных представлено четыре сегмента праймеров.
Что я хотел бы сделать, так это встретить строку с пустой строкой в столбце 2, Segment_ID, добавить READ_DEPTH к соответствующему элементу в моем хэше. Например, мой желаемый результат сверху будет выглядеть как
mr_hashy = {
"seg1" => [100, 800, 1900, 2700, 1600, 2400],
"seg2" => [200, 15000, 300, 400, 900, 1000, 600],
}