]> git.donarmstrong.com Git - bamtools.git/commitdiff
Added #include<cstdio> to BamAux.h to cover use of printf. Added AlignmentFlag setter...
authorbarnett <barnett@9efb377e-2e27-44b9-b91a-ec4abb80ed8b>
Mon, 11 Jan 2010 19:10:15 +0000 (19:10 +0000)
committerbarnett <barnett@9efb377e-2e27-44b9-b91a-ec4abb80ed8b>
Mon, 11 Jan 2010 19:10:15 +0000 (19:10 +0000)
git-svn-id: svn+ssh://gene.bc.edu/home/subversion/Derek/BamTools/trunk@39 9efb377e-2e27-44b9-b91a-ec4abb80ed8b

BGZF.h
BamAux.h

diff --git a/BGZF.h b/BGZF.h
index 344b07038c7c9858b6236a0e538733415794852f..894e460ee92d2607471b29e2849e7df3b0689803 100644 (file)
--- a/BGZF.h
+++ b/BGZF.h
 #ifndef BAMTOOLS_TYPES\r
 #define BAMTOOLS_TYPES\r
        #ifdef _MSC_VER\r
-                       typedef char                 int8_t;\r
-                       typedef unsigned char       uint8_t;\r
-                       typedef short               int16_t;\r
-                       typedef unsigned short     uint16_t;\r
-                       typedef int                 int32_t;\r
-                       typedef unsigned int       uint32_t;\r
-                       typedef long long           int64_t;\r
-                       typedef unsigned long long uint64_t;\r
+               typedef char                 int8_t;\r
+               typedef unsigned char       uint8_t;\r
+               typedef short               int16_t;\r
+               typedef unsigned short     uint16_t;\r
+               typedef int                 int32_t;\r
+               typedef unsigned int       uint32_t;\r
+               typedef long long           int64_t;\r
+               typedef unsigned long long uint64_t;\r
        #else\r
-                       #include <stdint.h>\r
+               #include <stdint.h>\r
        #endif\r
 #endif // BAMTOOLS_TYPES\r
 \r
index d20454cb745972d7d3a3700c6e8559edc7d8b915..fb0464211d7c46fa6fb0b6d6071e202057b101aa 100644 (file)
--- a/BamAux.h
+++ b/BamAux.h
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 11 December 2009 (DB)\r
+// Last modified: 11 Janaury 2010 (DB)\r
 // ---------------------------------------------------------------------------\r
 // Provides the basic constants, data structures, etc. for using BAM files\r
 // ***************************************************************************\r
@@ -12,6 +12,7 @@
 #define BAMAUX_H\r
 \r
 // C inclues\r
+#include <cstdio>\r
 #include <cstdlib>\r
 #include <cstring>\r
 \r
 #ifndef BAMTOOLS_TYPES\r
 #define BAMTOOLS_TYPES\r
        #ifdef _MSC_VER\r
-                       typedef char                 int8_t;\r
-                       typedef unsigned char       uint8_t;\r
-                       typedef short               int16_t;\r
-                       typedef unsigned short     uint16_t;\r
-                       typedef int                 int32_t;\r
-                       typedef unsigned int       uint32_t;\r
-                       typedef long long           int64_t;\r
-                       typedef unsigned long long uint64_t;\r
+               typedef char                 int8_t;\r
+               typedef unsigned char       uint8_t;\r
+               typedef short               int16_t;\r
+               typedef unsigned short     uint16_t;\r
+               typedef int                 int32_t;\r
+               typedef unsigned int       uint32_t;\r
+               typedef long long           int64_t;\r
+               typedef unsigned long long uint64_t;\r
        #else\r
-                       #include <stdint.h>\r
+               #include <stdint.h>\r
        #endif\r
 #endif // BAMTOOLS_TYPES\r
 \r
@@ -90,6 +91,31 @@ struct BamAlignment {
         // Returns true if alignment is second mate on read\r
         bool IsSecondMate(void) const { return ( (AlignmentFlag & READ_2) != 0 ); }\r
 \r
+       // Manipulate alignment flag\r
+       public:\r
+               // Sets "PCR duplicate" bit \r
+        void SetIsDuplicate(bool ok) { if (ok) AlignmentFlag |= DUPLICATE; else AlignmentFlag &= ~DUPLICATE; }\r
+        // Sets "failed quality control" bit\r
+        void SetIsFailedQC(bool ok) { if (ok) AlignmentFlag |= QC_FAILED; else AlignmentFlag &= ~QC_FAILED; }\r
+        // Sets "alignment is first mate" bit\r
+        void SetIsFirstMate(bool ok) { if (ok) AlignmentFlag |= READ_1; else AlignmentFlag &= ~READ_1; }\r
+        // Sets "alignment's mate is mapped" bit\r
+        void SetIsMateUnmapped(bool ok) { if (ok) AlignmentFlag |= MATE_UNMAPPED; else AlignmentFlag &= ~MATE_UNMAPPED; }\r
+        // Sets "alignment's mate mapped to reverse strand" bit\r
+        void SetIsMateReverseStrand(bool ok) { if (ok) AlignmentFlag |= MATE_REVERSE; else AlignmentFlag &= ~MATE_REVERSE; }\r
+        // Sets "alignment part of paired-end read" bit\r
+        void SetIsPaired(bool ok) { if (ok) AlignmentFlag |= PAIRED; else AlignmentFlag &= ~PAIRED; }\r
+        // Sets "alignment is part of read that satisfied paired-end resolution" bit\r
+        void SetIsProperPair(bool ok) { if (ok) AlignmentFlag |= PROPER_PAIR; else AlignmentFlag &= ~PROPER_PAIR; }\r
+        // Sets "alignment mapped to reverse strand" bit\r
+        void SetIsReverseStrand(bool ok) { if (ok) AlignmentFlag |= REVERSE; else AlignmentFlag &= ~REVERSE; }\r
+               // Sets "position is primary alignment (determined by external app)"\r
+        void SetIsSecondaryAlignment(bool ok)  { if (ok) AlignmentFlag |= SECONDARY; else AlignmentFlag &= ~SECONDARY; }\r
+        // Sets "alignment is second mate on read" bit\r
+        void SetIsSecondMate(bool ok) { if (ok) AlignmentFlag |= READ_2; else AlignmentFlag &= ~READ_2; }\r
+               // Sets "alignment is mapped" bit\r
+        void SetIsUnmapped(bool ok) { if (ok) AlignmentFlag |= UNMAPPED; else AlignmentFlag &= ~UNMAPPED; }\r
+               \r
     public:\r
 \r
         // get "RG" tag data\r
@@ -215,7 +241,7 @@ struct BamAlignment {
         int32_t      Position;          // Position (0-based) where alignment starts\r
         uint16_t     Bin;               // Bin in BAM file where this alignment resides\r
         uint16_t     MapQuality;        // Mapping quality score\r
-        uint32_t     AlignmentFlag;     // Alignment bit-flag - see Is<something>() methods for available queries\r
+        uint32_t     AlignmentFlag;     // Alignment bit-flag - see Is<something>() methods to query this value, SetIs<something>() methods to manipulate \r
         std::vector<CigarOp> CigarData; // CIGAR operations for this alignment\r
         int32_t      MateRefID;         // ID number for reference sequence where alignment's mate was aligned\r
         int32_t      MatePosition;      // Position (0-based) where alignment's mate starts\r