BamTools::BamAlignment Class Reference

The main BAM alignment data structure. More...

#include <BamAlignment.h>

List of all members.

Classes

struct  BamAlignmentSupportData

Public Member Functions

 BamAlignment (void)
 constructor
 BamAlignment (const BamAlignment &other)
 copy constructor
 ~BamAlignment (void)
 destructor
bool IsDuplicate (void) const
bool IsFailedQC (void) const
bool IsFirstMate (void) const
bool IsMapped (void) const
bool IsMateMapped (void) const
bool IsMateReverseStrand (void) const
bool IsPaired (void) const
bool IsPrimaryAlignment (void) const
bool IsProperPair (void) const
bool IsReverseStrand (void) const
bool IsSecondMate (void) const
void SetIsDuplicate (bool ok)
 Sets value of "PCR duplicate" flag to ok.
void SetIsFailedQC (bool ok)
 Sets "failed quality control" flag to ok.
void SetIsFirstMate (bool ok)
 Sets "alignment is first mate" flag to ok.
void SetIsMapped (bool ok)
 Sets "alignment is mapped" flag to ok.
void SetIsMateMapped (bool ok)
 Sets "alignment's mate is mapped" flag to ok.
void SetIsMateReverseStrand (bool ok)
 Sets "alignment's mate mapped to reverse strand" flag to ok.
void SetIsPaired (bool ok)
 Sets "alignment part of paired-end read" flag to ok.
void SetIsPrimaryAlignment (bool ok)
 Sets "position is primary alignment" flag to ok.
void SetIsProperPair (bool ok)
 Sets "alignment is part of read that satisfied paired-end resolution" flag to ok.
void SetIsReverseStrand (bool ok)
 Sets "alignment mapped to reverse strand" flag to ok.
void SetIsSecondMate (bool ok)
 Sets "alignment is second mate on read" flag to ok.
template<typename T >
bool AddTag (const std::string &tag, const std::string &type, const T &value)
template<typename T >
bool AddTag (const std::string &tag, const std::vector< T > &values)
template<typename T >
bool EditTag (const std::string &tag, const std::string &type, const T &value)
template<typename T >
bool EditTag (const std::string &tag, const std::vector< T > &values)
template<typename T >
bool GetTag (const std::string &tag, T &destination) const
template<typename T >
bool GetTag (const std::string &tag, std::vector< T > &destination) const
bool GetTagType (const std::string &tag, char &type) const
 Retrieves the BAM tag type-code associated with requested tag name.
bool HasTag (const std::string &tag) const
 Returns true if alignment has a record for requested tag.
void RemoveTag (const std::string &tag)
 Removes field from BAM tags.
bool BuildCharData (void)
 Populates alignment string fields (read name, bases, qualities, tag data).
int GetEndPosition (bool usePadded=false, bool closedInterval=false) const
 Calculates alignment end position, based on its starting position and CIGAR data.
std::string GetErrorString (void) const
 Returns a human-readable description of the last error that occurred.
bool GetSoftClips (std::vector< int > &clipSizes, std::vector< int > &readPositions, std::vector< int > &genomePositions, bool usePadded=false) const
 Identifies if an alignment has a soft clip. If so, identifies the sizes of the soft clips, as well as their positions in the read and reference.

Public Attributes

std::string Name
 read name
int32_t Length
 length of query sequence
std::string QueryBases
 'original' sequence (as reported from sequencing machine)
std::string AlignedBases
 'aligned' sequence (includes any indels, padding, clipping)
std::string Qualities
 FASTQ qualities (ASCII characters, not numeric values).
std::string TagData
 tag data (use the provided methods to query/modify)
int32_t RefID
 ID number for reference sequence.
int32_t Position
 position (0-based) where alignment starts
uint16_t Bin
 BAM (standard) index bin number for this alignment.
uint16_t MapQuality
 mapping quality score
uint32_t AlignmentFlag
 alignment bit-flag (use the provided methods to query/modify)
std::vector< CigarOpCigarData
 CIGAR operations for this alignment.
int32_t MateRefID
 ID number for reference sequence where alignment's mate was aligned.
