]> git.donarmstrong.com Git - bamtools.git/commitdiff
merge conflict
authorderek <derekwbarnett@gmail.com>
Mon, 3 Oct 2011 20:50:56 +0000 (16:50 -0400)
committerderek <derekwbarnett@gmail.com>
Mon, 3 Oct 2011 20:50:56 +0000 (16:50 -0400)
1  2 
src/api/BamMultiReader.cpp
src/api/BamMultiReader.h
src/api/SamReadGroupDictionary.cpp
src/api/SamReadGroupDictionary.h
src/api/SamSequenceDictionary.cpp
src/api/SamSequenceDictionary.h
src/api/internal/BamMultiMerger_p.h
src/api/internal/BamMultiReader_p.cpp
src/api/internal/BamMultiReader_p.h
src/toolkit/bamtools_count.cpp
src/toolkit/bamtools_sort.cpp

index 854345193b3a3f51bfcd393c3543e7d49565c2ea,35e67586cf085b7a1c2ba17cc524d2cae87a5c67..00798714b5e228fbddb5ef2934da6feb054cd87a
@@@ -1,8 -1,9 +1,8 @@@
  // ***************************************************************************
  // BamMultiReader.cpp (c) 2010 Erik Garrison, Derek Barnett
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 15 March 2011 (DB)
+ // Last modified: 1 October 2011 (DB)
  // ---------------------------------------------------------------------------
  // Convenience class for reading multiple BAM files.
  //
index 561ce7a1e4d4407e2c85975b3a2ab2cd455a5ee3,43ef56a86c6d0a8cfead8ba12155443ab1e7ee76..959048c27f1f6dea1ee5fc5522abd53ea019fb90
@@@ -1,8 -1,9 +1,8 @@@
  // ***************************************************************************
  // BamMultiReader.h (c) 2010 Erik Garrison, Derek Barnett
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 15 March 2011 (DB)
+ // Last modified: 1 October 2011 (DB)
  // ---------------------------------------------------------------------------
  // Convenience class for reading multiple BAM files.
  // ***************************************************************************
index f243f929a49223495181913a8e079c7ceb2fcfda,af4e3413bc71adcff1b480f6834491bca40bb71b..4dcaa3b772496648cb5089f57b4bfcffcacecbf1
@@@ -1,8 -1,9 +1,8 @@@
  // ***************************************************************************
  // SamReadGroupDictionary.cpp (c) 2010 Derek Barnett
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 18 April 2011 (DB)
+ // Last modified: 1 October 2011 (DB)
  // ---------------------------------------------------------------------------
  // Provides methods for operating on a collection of SamReadGroup entries.
  // ***************************************************************************
index 328763a61f72dddb6d674381ed801ae1e2e392a5,3d5ff2df9947bde644ff46d3839195e5ba6c60b2..89f23e0e4cab31ad0ef8c4be039e5ba5873f4f87
@@@ -1,8 -1,9 +1,8 @@@
  // ***************************************************************************
  // SamReadGroupDictionary.h (c) 2010 Derek Barnett
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 18 April 2011 (DB)
+ // Last modified: 1 October 2011 (DB)
  // ---------------------------------------------------------------------------
  // Provides methods for operating on a collection of SamReadGroup entries.
  // ***************************************************************************
index 10d0437a1fdb3073d75ef23c0929c2e796c365a8,0c9258137e83b31023dd2a68e9a21043cb23dda5..34cf3284dbbca650e3597de8eb41c2d3f853090c
@@@ -1,8 -1,9 +1,8 @@@
  // ***************************************************************************
  // SamSequenceDictionary.cpp (c) 2010 Derek Barnett
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 18 April 2011 (DB)
+ // Last modified: 1 October 2011 (DB)
  // ---------------------------------------------------------------------------
  // Provides methods for operating on a collection of SamSequence entries.
  // *************************************************************************
index 76bd45a89fa73b66bde5a2cbef960f9aa14cdf47,d488e14e3e8752c53464bfdb87e694770d4493e4..8e2401e7740e79223002f2c37ba1a70fffe548ba
@@@ -1,8 -1,9 +1,8 @@@
  // ***************************************************************************
  // SamSequenceDictionary.h (c) 2010 Derek Barnett
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 18 April 2011
+ // Last modified: 1 October 2011
  // ---------------------------------------------------------------------------
  // Provides methods for operating on a collection of SamSequence entries.
  // ***************************************************************************
index b279611f5a4f11390865d19cb83730f60d4bd3f0,bd596efc44634c7185726e4eee77b5f701a8cdf5..9248df0eb39a6dca3d2ca99e8b08e5f6b7315259
@@@ -1,8 -1,8 +1,8 @@@
  // ***************************************************************************
  // BamMultiMerger_p.h (c) 2010 Derek Barnett
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 28 September 2011 (DB)
++// Last modified: 3 October 2011 (DB)
  // ---------------------------------------------------------------------------
  // Provides merging functionality for BamMultiReader.  At this point, supports
  // sorting results by (refId, position) or by read name.
index 189f0ec2710048d446991992e8e8e996e9c1178a,a5c7ca62df54b42461fe63cc6240578c08e3b676..bacc44935c37b30813409f1191235a0547e1f973
@@@ -431,15 -365,11 +365,14 @@@ bool BamMultiReaderPrivate::LocateIndex
  // opens BAM files
  bool BamMultiReaderPrivate::Open(const vector<string>& filenames) {
  
-     // create alignment cache if neccessary
-     if ( m_alignments == 0 ) {
-         m_alignments = CreateMergerForCurrentSortOrder();
-         if ( m_alignments == 0 ) return false;
-     }
+     bool openedOk = true;
+     // put all current readers back at beginning
+     openedOk &= Rewind();
  
 +    // put all current readers back at beginning (refreshes alignment cache)
 +    Rewind();
 +
      // iterate over filenames
      vector<string>::const_iterator filenameIter = filenames.begin();
      vector<string>::const_iterator filenameEnd  = filenames.end();
@@@ -507,80 -447,35 +450,63 @@@ bool BamMultiReaderPrivate::OpenIndexes
      return result;
  }
  
