Vraag:
Kwantificering leest mapping naar meerdere loci
rightskewed
2017-05-30 14:05:01 UTC
view on stackexchange narkive permalink

Ik heb STAR gebruikt voor onze RNA-Seq-samples. Het logboekbestand final.out rapporteert het percentage uniek toegewezen leesbewerkingen samen met het percentage leesbewerkingen dat is toegewezen aan meerdere loci (minder dan of gelijk aan 10) en het percentage leesbewerkingen dat is toegewezen aan te veel loci (meer dan 10). Ik wil het multiple loci -gedeelte echter opsplitsen in individuele tellingen: leest mapping naar 2 locaties, 3 locaties, 4 locaties .. 10 locaties.

De NH -tag lijkt te worden gebruikt door STAR . Een naïeve benadering voor het tellen van lezen resulteert er echter in dat het meer aantal gelezen dan het totale aantal lezingen rapporteert.

Mijn final.out ziet er bijvoorbeeld als volgt uit:

  Mapping-snelheid, miljoen keer gelezen per uur | 1403.36 Aantal ingangen gelezen | 53015978 Gemiddelde leeslengte invoer | 26 UNIEKE LEZINGEN: Uniek toegewezen leest nummer | 368916 Uniek toegewezen leest% | 0,70% Gemiddelde in kaart gebrachte lengte | 26.45 Aantal splitsingen: totaal | 1057 Aantal splitsingen: geannoteerd (sjdb) | 0 Aantal splitsingen: GT / AG | 802 Aantal splitsingen: GC / AG | 1 Aantal splitsingen: AT / AC | 0 Aantal splitsingen: niet-canoniek | 254 Mismatch-percentage per basis,% | 0,31% verwijderingspercentage per basis | 0,00% Gemiddelde lengte verwijderen | 1,45 Invoegsnelheid per basis | 0,00% Gemiddelde lengte inbrengen | 1.00 MULTI-MAPPING READS: aantal reads toegewezen aan meerdere loci | 45766732% van leesbewerkingen toegewezen aan meerdere loci | 86,33% Aantal leesbewerkingen toegewezen aan te veel loci | 3757890
% leesbewerkingen toegewezen aan te veel loci | 7,09% NIET-TOEGEPASTE LEZINGEN:% niet-toegewezen leesbewerkingen: te veel mismatches | 0,00%% gelezen niet-toegewezen: te kort | 5,89%% gelezen niet-toegewezen: andere | 0.00%  

Histogram tellen van het aantal posities dat een gelezen kaart gebruikt met pysam:

  def get_reads_hist (bam): bam = pysam.AlignmentFile (bam, 'rb') counts = Teller () voor zoekopdracht in bam.fetch (): nh_count = Teller (dict (query.get_tags ()) ['NH']) counts + = nh_count retouraantallen  

resulteert in

  teller ({1: 330606, 2: 86772164, 3: 329, 4: 38083, 5: 31, 6: 1094, 7 : 129, 8: 50, 10: 50})  

De telling 1 is prima, ook al komen ze niet overeen met de tellingen in final. out -bestand aangezien ik een bepaalde categorie leesbewerkingen tel (bijvoorbeeld die welke zijn toegewezen aan tRNA ), maar de leesbewerkingen die zijn toegewezen aan 2 locaties worden sterk overschat. Hoe komt dat?

Een antwoord:
#1
+9
Devon Ryan
2017-05-30 14:08:12 UTC
view on stackexchange narkive permalink

Je had al bijna de juiste Python-code, je hoeft alleen maar secundaire uitlijningen uit te filteren:

  def get_reads_hist (bam): bam = pysam.AlignmentFile (bam, 'rb') telt = Counter () voor query in bam.fetch (): if query.is_secondary: continue nh_count = Teller (dict (query.get_tags ()) ['NH']) counts + = nh_count retourcijfers  


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...