int32_t MatePosition
 position (0-based) where alignment's mate starts
int32_t InsertSize
 mate-pair insert size
std::string Filename
 name of BAM file which this alignment comes from

Friends

class Internal::BamReaderPrivate
class Internal::BamWriterPrivate

Detailed Description

The main BAM alignment data structure.

Provides methods to query/modify BAM alignment data fields.


Constructor & Destructor Documentation

BamAlignment::BamAlignment ( void   ) 

constructor

BamAlignment::BamAlignment ( const BamAlignment other  ) 

copy constructor

BamAlignment::~BamAlignment ( void   ) 

destructor


Member Function Documentation

template<typename T >
bool BamTools::BamAlignment::AddTag ( const std::string &  tag,
const std::vector< T > &  values 
) [inline]
template<typename T >
bool BamTools::BamAlignment::AddTag ( const std::string &  tag,
const std::string &  type,
const T &  value 
) [inline]
bool BamAlignment::BuildCharData ( void   ) 

Populates alignment string fields (read name, bases, qualities, tag data).

An alignment retrieved using BamReader::GetNextAlignmentCore() lacks this data. Using that method makes parsing much quicker when only positional data is required.

However, if you later want to access the character data fields from such an alignment, use this method to populate those fields. Provides ability to do 'lazy evaluation' of alignment parsing.

Returns:
true if character data populated successfully (or was already available to begin with)
template<typename T >
bool BamTools::BamAlignment::EditTag ( const std::string &  tag,
const std::vector< T > &  values 
) [inline]
template<typename T >
bool BamTools::BamAlignment::EditTag ( const std::string &  tag,
const std::string &  type,
const T &  value 
) [inline]
int BamAlignment::GetEndPosition ( bool  usePadded = false,
bool  closedInterval = false 
) const

Calculates alignment end position, based on its starting position and CIGAR data.

Warning:
The position returned now represents a zero-based, HALF-OPEN interval. In previous versions of BamTools (0.x & 1.x) all intervals were treated as zero-based, CLOSED.
Parameters:
[in] usePadded Allow inserted bases to affect the reported position. Default is false, so that reported position stays synced with reference coordinates.
[in] closedInterval Setting this to true will return a 0-based end coordinate. Default is false, so that his value represents a standard, half-open interval.
Returns:
alignment end position
std::string BamAlignment::GetErrorString ( void   )  const

Returns a human-readable description of the last error that occurred.

This method allows elimination of STDERR pollution. Developers of client code may choose how the messages are displayed to the user, if at all.

Returns:
error description
bool BamAlignment::GetSoftClips ( std::vector< int > &  clipSizes,
std::vector< int > &  readPositions,
std::vector< int > &  genomePositions,
bool  usePadded = false 
) const

Identifies if an alignment has a soft clip. If so, identifies the sizes of the soft clips, as well as their positions in the read and reference.

Parameters:
[out] clipSizes vector of the sizes of each soft clip in the alignment
[out] readPositions vector of the 0-based read locations of each soft clip in the alignment. These positions are basically indexes within the read, not genomic positions.
[out] genomePositions vector of the 0-based genome locations of each soft clip in the alignment
[in] usePadded inserted bases affect reported position. Default is false, so that reported position stays 'sync-ed' with reference coordinates.
Returns:
true if any soft clips were found in the alignment
template<typename T >
bool BamTools::BamAlignment::GetTag ( const std::string &  tag,
std::vector< T > &  destination 
) const [inline]
template<typename T >
bool BamTools::BamAlignment::GetTag ( const std::string &  tag,
T &  destination 
) const [inline]
bool BamAlignment::GetTagType ( const std::string &  tag,
char &  type 
) const

Retrieves the BAM tag type-code associated with requested tag name.

Parameters:
[in] tag 2-character tag name
[out] type retrieved (1-character) type-code
Returns:
true if found
See also:
http://samtools.sourceforge.net/SAM1.pdf for more details on reserved tag names, supported tag types, etc.
bool BamAlignment::HasTag ( const std::string &  tag  )  const

Returns true if alignment has a record for requested tag.

