]> git.donarmstrong.com Git - bamtools.git/commitdiff
Fixed some signed/unsigned int issues
authorbarnett <barnett@9efb377e-2e27-44b9-b91a-ec4abb80ed8b>
Tue, 8 Dec 2009 18:57:41 +0000 (18:57 +0000)
committerbarnett <barnett@9efb377e-2e27-44b9-b91a-ec4abb80ed8b>
Tue, 8 Dec 2009 18:57:41 +0000 (18:57 +0000)
git-svn-id: svn+ssh://gene.bc.edu/home/subversion/Derek/BamTools/trunk@32 9efb377e-2e27-44b9-b91a-ec4abb80ed8b

BamAux.h
BamReader.cpp
BamReader.h
BamTrimMain.cpp

index d5510d18f0fbb078206a04fb19967641c3f48455..eec5556b721ead182b81d9f7003bdebb924660b9 100644 (file)
--- a/BamAux.h
+++ b/BamAux.h
@@ -230,9 +230,9 @@ struct CigarOp {
 \r
 struct RefData {\r
     // data members\r
-    std::string  RefName;          // Name of reference sequence\r
-    unsigned int RefLength;        // Length of reference sequence\r
-    bool         RefHasAlignments; // True if BAM file contains alignments mapped to reference sequence\r
+    std::string RefName;          // Name of reference sequence\r
+    int         RefLength;        // Length of reference sequence\r
+    bool        RefHasAlignments; // True if BAM file contains alignments mapped to reference sequence\r
     // constructor\r
     RefData(void)\r
         : RefLength(0)\r
index 386a4854ab311336d51a340e3340ef09d43b2427..8dc2eb0aa4f6d0fe59e6be49a0c4fd191b0c9ce5 100644 (file)
@@ -40,9 +40,9 @@ struct BamReader::BamReaderPrivate {
     string    IndexFilename;\r
 \r
     // user-specified region values\r
-    bool         IsRegionSpecified;\r
-    int          CurrentRefID;\r
-    unsigned int CurrentLeft;\r
+    bool IsRegionSpecified;\r
+    int  CurrentRefID;\r
+    int  CurrentLeft;\r
 \r
     // BAM character constants\r
     const char* DNA_LOOKUP;\r
@@ -60,7 +60,7 @@ struct BamReader::BamReaderPrivate {
 \r
     // flie operations\r
     void Close(void);\r
-    bool Jump(int refID, unsigned int position = 0);\r
+    bool Jump(int refID, int position = 0);\r
     void Open(const string& filename, const string& indexFilename = "");\r
     bool Rewind(void);\r
 \r
@@ -83,11 +83,11 @@ struct BamReader::BamReaderPrivate {
     // *** reading alignments and auxiliary data *** //\r
 \r
     // calculate bins that overlap region ( left to reference end for now )\r
-    int BinsFromRegion(int, unsigned int, uint16_t[MAX_BIN]);\r
+    int BinsFromRegion(int refID, int left, uint16_t[MAX_BIN]);\r
     // calculates alignment end position based on starting position and provided CIGAR operations\r
-    unsigned int CalculateAlignmentEnd(const unsigned int& position, const std::vector<CigarOp>& cigarData);\r
+    int CalculateAlignmentEnd(const int& position, const std::vector<CigarOp>& cigarData);\r
     // calculate file offset for first alignment chunk overlapping 'left'\r
-    int64_t GetOffset(int refID, unsigned int left);\r
+    int64_t GetOffset(int refID, int left);\r
     // checks to see if alignment overlaps current region\r
     bool IsOverlap(BamAlignment& bAlignment);\r
     // retrieves header text from BAM file\r
@@ -134,7 +134,7 @@ BamReader::~BamReader(void) {
 \r
 // file operations\r
 void BamReader::Close(void) { d->Close(); }\r
-bool BamReader::Jump(int refID, unsigned int position) { return d->Jump(refID, position); }\r
+bool BamReader::Jump(int refID, int position) { return d->Jump(refID, position); }\r
 void BamReader::Open(const string& filename, const string& indexFilename) { d->Open(filename, indexFilename); }\r
 bool BamReader::Rewind(void) { return d->Rewind(); }\r
 \r
@@ -171,11 +171,11 @@ BamReader::BamReaderPrivate::~BamReaderPrivate(void) {
 }\r
 \r
 // calculate bins that overlap region ( left to reference end for now )\r
-int BamReader::BamReaderPrivate::BinsFromRegion(int refID, unsigned int left, uint16_t list[MAX_BIN]) {\r
+int BamReader::BamReaderPrivate::BinsFromRegion(int refID, int left, uint16_t list[MAX_BIN]) {\r
 \r
     // get region boundaries\r
-    uint32_t begin = left;\r
-    uint32_t end   = References.at(refID).RefLength - 1;\r
+    int32_t begin = left;\r
+    int32_t end   = References.at(refID).RefLength - 1;\r
 \r
     // initialize list, bin '0' always a valid bin\r
     int i = 0;\r
@@ -238,7 +238,7 @@ bool BamReader::BamReaderPrivate::BuildIndex(void) {
         // if lastCoordinate greater than BAM position - file not sorted properly\r
         else if ( lastCoordinate > bAlignment.Position ) {\r
             printf("BAM file not properly sorted:\n");\r
-            printf("Alignment %s : %u > %u on reference (id = %d)", bAlignment.Name.c_str(), lastCoordinate, bAlignment.Position, bAlignment.RefID);\r
+            printf("Alignment %s : %d > %d on reference (id = %d)", bAlignment.Name.c_str(), lastCoordinate, bAlignment.Position, bAlignment.RefID);\r
             exit(1);\r
         }\r
 \r
@@ -324,10 +324,10 @@ bool BamReader::BamReaderPrivate::BuildIndex(void) {
 }\r
 \r
 // calculates alignment end position based on starting position and provided CIGAR operations\r
-unsigned int BamReader::BamReaderPrivate::CalculateAlignmentEnd(const unsigned int& position, const vector<CigarOp>& cigarData) {\r
+int BamReader::BamReaderPrivate::CalculateAlignmentEnd(const int& position, const vector<CigarOp>& cigarData) {\r
 \r
     // initialize alignment end to starting position\r
-    unsigned int alignEnd = position;\r
+    int alignEnd = position;\r
 \r
     // iterate over cigar operations\r
     vector<CigarOp>::const_iterator cigarIter = cigarData.begin();\r
@@ -361,9 +361,12 @@ bool BamReader::BamReaderPrivate::CreateIndex(void) {
     // clear out index\r
     ClearIndex();\r
 \r
+       // build (& save) index from BAM file\r
     bool ok = true;\r
     ok &= BuildIndex();\r
     ok &= WriteIndex();\r
+\r
+       // return success/fail\r
     return ok;\r
 }\r
 \r
@@ -406,7 +409,7 @@ bool BamReader::BamReaderPrivate::GetNextAlignment(BamAlignment& bAlignment) {
 }\r
 \r
 // calculate closest indexed file offset for region specified\r
-int64_t BamReader::BamReaderPrivate::GetOffset(int refID, unsigned int left) {\r
+int64_t BamReader::BamReaderPrivate::GetOffset(int refID, int left) {\r
 \r
     // calculate which bins overlap this region\r
     uint16_t* bins = (uint16_t*)calloc(MAX_BIN, 2);\r
@@ -508,14 +511,14 @@ bool BamReader::BamReaderPrivate::IsOverlap(BamAlignment& bAlignment) {
     if ( bAlignment.RefID != CurrentRefID ) { return false; }\r
 \r
     // read starts after left boundary\r
-    if ( bAlignment.Position >= (int32_t)CurrentLeft) { return true; }\r
+    if ( bAlignment.Position >= CurrentLeft) { return true; }\r
 \r
     // return whether alignment end overlaps left boundary\r
     return ( CalculateAlignmentEnd(bAlignment.Position, bAlignment.CigarData) >= CurrentLeft );\r
 }\r
 \r
 // jumps to specified region(refID, leftBound) in BAM file, returns success/fail\r
-bool BamReader::BamReaderPrivate::Jump(int refID, unsigned int position) {\r
+bool BamReader::BamReaderPrivate::Jump(int refID, int position) {\r
 \r
     // if data exists for this reference and position is valid    \r
     if ( References.at(refID).RefHasAlignments && (position <= References.at(refID).RefLength) ) {\r
@@ -833,7 +836,7 @@ void BamReader::BamReaderPrivate::LoadReferenceData(void) {
         // get reference name and reference sequence length\r
         mBGZF.Read(refName, refNameLength);\r
         mBGZF.Read(buffer, 4);\r
-        const unsigned int refLength = BgzfData::UnpackUnsignedInt(buffer);\r
+        const int refLength = BgzfData::UnpackSignedInt(buffer);\r
 \r
         // store data for reference\r
         RefData aReference;\r
index 2587b00fc4b3f5baa17b5d1917dc2e458d03492d..6332cde74bf76ecd539f9f073d8244483dc6ec1c 100644 (file)
@@ -39,7 +39,7 @@ class BamReader {
         // close BAM file\r
         void Close(void);\r
         // performs random-access jump to reference, position\r
-        bool Jump(int refID, unsigned int position = 0);\r
+        bool Jump(int refID, int position = 0);\r
         // opens BAM file (and optional BAM index file, if provided)\r
         void Open(const std::string& filename, const std::string& indexFilename = "");\r
         // returns file pointer to beginning of alignments\r
index 7349115e6f7c26f146ff9f26a61ce4b4231ed5cd..5b39d764f3834471be760495eba795acb29ff4c5 100644 (file)
@@ -64,8 +64,8 @@ int main(int argc, char* argv[]) {
        }\r
 \r
        // convert boundary arguments to numeric values\r
-       unsigned int leftBound  = (unsigned int) atoi( leftBound_str.c_str()  );\r
-       unsigned int rightBound = (unsigned int) atoi( rightBound_str.c_str() );\r
+       int leftBound  = (int) atoi( leftBound_str.c_str()  );\r
+       int rightBound = (int) atoi( rightBound_str.c_str() );\r
        \r
        // attempt jump to range of interest\r
        if ( reader.Jump(refID, leftBound) ) {\r