SAMtools — это мощный и широко используемый пакет программного обеспечения для обработки и анализа данных секвенирования нового поколения. Одной из распространенных задач является фильтрация чтений на основе их качества отображения (MAPQ), которое обеспечивает оценку уверенности в совпадении считываний с эталонным геномом. В этой статье мы рассмотрим различные методы фильтрации MAPQ с помощью SAMtools, используя разговорный язык и примеры кода, которые помогут вам понять этот процесс.
Метод 1: базовая фильтрация с использованием команды просмотра SAMtools
Самый простой способ фильтровать чтения с помощью MAPQ — использовать команду просмотра SAMtools с параметром -q. Это позволяет вам указать минимальный порог MAPQ, и SAMtools будет выводить только те чтения, которые соответствуют этому критерию. Например, чтобы отфильтровать чтения с MAPQ ниже 20, вы можете использовать следующую команду:
samtools view -q 20 input.bam > filtered.bam
Метод 2: фильтрация по диапазону
Вы также можете фильтровать чтения в определенном диапазоне значений MAPQ. SAMtools предоставляет параметры -Q и -q для указания верхнего и нижнего порогов соответственно. Например, чтобы извлечь чтения со значениями MAPQ от 30 до 40, вы можете использовать следующую команду:
samtools view -q 30 -Q 40 input.bam > filtered.bam
Метод 3: расширенная фильтрация с использованием представления SAMtools и awk
Представление SAMtools в сочетании с командой awk позволяет выполнять более сложную фильтрацию на основе значений MAPQ. Например, вы можете отфильтровать чтения с MAPQ меньше 10 или больше 40 с помощью следующей команды:
samtools view input.bam | awk '$5 >= 10 && $5 <= 40' | samtools view -bS - > filtered.bam
Метод 4: Фильтрация с использованием SAMtools idxstats
Другой подход заключается в использовании команды SAMtools idxstats для получения статистики для каждой эталонной последовательности в файле BAM, включая общее количество чтений и количество чтений с определенным значением MAPQ.. Это может помочь вам принять обоснованное решение о том, какой порог MAPQ использовать для фильтрации.
Метод 5. Фильтрация с использованием Python и pysam
Если вы предпочитаете работать с Python, вы можете использовать библиотеку pysam для фильтрации операций чтения с помощью MAPQ. Вот пример фрагмента кода:
import pysam
input_bam = pysam.AlignmentFile("input.bam", "rb")
filtered_bam = pysam.AlignmentFile("filtered.bam", "wb", header=input_bam.header)
for read in input_bam:
if read.mapping_quality >= 20:
filtered_bam.write(read)
input_bam.close()
filtered_bam.close()
Фильтрация чтений по качеству картографии — важнейший этап анализа данных NGS. SAMtools предоставляет несколько методов для выполнения этой задачи: от простых параметров командной строки до более сложных подходов к написанию сценариев с использованием таких инструментов, как awk или Python. Используя эти методы, вы можете эффективно извлекать чтения, соответствующие желаемым пороговым значениям MAPQ, и повышать качество последующего анализа.