Questão:
Quantificar leituras mapeando para vários locais
rightskewed
2017-05-30 14:05:01 UTC
view on stackexchange narkive permalink

Tenho usado o STAR para nossas amostras de RNA-Seq. O arquivo de registro final.out relata a porcentagem de leituras mapeadas exclusivamente junto com a porcentagem de leituras que mapeiam para loci múltiplos (menor ou igual a 10) e a porcentagem de leituras mapeadas para muitos loci (maior que 10). No entanto, quero dividir a parte vários locais em contagens individuais: Lê o mapeamento para 2 locais, 3 locais, 4 locais .. 10 locais.

O NH A tag parece ser usada por STAR . No entanto, uma abordagem ingênua de contagem de leituras resulta em relatar mais número de leituras do que leituras totais.

Por exemplo, meu final.out tem a seguinte aparência:

  Velocidade de mapeamento, milhões de leituras por hora | 1403,36 Número de leituras de entrada | 53015978 Comprimento médio de leitura de entrada | 26 LEITURAS EXCLUSIVAS: Número de leituras mapeadas exclusivamente | 368916% de leituras mapeadas exclusivamente | 0,70% Comprimento médio mapeado | 26,45 Número de emendas: Total | 1057 Número de emendas: Anotado (sjdb) | 0 Número de emendas: GT / AG | 802 Número de emendas: GC / AG | 1 Número de emendas: AT / AC | 0 Número de emendas: Não canônico | 254 Taxa de incompatibilidade por base,% | 0,31% Taxa de exclusão por base | 0,00% Comprimento médio da eliminação | 1,45 Taxa de inserção por base | 0,00% Comprimento médio de inserção | 1.00 LEITURAS DE MULTI-MAPEAMENTO: Número de leituras mapeadas para vários locais | 45766732% das leituras mapeadas para vários locais | 86,33% Número de leituras mapeadas para muitos loci | 3757890
% de leituras mapeadas para muitos loci | 7,09% LEITURAS NÃO MAPEADAS:% de leituras não mapeadas: muitas incompatibilidades | 0,00%% de leituras não mapeadas: muito curtas | 5,89%% de leituras não mapeadas: outro | 0,00%  

Contando o histograma do número de posições que uma leitura mapeia usando pysam:

  def get_reads_hist (bam): bam = pysam.AlignmentFile (bam, 'rb') counts = Counter () para consulta em bam.fetch (): nh_count = Counter (dict (query.get_tags ()) ['NH']) contagens + = nh_count retornos contagens  

resulta em

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

As leituras de contagem 1 são boas, embora não correspondam às contagens em final. out file, pois estou contando uma certa categoria de leituras (digamos, aquelas mapeando apenas para tRNA ), mas as leituras mapeando para 2 locais são altamente superestimadas. Por que isso?

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

Você quase já tem o código python correto, você só precisa filtrar os alinhamentos secundários:

  def get_reads_hist (bam): bam = pysam.AlignmentFile (bam, 'rb') contagens = Counter () para consulta em bam.fetch (): if query.is_secondary: continue nh_count = Counter (dict (query.get_tags ()) ['NH']) contagens + = nh_count retornos contagens  


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...