Pregunta:
Cuantificar lecturas mapeadas a múltiples loci
rightskewed
2017-05-30 14:05:01 UTC
view on stackexchange narkive permalink

He estado usando STAR para nuestras muestras de RNA-Seq. El archivo de registro final.out informa el porcentaje de lecturas asignadas de forma única junto con el porcentaje de lecturas que se asignan a múltiples loci (menor o igual a 10) y el porcentaje de lecturas asignadas a demasiados loci (más de 10). Sin embargo, quiero desglosar la parte de múltiples loci en recuentos individuales: lee mapas de 2 ubicaciones, 3 ubicaciones, 4 ubicaciones ... 10 ubicaciones.

El NH La etiqueta parece ser utilizada por STAR . Sin embargo, un enfoque ingenuo de conteo de lecturas da como resultado que se informe más cantidad de lecturas que lecturas totales.

Por ejemplo, mi final.out se ve así:

  Velocidad de mapeo, millones de lecturas por hora | 1403.36 Número de lecturas de entrada | 53015978 Longitud media de lectura de entrada | 26 LECTURAS ÚNICAS: número de lecturas mapeadas de forma única | 368916% de lecturas mapeadas de forma exclusiva | 0,70% Longitud media cartografiada | 26,45 Número de empalmes: Total | 1057 Número de empalmes: anotado (sjdb) | 0 Número de empalmes: GT / AG | 802 Número de empalmes: GC / AG | 1 Número de empalmes: AT / AC | 0 Número de empalmes: No canónico | 254 Tasa de discordancia por base,% | 0,31% Tasa de eliminación por base | 0,00% Longitud media de supresión | 1,45 Tasa de inserción por base | 0,00% Longitud media de inserción | 1.00 LECTURAS MULTI-MAPEO: Número de lecturas asignadas a múltiples loci | 45766732% de lecturas asignadas a múltiples loci | 86,33% Número de lecturas asignadas a demasiados loci | 3757890
% de lecturas asignadas a demasiados loci | 7.09% DE LECTURAS SIN ASIGNAR:% de lecturas sin asignar: demasiadas discrepancias | 0.00%% de lecturas sin asignar: demasiado corto | 5,89%% de lecturas sin asignar: otro | 0.00%  

Contando el histograma de la cantidad de posiciones que un mapa de lectura usa pysam:

  def get_reads_hist (bam): bam = pysam.AlignmentFile (bam, 'rb') count = Counter () para la consulta en bam.fetch (): nh_count = Counter (dict (query.get_tags ()) ['NH']) count + = nh_count return count  

da como resultado

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

Las lecturas de recuento 1 están bien aunque no coincidan con los recuentos en final. out ya que estoy contando una determinada categoría de lecturas (digamos, aquellas que se asignan a tRNA solamente), pero las lecturas que se asignan a 2 ubicaciones están muy sobreestimadas. ¿Por qué es eso?

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

Ya casi tenías el código Python correcto, solo necesitas filtrar las alineaciones secundarias:

  def get_reads_hist (bam): bam = pysam.AlignmentFile (bam, 'rb') count = Contador () para la consulta en bam.fetch (): si query.is_secondary: continue nh_count = Contador (dict (query.get_tags ()) ['NH']) cuenta + = nh_count devuelve recuentos  


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...