Kysymys:
Hanki yhden BAM-tiedoston luetun kartoitustilasto
roblanf
2017-06-13 08:48:15 UTC
view on stackexchange narkive permalink

Minulla on BAM-tiedosto ja minulla on lukutunnus. Mikä on yksinkertaisin tapa saada kartoitetut tilastot luetuista ihmisille luettavassa muodossa?

Esim. Voisin haluta: Kohdistettujen emästen prosenttiosuus; lisäysten ja poistojen määrä; viitteeseen kohdistettujen emästen lukumäärä; jne. b>

Kaksi vastused:
gringer
2017-06-13 10:32:15 UTC
view on stackexchange narkive permalink

samtools stats näyttää pystyvän tekemään suurimman osan tästä lukuun ottamatta CIGAR-merkkijonojen jäsentämistä (eli INDEL-tiedostoja):

  $ samtools view -h mapattu .bam | grep -e '^ @' -e 'readName' | samtools tilastot | grep '^ SN' | leikkaa -f 2-raaka kokonaissekvenssit: 2 suodatettua sekvenssiä: 0 seuraukset: 2 on lajiteltu: 11. fragmentit: 2 viimeistä fragmenttia: 0 luetut kartat: 2 luetut kartat ja paritetut: 0 # pariliitosteknologian bittisarja + molemmat perämiehet kartoitetut leikkeet kartoittamattomat: 0 luodut oikein pariksi: 0 # oikean parin bittiasetukset pariksi: 0 # pariliitosteknologian bittisarjatiedostot kopioituina: 0 # PCR- tai optisten kaksoiskappaleiden bittisarjatiedostot MQ0: 0 # yhdistetty ja MQ = 0lukujen laadunvalvonta epäonnistui: 0 ei ensisijaisia ​​kohdistuksia: 0kokonaispituus: 13632 # ohittaa leikkauspohjat kartoitettu: 13632 # jättää huomiotta leikatut leikkauspohjat (sikari): 13502 # tarkemmat alustat leikattu: 0 perustetta päällekkäisiä: 0 ei täsmää: 3670 # NM-kentistä virheiden määrä: 2,718116e-01 # ristiriitaisuudet / kartoitetut emäkset (sikari) keskimääräinen pituus: 6816 enimmäispituus: 6816 keskimääräinen laatu: 8.9insertikoon keskiarvo: 0.0sertikoon vakiopoikkeama: 0.0suuntaan suuntautuneet parit: 0suuntaan suuntautuneet parit: 0parit, joilla on muu suunta: 0paria eri kromosomeissa: 0  

pituussuodatin, awk-pituuden tarkistus voidaan sijoittaa grepin sijasta:

  $ samtools view -h mapped.bam | awk -F '\ t' '{if ((/ ^ @ /) || (pituus ($ 10) >500)) {tulosta $ 0}}' | samtools tilastot | grep '^ SN' | leikkaa -f 2-raaka kokonaissekvenssi: 131 suodatettua sekvenssiä: 0 seuraukset: 131 lajitellaan: 11. fragmentti: 131 viimeistä fragmenttia: 0 luettua karttaa: 131 luettua kartoitettua ja paritettua: 0 # pariliitosteknologian bittijoukko + molemmat perämiehet kartoitetut leikkeet kartoittamattomat: 0lukut oikein yhdistetty: 0 # oikean parin bittiasetukset pariksi: 0 # pariliitostekniikan bittisarjatiedostot kopioituina: 0 # PCR- tai optisten kaksoiskappaleiden bittisarjatiedostot MQ0: 0 # kartoitettu ja MQ = 0lukujen laadunvalvonta epäonnistui: 0 ei ensisijaista kohdistusta: 0kokonaispituus: 569425 # ohittaa leikkaamisen
emäkset kartoitettu: 569425 # jättää huomioimatta leikatut leikkauspohjat (sikari): 453884 # tarkemmat alustat leikattu: 0 kantaa kopioitu: 0 yhteensopimattomuus: 113755 # NM-kentistävirhe: 2,506257e-01 # ristiriidat / kartoitetut emäkset (sikari) keskimääräinen pituus: 4346 enimmäispituus: 16909 keskimääräinen laatu : 9.1insertikoon keskiarvo: 0.0sertikoon vakiopoikkeama: 0.0 sisäänpäin suuntautuvat parit: 0 ulospäin suuntautuneet parit: 0parit, joilla on muu suunta: 0paria eri kromosomeissa: 0  
kaikki jaetut lisäpisteet. Tämä on (toivottavasti) erittäin hyödyllistä ihmisille, jotka työskentelevät pitkiä lukemia ja haluavat tiivistää pidemmät tietonsa ...
@terdon, älä muokkaa tätä, jotta se olisi vähemmän luettavissa kuin se jo on. En ole kiinnostunut pelaamaan awk-golfia; Haluan näyttää ihmisille, miten se toimii, ja tehdä logiikasta selkeä.
Ymmärrän kyllä. Minulla on tapana suosia lyhytkestoisuutta yhden linjan aluksissa, mutta olet oikeassa siinä, että ei-asiantuntijalle on vähemmän selvää. Anteeksi. Kehotan teitä poistamaan \ \, koska niitä ei tarvita, ja IMO vahingoittaa kuitenkin luettavuutta. Poistaisin myös tarpeettomat sulkeet awk-puhelusta samasta syystä: "{if (/ ^ @ / || pituus ($ 10)> 500) {print}}`
Olen poistanut rivinpäästöt, mutta en sulkeja. Minäkään en ole täysin tyytyväinen tekemiseen, koska olen saanut koodini tekemään odottamattomia asioita molemmista syistä aiemmin (vaikkakaan tietenkään ei tarkkoja tilanteita).
user172818
2017-06-13 19:01:53 UTC
view on stackexchange narkive permalink

Käytä htsboxia:

  htsbox samview -p in.bam | vähemmän -Shtsbox samview -pS in.sam | vähemmän -S  

Se tuottaa kartoituspaikat PAF -muodossa, joka näyttää tältä:

  read1 4983 774 4982 + chr18 80373285 26911072 26915544 3835 4631 60 \ mm: i: 214 io: i: 119 in: i: 159 do: i: 339 dn: i: 423  

Tämä on yksi pitkä rivi terminaali. Taitin viivan näyttöä varten. Katso ensimmäiset 12 kiinteää kenttää taulukosta PAF-sivulla. Ne antavat kartoituspaikat ja identiteetin. Valinnaiset kentät kertovat sinulle #mismatches (mm), #insOpens (io), #insertions (in), #delOpens (do) ja #deletions (dn). Huomaa, että kohdistuksessa PITÄÄ olla "NM" -tagi; muuten vastaavien tukikohtien määrä (sarake 11) on yliarvioitu ja "mm" on aina nolla.

Voit helposti laskea yhteenvetotilastot PAF: sta, jos olet perehtynyt komentoriveihin. Esimerkiksi:

  htsbox samview -p in.bam | awk '{x + = $ 10; y + = $ 11} END {print x / y}' # identiteettikentän samview -p in.bam | awk '$ 2>1000 {x + = $ 10; y + = $ 11} END {print x / y}' # identiteetti >1000bphtsbox samview -p in.bam \ | perl -ane '{$ g + = $ 1 while / [id] n: i: (\ d +) / g; $ y + = $ F [10]} END {tulosta $ g / $ y, "\ n"}' # kuiluaste  

Jos et pidä pitkistä yhden linjan linjoista, kirjoita rohkeasti oikea komentosarja kerätäksesi kaikki tilastot kerralla.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...