Ich habe eine riesige Datei (20 GB
), die eine Reihe genomischer Positionen enthält, und für jede Position gibt es eine Kennung ( 4. Spalte
), was manchmal der Fall ist das gleiche.
file1.txtchr1 10 20 ABCchr1 13 20 ABCchr1 14 21 ABCchr1 22 27 ABCchr1 29 37 ABCchr2 15 21 JJJchr2 21 31 JJJchr2 23 27 JJJchr2 35 56 JJJchr2 25 26 MMMchr3 32 42 MMMchr3 45 76 MMMchr3 88 101 MMMchr3 101 105 MMM
Ich versuche, die Bereiche der Spalten 2
und 3
zusammenzuführen, sofern sie vorhanden sind das gleiche Chromosom und die gleiche Kennung (mit den gleichen Spalten 1st
und 4th
).
Ich habe versucht, Bedtools
Also die Antworten In dieser Veröffentlichung wurde groupby
in bedtools2 verwendet, Quellcode von github
.
Ich habe dasselbe wie folgt angewendet:
./groupBy -i ../file1.txt -g 1,4 -c 2,3 -o min , max | awk -v OFS = '\ t' '{print $ 1, $ 3, $ 4, $ 2}' chr1 10 37 ABCchr2 15 56 JJJchr2 25 26 MMMchr3 32 105 MMM
Aber es verbindet nur die Bereiche von Bezeichnern. Es gruppiert nach und wird nicht zusammengeführt.
Und wenn ich die Zusammenführungsfunktion bedtools v2.26
verwende:
>sort -k1,1 -k2,2n file1.txt > file2 .txt>cat file2.txtchr1 10 20 ABCchr1 13 20 ABCchr1 14 21 ABCchr1 22 27 ABCchr1 29 37 ABCchr2 15 21 JJJchr2 21 31 JJJchr2 23 27 JJJchr2 25 26 MMMchr2 35 56 JJJchr3 32 42 MMMchr3 45 76 MMMch3 file2.txt chr1 10 21chr1 22 27chr1 29 37
chr2 15 31chr2 35 56chr3 32 42chr3 45 76chr3 88 105
Was zusammengeführt wird, ohne die Bezeichner zu sehen, da es mir auch diese Ausgabe gibt.
Was ich möchte, ist füge
die Bereiche zusammen, wenn sie sich überlappen
, wenn dieselbe 1. und 4. Spalte
hat wie:
expected_output.txtchr1 10 21 ABCchr1 22 27 ABCchr1 29 37 ABCchr2 15 31 JJJchr2 35 56 JJJchr2 25 26 MMMchr3 32 42 MMMchr3 45 76 MMMchr3 88 105 MMM
Ich habe nur Zugriff auf 15 GB RAM, also kann ich Speichern Sie nicht die gesamte Datei im Speicher.