sagen, dass ich eine Datei von chromosomalen Daten habe ich mit Ruby-bin VerarbeitungVerarbeitung chromosomale Daten in 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
...
ich jede Zeile in einen Hash von Arrays kleben, mit meinem Schlüssel aus der Spalte 2 genommen, Segment_ID, und meine Werte von Spalte 3, Read_Depth, gibt mir
mr_hashy = {
"seg1" => [1900, 2700],
"" => [100, 800, 1600, 2400, 200, 15000, 1000, 600],
"seg2" => [300, 400, 900],
}
a Primer, der ein kleines Segment, das in den oben genannten Daten, wird vorangestellt von zwei aufeinander folgenden Reihen besteht und folgt ea ch reguläres Segment. Reguläre Segmente haben einen nicht leeren String-Wert für Segment_ID und variieren in der Länge, während Zeilen mit einem leeren String in der zweiten Spalte Teile von Primern sind. Primer Segmente immer haben die gleiche Länge, 2. Oben gesehen, Base_ID 1, 2, 5, 6, 7, 8, 12, 13 sind Teile von Primern. Insgesamt sind in den obigen Daten vier Primersegmente vorhanden.
Was ich tun möchte, ist, wenn Sie eine Zeile mit einer leeren Zeichenfolge in Spalte 2, Segment_ID, die READ_DEPTH zu dem entsprechenden Element in meinem Hash hinzufügen. Zum Beispiel würde mein gewünschtes Ergebnis von oben so aussehen:
mr_hashy = {
"seg1" => [100, 800, 1900, 2700, 1600, 2400],
"seg2" => [200, 15000, 300, 400, 900, 1000, 600],
}
Es wäre hilfreich, wenn Sie weitere Beispieldaten mit mehreren Segmenten hinzugefügt genau sehen, was du meinst. So wie es ist, bin ich nicht sicher, wenn du Base sagst, meinst du jede Base ID oder wenn du eine Gruppe von Base IDs meinst oder klar ist, was du mit "zwei Zeilen von den obigen Daten" meinst, wie in Zeile 6 die "zwei Zeilen aus den obigen Daten "wären anders als das, was sie für Zeile 5 sind. Machen Sie auch die Lese-Tiefen alle verschiedenen Zahlen, so dass es klar ist, wohin sie gehen. –
OK, also enthält ein Primer die zwei Zeilen über der ersten Zeile mit einer segment_ID. So können Sie herausfinden, wenn Sie analysieren oder es herausfinden, die base_id verwendend. Lass mich sehen, was ich wirklich schnell schreiben kann. –
Gibt es eine Idee, warum die Datenquelle Primer, die zu einem bestimmten Segment gehören, vor der ersten Segment_ID platziert und nicht einfach danach? –