SeqAn3  3.0.1
The Modern C++ library for sequence analysis.
Alignment File

Provides files and formats for handling alignment data. More...

+ Collaboration diagram for Alignment File:

Classes

class  seqan3::alignment_file_header< ref_ids_type >
 Stores the header information of alignment files. More...
 
class  seqan3::alignment_file_input< traits_type_, selected_field_ids_, valid_formats_ >
 A class for reading alignment files, e.g. SAM, BAM, BLAST ... More...
 
struct  seqan3::alignment_file_input_default_traits< ref_sequences_t, ref_ids_t >
 The default traits for seqan3::alignment_file_input. More...
 
interface  alignment_file_input_format
 The generic concept for alignment file input formats. More...
 
struct  seqan3::alignment_file_input_options< sequence_legal_alphabet >
 The options type defines various option members that influence the behaviour of all or some formats. More...
 
interface  alignment_file_input_traits
 The requirements a traits_type for seqan3::alignment_file_input must meet. More...
 
class  seqan3::alignment_file_output< selected_field_ids_, valid_formats_, ref_ids_type >
 A class for writing alignment files, e.g. SAM, BAL, BLAST, ... More...
 
interface  alignment_file_output_format
 The generic concept for alignment file out formats. More...
 
struct  seqan3::alignment_file_output_options
 The options type defines various option members that influence the behavior of all or some formats. More...
 
class  seqan3::format_bam
 The BAM format. More...
 
class  seqan3::format_sam
 The SAM format (tag). More...
 
struct  std::tuple_element< elem_no, seqan3::alignment_file_input< traits_type, selected_field_ids, valid_formats > >
 Obtains the type of the specified element. More...
 
struct  std::tuple_size< seqan3::alignment_file_input< traits_type, selected_field_ids, valid_formats > >
 Provides access to the number of elements in a tuple as a compile-time constant expression. More...
 

Enumerations

enum  seqan3::sam_flag : uint16_t {
  seqan3::sam_flag::none = 0, seqan3::sam_flag::paired = 0x1, seqan3::sam_flag::proper_pair = 0x2, seqan3::sam_flag::unmapped = 0x4,
  seqan3::sam_flag::mate_unmapped = 0x8, seqan3::sam_flag::on_reverse_strand = 0x10, seqan3::sam_flag::mate_on_reverse_strand = 0x20, seqan3::sam_flag::first_in_pair = 0x40,
  seqan3::sam_flag::second_in_pair = 0x80, seqan3::sam_flag::secondary_alignment = 0x100, seqan3::sam_flag::failed_filter = 0x200, seqan3::sam_flag::duplicate = 0x400,
  seqan3::sam_flag::supplementary_alignment = 0x800
}
 An enum flag that describes the properties of an aligned read (given as a SAM record). More...
 

Detailed Description

Provides files and formats for handling alignment data.

Enumeration Type Documentation

◆ sam_flag

enum seqan3::sam_flag : uint16_t
strong

An enum flag that describes the properties of an aligned read (given as a SAM record).

The SAM flag are bitwise flags, which means that each value corresponds to a specific bit that is set and that they can be combined and tested using binary operations. See this tutorial for an introduction on bitwise operations on enum flags.

Example:

#include <iostream>
#include <sstream>
auto sam_file_raw = R"(@HD VN:1.6 SO:coordinate GO:none
@SQ SN:ref LN:45
r001 99 ref 7 30 8M2I4M1D3M = 37 39 TTAGATAAAGGATACTG !!!!!!!!!!!!!!!!!
r003 0 ref 29 30 5S6M * 0 0 GCCTAAGCTAA !!!!!!!!!!! SA:Z:ref,29,-,6H5M,17,0;
r003 4 * 29 17 * * 0 0 TAGGC @@@@@ SA:Z:ref,9,+,5S6M,30,1;
r001 147 ref 237 30 9M = 7 -39 CAGCGGCAT !!!!!!!!! NM:i:1
)";
int main()
{
for (auto & rec : fin)
{
// Check if a certain flag value (bit) is set:
if (static_cast<bool>(seqan3::get<seqan3::field::flag>(rec) & seqan3::sam_flag::unmapped))
std::cout << "Read " << seqan3::get<seqan3::field::id>(rec) << " is unmapped\n";
if (seqan3::get<seqan3::field::qual>(rec)[0] < seqan3::assign_char_to('@', seqan3::phred42{})) // low quality
{
// Set a flag value (bit):
seqan3::get<seqan3::field::flag>(rec) &= seqan3::sam_flag::failed_filter;
// Note that this does not affect other flag values (bits),
// e.g. `seqan3::get<seqan3::field::flag>(rec) & seqan3::sam_flag::unmapped` may still be true
}
// Unset a flag value (bit):
seqan3::get<seqan3::field::flag>(rec) &= ~seqan3::sam_flag::duplicate; // not marked as a duplicate anymore
}
}

Adapted from the SAM specifications are the following additional information to some flag values:

See also
https://broadinstitute.github.io/picard/explain-flags.html
Enumerator
none 

None of the flags below are set.

paired 

The aligned read is paired (paired-end sequencing).

proper_pair 

The two aligned reads in a pair have a proper distance between each other.

unmapped 

The read is not mapped to a reference (unaligned).

mate_unmapped 

The mate of this read is not mapped to a reference (unaligned).

on_reverse_strand 

The read sequence has been reverse complemented before being mapped (aligned).

mate_on_reverse_strand 

The mate sequence has been reverse complemented before being mapped (aligned).

first_in_pair 

Indicates the ordering (see details in the seqan3::sam_flag description).

second_in_pair 

Indicates the ordering (see details in the seqan3::sam_flag description).

secondary_alignment 

This read alignment is an alternative (possibly suboptimal) to the primary.

failed_filter 

The read alignment failed a filter, e.g. quality controls.

duplicate 

The read is marked as a PCR duplicate or optical duplicate.

supplementary_alignment 

This sequence is part of a split alignment and is not the primary alignment.

sstream
std::istringstream
iostream
std::cout
seqan3::alignment_file_input
A class for reading alignment files, e.g. SAM, BAM, BLAST ...
Definition: input.hpp:382
seqan3
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:36
seqan3::phred42
Quality type for traditional Sanger and modern Illumina Phred scores (typical range).
Definition: phred42.hpp:43
seqan3::sam_flag::failed_filter
The read alignment failed a filter, e.g. quality controls.
seqan3::sam_flag::unmapped
The read is not mapped to a reference (unaligned).
seqan3::format_sam
The SAM format (tag).
Definition: format_sam.hpp:124
seqan3::assign_char_to
constexpr auto assign_char_to
Assign a character to an alphabet object.
Definition: concept.hpp:416
all.hpp
Meta-include for the alignment IO submodule.