Parameters:
[in] tag 2-character tag name
Returns:
true if alignment has a record for tag
bool BamAlignment::IsDuplicate ( void   )  const
Returns:
true if this read is a PCR duplicate
bool BamAlignment::IsFailedQC ( void   )  const
Returns:
true if this read failed quality control
bool BamAlignment::IsFirstMate ( void   )  const
Returns:
true if alignment is first mate on paired-end read
bool BamAlignment::IsMapped ( void   )  const
Returns:
true if alignment is mapped
bool BamAlignment::IsMateMapped ( void   )  const
Returns:
true if alignment's mate is mapped
bool BamAlignment::IsMateReverseStrand ( void   )  const
Returns:
true if alignment's mate mapped to reverse strand
bool BamAlignment::IsPaired ( void   )  const
Returns:
true if alignment part of paired-end read
bool BamAlignment::IsPrimaryAlignment ( void   )  const
Returns:
true if reported position is primary alignment
bool BamAlignment::IsProperPair ( void   )  const
Returns:
true if alignment is part of read that satisfied paired-end resolution
bool BamAlignment::IsReverseStrand ( void   )  const
Returns:
true if alignment mapped to reverse strand
bool BamAlignment::IsSecondMate ( void   )  const
Returns:
true if alignment is second mate on read
void BamAlignment::RemoveTag ( const std::string &  tag  ) 

Removes field from BAM tags.

Parameters:
[in] tag 2-character name of field to remove
void BamAlignment::SetIsDuplicate ( bool  ok  ) 

Sets value of "PCR duplicate" flag to ok.

void BamAlignment::SetIsFailedQC ( bool  ok  ) 

Sets "failed quality control" flag to ok.

void BamAlignment::SetIsFirstMate ( bool  ok  ) 

Sets "alignment is first mate" flag to ok.

void BamAlignment::SetIsMapped ( bool  ok  ) 

Sets "alignment is mapped" flag to ok.

void BamAlignment::SetIsMateMapped ( bool  ok  ) 

Sets "alignment's mate is mapped" flag to ok.

void BamAlignment::SetIsMateReverseStrand ( bool  ok  ) 

Sets "alignment's mate mapped to reverse strand" flag to ok.

void BamAlignment::SetIsPaired ( bool  ok  ) 

Sets "alignment part of paired-end read" flag to ok.

void BamAlignment::SetIsPrimaryAlignment ( bool  ok  ) 

Sets "position is primary alignment" flag to ok.

void BamAlignment::SetIsProperPair ( bool  ok  ) 

Sets "alignment is part of read that satisfied paired-end resolution" flag to ok.

void BamAlignment::SetIsReverseStrand ( bool  ok  ) 

Sets "alignment mapped to reverse strand" flag to ok.

void BamAlignment::SetIsSecondMate ( bool  ok  ) 

Sets "alignment is second mate on read" flag to ok.


Friends And Related Function Documentation

friend class Internal::BamReaderPrivate [friend]
friend class Internal::BamWriterPrivate [friend]

Member Data Documentation

'aligned' sequence (includes any indels, padding, clipping)

This field will be completely empty after reading from BamReader/BamMultiReader when QueryBases is empty.

alignment bit-flag (use the provided methods to query/modify)

BAM (standard) index bin number for this alignment.

CIGAR operations for this alignment.

name of BAM file which this alignment comes from

mate-pair insert size

length of query sequence

mapping quality score

position (0-based) where alignment's mate starts

ID number for reference sequence where alignment's mate was aligned.

read name

position (0-based) where alignment starts

FASTQ qualities (ASCII characters, not numeric values).

Note:
Setting this field to "*" indicates to BamWriter that the quality scores are not to be stored, but instead will be output as a sequence of '0xFF'. Otherwise, QueryBases must not be a "*" and the length of this field should equal the length of QueryBases.

'original' sequence (as reported from sequencing machine)

Note:
Setting this field to "*" indicates that the sequence is not to be stored on output. In this case, the contents of the Qualities field should be invalidated as well (cleared or marked as "*").

ID number for reference sequence.

tag data (use the provided methods to query/modify)


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Wed Aug 29 17:43:46 2012 for BamTools by  doxygen 1.6.3