- ReaderAlignment BamMultiReaderPrivate::OpenReader(const string& filename, bool* ok) {
 +
-     // clear status flag
-     *ok = false;
-     // create new BamReader & BamAlignment
-     BamReader* reader = new BamReader;
-     BamAlignment* alignment = new BamAlignment;
+ bool BamMultiReaderPrivate::PopNextCachedAlignment(BamAlignment& al, const bool needCharData) {
  
-     // if reader opens OK
-     if ( reader->Open(filename) ) {
+     // skip if no alignments available
+     if ( m_alignmentCache == 0 || m_alignmentCache->IsEmpty() )
+         return false;
  
-         // if first alignment reads OK
-         if ( LoadNextAlignment(reader, alignment) ) {
-             *ok = true;
-             return make_pair(reader, alignment);
-         }
+     // pop next merge item entry from cache
+     MergeItem item = m_alignmentCache->TakeFirst();
+     BamReader* reader = item.Reader;
+     BamAlignment* alignment = item.Alignment;
+     if ( reader == 0 || alignment == 0 )
+         return false;
  
-         // could not read alignment
-         else {
-             cerr << "BamMultiReader WARNING: Could not read first alignment from "
-                  << filename << ", ignoring file" << endl;
-         }
+     // set char data if requested
+     if ( needCharData ) {
+         alignment->BuildCharData();
+         alignment->Filename = reader->GetFilename();
      }
  
-     // reader could not open
-     else {
-         cerr << "BamMultiReader WARNING: Could not open "
-               << filename << ", ignoring file" << endl;
-     }
+     // store cached alignment into destination parameter (by copy)
+     al = *alignment;
  
-     // if we get here, there was a problem with this BAM file (opening or reading)
-     // clean up memory allocation & return null pointer
-     delete reader;
-     delete alignment;
-     return ReaderAlignment();
- }
+     // load next alignment from reader & store in cache
+     SaveNextAlignment(reader, alignment);
  
- // print associated filenames to stdout
- void BamMultiReaderPrivate::PrintFilenames(void) const {
-     const vector<string>& filenames = Filenames();
-     vector<string>::const_iterator filenameIter = filenames.begin();
-     vector<string>::const_iterator filenameEnd  = filenames.end();
-     for ( ; filenameIter != filenameEnd; ++filenameIter )
-         cout << (*filenameIter) << endl;
+     // return success
+     return true;
  }
  
 +bool BamMultiReaderPrivate::PopNextCachedAlignment(BamAlignment& al, const bool needCharData) {
 +
 +    // bail out if no more data to process
 +    if ( !HasAlignmentData() )
 +        return false;
 +
 +    // pop next reader/alignment pair
 +    ReaderAlignment nextReaderAlignment = m_alignments->TakeFirst();
 +    BamReader*    reader    = nextReaderAlignment.first;
 +    BamAlignment* alignment = nextReaderAlignment.second;
 +
 +    // store cached alignment into destination parameter (by copy)
 +    al = *alignment;
 +
 +    // set char data if requested
 +    if ( needCharData ) {
 +        al.BuildCharData();
 +        al.Filename = reader->GetFilename();
 +    }
 +
 +    // load next alignment from reader & store in cache
 +    SaveNextAlignment(reader, alignment);
 +
 +    // return success
 +    return true;
 +}
 +
  // returns BAM file pointers to beginning of alignment data & resets alignment cache
  bool BamMultiReaderPrivate::Rewind(void) {
  
index 33048eb61f11638b8686e607e83efbafe5c96dab,70640a3fede57e9e3fa9656a21b4cfa83d9e47ef..4c4e5ea3ba382d2186857449bf8dc1847a3f60ce
  namespace BamTools {
  namespace Internal {
  
- class IBamMultiMerger;
  class BamMultiReaderPrivate {
  
 +    // typedefs
 +    public:
 +        typedef std::pair<BamReader*, BamAlignment*> ReaderAlignment;
 +
      // constructor / destructor
      public:
          BamMultiReaderPrivate(void);
  
      // 'internal' methods
      public:
-         IBamMultiMerger* CreateMergerForCurrentSortOrder(void) const;
-         const std::string ExtractReadGroup(const std::string& headerLine) const;
-         bool HasAlignmentData(void) const;
-         bool LoadNextAlignment(BamReader* reader, BamAlignment* alignment);
-         ReaderAlignment OpenReader(const std::string& filename, bool* ok);
++
+         IMultiMerger* CreateAlignmentCache(void) const;
          bool PopNextCachedAlignment(BamAlignment& al, const bool needCharData);
          bool RewindReaders(void);
          void SaveNextAlignment(BamReader* reader, BamAlignment* alignment);
Simple merge
index ad0e4f0a69b9fa9a38ce92831ae5728853a37259,37a74e50e13275c687dbf7b9d2a123b9f7c038fc..f4950588d95f72431906be62f96f4c682812962d
@@@ -1,8 -1,9 +1,8 @@@
  // ***************************************************************************
  // bamtools_sort.cpp (c) 2010 Derek Barnett, Erik Garrison
  // Marth Lab, Department of Biology, Boston College
 -// All rights reserved.
  // ---------------------------------------------------------------------------
- // Last modified: 28 September 2011 (DB)
+ // Last modified: 3 October 2011 (DB)
  // ---------------------------------------------------------------------------
  // Sorts an input BAM file
  // ***************************************************************************