Domanda:
La quantificazione legge la mappatura su più loci
rightskewed
2017-05-30 14:05:01 UTC
view on stackexchange narkive permalink

Ho utilizzato STAR per i nostri campioni di RNA-Seq. Il file di log final.out riporta la percentuale di letture mappate in modo univoco insieme alla percentuale di letture che mappano a loci multipli (minore o uguale a 10) e la percentuale di letture mappata a troppi loci (maggiore di 10). Tuttavia, desidero suddividere la parte multiple loci in conteggi individuali: legge la mappatura a 2 posizioni, 3 posizioni, 4 posizioni .. 10 posizioni.

Il NH Il tag sembra essere utilizzato da STAR . Tuttavia, un approccio ingenuo al conteggio delle letture porta a riportare un numero di letture superiore a quello di letture totali.

Ad esempio, il mio final.out ha questo aspetto:

  Velocità di mappatura, milioni di letture all'ora | 1403.36 Numero di letture in ingresso | 53015978 Lunghezza media di lettura in ingresso | 26 LETTURE UNICHE: Numero di letture mappate in modo univoco | 368916 Letture mappate in modo univoco% | 0.70% Lunghezza media mappata | 26.45 Numero di giunzioni: totale | 1057 Numero di giunzioni: con annotazioni (sjdb) | 0 Numero di giunzioni: GT / AG | 802 Numero di giunzioni: GC / AG | 1 Numero di giunzioni: AT / AC | 0 Numero di giunzioni: Non canonico | 254 Tasso di mancata corrispondenza per base,% | 0,31% Tasso di eliminazione per base | 0,00% Lunghezza media cancellazione | 1,45 Tasso di inserimento per base | 0,00% Lunghezza media di inserimento | 1.00 MULTI-MAPPING READS: Numero di letture mappate a più loci | 45766732% di letture mappate a più loci | 86,33% Numero di letture mappate a troppi loci | 3757890
% di letture mappate a troppi loci | 7.09% LETTURE NON MAPPATE:% di letture non mappate: troppe mancate corrispondenze | 0,00%% di letture non mappate: troppo breve | 5,89%% di letture non mappate: altro | 0.00%  

Conteggio dell'istogramma del numero di posizioni a cui una lettura mappa utilizzando pysam:

  def get_reads_hist (bam): bam = pysam.AlignmentFile (bam, 'rb') counts = Counter () per query in bam.fetch (): nh_count = Counter (dict (query.get_tags ()) ['NH']) counts + = nh_count return counts  

restituisce

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

Le letture del conteggio 1 vanno bene anche se non corrispondono ai conteggi in final. out dal momento che sto contando una certa categoria di letture (ad esempio quelle mappate solo su tRNA ), ma le letture mappate su 2 posizioni sono altamente sovrastimate. Perché è così?

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

Avevi già quasi il codice Python corretto, devi solo filtrare gli allineamenti secondari:

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


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...