From 9a8d3e6e4305daff54da7e1626b7ab67629aae11 Mon Sep 17 00:00:00 2001 From: barnett Date: Mon, 11 Jan 2010 19:10:15 +0000 Subject: [PATCH] Added #include to BamAux.h to cover use of printf. Added AlignmentFlag setter methods, per request by Aaron. git-svn-id: svn+ssh://gene.bc.edu/home/subversion/Derek/BamTools/trunk@39 9efb377e-2e27-44b9-b91a-ec4abb80ed8b --- BGZF.h | 18 +++++++++--------- BamAux.h | 48 +++++++++++++++++++++++++++++++++++++----------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/BGZF.h b/BGZF.h index 344b070..894e460 100644 --- a/BGZF.h +++ b/BGZF.h @@ -29,16 +29,16 @@ #ifndef BAMTOOLS_TYPES #define BAMTOOLS_TYPES #ifdef _MSC_VER - typedef char int8_t; - typedef unsigned char uint8_t; - typedef short int16_t; - typedef unsigned short uint16_t; - typedef int int32_t; - typedef unsigned int uint32_t; - typedef long long int64_t; - typedef unsigned long long uint64_t; + typedef char int8_t; + typedef unsigned char uint8_t; + typedef short int16_t; + typedef unsigned short uint16_t; + typedef int int32_t; + typedef unsigned int uint32_t; + typedef long long int64_t; + typedef unsigned long long uint64_t; #else - #include + #include #endif #endif // BAMTOOLS_TYPES diff --git a/BamAux.h b/BamAux.h index d20454c..fb04642 100644 --- a/BamAux.h +++ b/BamAux.h @@ -3,7 +3,7 @@ // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 11 December 2009 (DB) +// Last modified: 11 Janaury 2010 (DB) // --------------------------------------------------------------------------- // Provides the basic constants, data structures, etc. for using BAM files // *************************************************************************** @@ -12,6 +12,7 @@ #define BAMAUX_H // C inclues +#include #include #include @@ -26,16 +27,16 @@ #ifndef BAMTOOLS_TYPES #define BAMTOOLS_TYPES #ifdef _MSC_VER - typedef char int8_t; - typedef unsigned char uint8_t; - typedef short int16_t; - typedef unsigned short uint16_t; - typedef int int32_t; - typedef unsigned int uint32_t; - typedef long long int64_t; - typedef unsigned long long uint64_t; + typedef char int8_t; + typedef unsigned char uint8_t; + typedef short int16_t; + typedef unsigned short uint16_t; + typedef int int32_t; + typedef unsigned int uint32_t; + typedef long long int64_t; + typedef unsigned long long uint64_t; #else - #include + #include #endif #endif // BAMTOOLS_TYPES @@ -90,6 +91,31 @@ struct BamAlignment { // Returns true if alignment is second mate on read bool IsSecondMate(void) const { return ( (AlignmentFlag & READ_2) != 0 ); } + // Manipulate alignment flag + public: + // Sets "PCR duplicate" bit + void SetIsDuplicate(bool ok) { if (ok) AlignmentFlag |= DUPLICATE; else AlignmentFlag &= ~DUPLICATE; } + // Sets "failed quality control" bit + void SetIsFailedQC(bool ok) { if (ok) AlignmentFlag |= QC_FAILED; else AlignmentFlag &= ~QC_FAILED; } + // Sets "alignment is first mate" bit + void SetIsFirstMate(bool ok) { if (ok) AlignmentFlag |= READ_1; else AlignmentFlag &= ~READ_1; } + // Sets "alignment's mate is mapped" bit + void SetIsMateUnmapped(bool ok) { if (ok) AlignmentFlag |= MATE_UNMAPPED; else AlignmentFlag &= ~MATE_UNMAPPED; } + // Sets "alignment's mate mapped to reverse strand" bit + void SetIsMateReverseStrand(bool ok) { if (ok) AlignmentFlag |= MATE_REVERSE; else AlignmentFlag &= ~MATE_REVERSE; } + // Sets "alignment part of paired-end read" bit + void SetIsPaired(bool ok) { if (ok) AlignmentFlag |= PAIRED; else AlignmentFlag &= ~PAIRED; } + // Sets "alignment is part of read that satisfied paired-end resolution" bit + void SetIsProperPair(bool ok) { if (ok) AlignmentFlag |= PROPER_PAIR; else AlignmentFlag &= ~PROPER_PAIR; } + // Sets "alignment mapped to reverse strand" bit + void SetIsReverseStrand(bool ok) { if (ok) AlignmentFlag |= REVERSE; else AlignmentFlag &= ~REVERSE; } + // Sets "position is primary alignment (determined by external app)" + void SetIsSecondaryAlignment(bool ok) { if (ok) AlignmentFlag |= SECONDARY; else AlignmentFlag &= ~SECONDARY; } + // Sets "alignment is second mate on read" bit + void SetIsSecondMate(bool ok) { if (ok) AlignmentFlag |= READ_2; else AlignmentFlag &= ~READ_2; } + // Sets "alignment is mapped" bit + void SetIsUnmapped(bool ok) { if (ok) AlignmentFlag |= UNMAPPED; else AlignmentFlag &= ~UNMAPPED; } + public: // get "RG" tag data @@ -215,7 +241,7 @@ struct BamAlignment { int32_t Position; // Position (0-based) where alignment starts uint16_t Bin; // Bin in BAM file where this alignment resides uint16_t MapQuality; // Mapping quality score - uint32_t AlignmentFlag; // Alignment bit-flag - see Is() methods for available queries + uint32_t AlignmentFlag; // Alignment bit-flag - see Is() methods to query this value, SetIs() methods to manipulate std::vector CigarData; // 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 -- 2.39.5