Minulla on valtava tiedosto (20 GB
), jolla on useita genomisia sijainteja, ja jokaiselle sijainnille on oma tunniste ( 4. sarake
), joka on joskus sama.
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 MMM 76 MMMchr3 88 101 MMMchr3 101 105 MMM
Yritän yhdistää sarakkeiden 2
ja 3
alueet, jos ne ovat sama kromosomi ja sama tunniste (sarakkeet 1st
ja 4th
ovat samat).
Olen yrittänyt käyttää bedtools
, kuten tämä viesti näyttää, joka näyttää hyvin samankaltaiselta, mutta ei samalta kuin minun, koska he etsivät erilaisia ulostuloja (alue vs. yhdistäminen)
Joten vastaukset kyseisessä viestissä käytettiin groupby
-tunnusta bedtools2: ssä, lähdekoodi github
-palvelusta.
Olen soveltanut samaa kuin seuraava:
./groupBy -i ../file1.txt -g 1,4 -c 2,3 -o min , enintään | awk -v OFS = '\ t' '{tulosta $ 1, $ 3, $ 4, $ 2}' chr1 10 37 ABCchr2 15 56 JJJchr2 25 26 MMMchr3 32105 MMM
Mutta se vain yhdistää tunnisteiden alueet .. Se ryhmitellään eikä sulautu.
Ja jos käytän bedtools v2.26 merge
-toimintoa:
>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 file2.txt chr1 10 21chr1 22 27chr1 29 37
chr2 15 31chr2 35 56chr3 32 42chr3 45 76chr3 88 105
Mikä sulautuu näkemättä tunnisteita, koska se antaa minulle myös tämän tuotoksen.
Haluan yhdistä
alueet, jos ne ovat päällekkäisiä
, jos niillä on sama 1. ja 4. sarake
kuin:
odotettavissa_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
Minulla on vain 15 Gt RAM-muistia, joten voin älä tallenna koko tiedostoa muistiin.