samtools
SAMtools kann Alignments filtern, um nur die alignierten Reads auszugeben, die
bestimmten Kriterien entsprechen, einschließlich der Überlappung mit Regionen, die in einer BED-Datei (-L
) angegeben sind,
Zugehörigkeit zu bestimmten Lesegruppen (-r
, -R
), Herkunft aus einer bestimmten Bibliothek oder
eine bestimmte Mindestanzahl von CIGAR-Basen haben, die die Abfragesequenz verbrauchen.1
Die Option -f
gibt nur Alignments aus, bei denen alle Bits in INT
im Feld FLAG
gesetzt sind (INT
kann als Dezimalzahl oder als
hexadezimale Zahl angegeben werden, die mit '0x' beginnt). Dies führt eine UND-Verknüpfung mit allen Bits durch, die
in INT
gesetzt sind, was bedeutet, dass Sequenzen nur angezeigt werden, wenn mindestens die entsprechenden Bit
Positionen in FLAG
auf 1 gesetzt sind. Die Option -F
gibt keine Alignments aus, bei denen
Bits, die in INT
gesetzt sind, im Feld FLAG
. Die Option -F
überspringt daher alle
Reads, für die FLAG & INT != 0
ist. Um also nur primäre Reads auszugeben, können wir den
folgenden Befehl verwenden.
$ samtools view -F 0x900 NIST7035_aln.bam
Die
M
/D
/N
/=
/X
-Operatoren "verbrauchen" Referenzbasen (they are said to "consume reference
bases.")
Die mit diesem Befehl ausgegebenen Reads enthielten insgesamt 38 verschiedene Werte für das Bitfeld, von denen keiner die Bits 0x100 oder 0x800 enthielt. Mit dem folgenden Befehl werden alle sekundären Alignment-Reads extrahiert.
$ samtools view -f 0x100 NIST7035_aln.bam
Die Funktion flagstat
von SAMtools bietet eine Zusammenfassung der
Anzahl der Datensätze, die jedem der Bit-Flags von Tabelle 1 entsprechen. Die Auswertung unseres Beispieldatensatzes zeigt beispielsweise Folgendes.
$ samtools flagstat NIST7035_aln37.bam 35210329 + 0 in total (QC-passed reads + QC-failed reads) 0 + 0 duplicates 35210007 + 0 mapped (100.00%:-nan%) 35210329 + 0 paired in sequencing 17605154 + 0 read1 17605175 + 0 read2 34991352 + 0 properly paired (99.38%:-nan%) 35209746 + 0 with itself and mate mapped 261 + 0 singletons (0.00%:-nan%) 19085 + 0 with mate mapped to a different chr 9718 + 0 with mate mapped to a different chr (mapQ>=5)