// BamRandomAccessController_p.cpp (c) 2011 Derek Barnett
// Marth Lab, Department of Biology, Boston College
// ---------------------------------------------------------------------------
-// Last modified: 6 October 2011(DB)
+// Last modified: 10 October 2011(DB)
// ---------------------------------------------------------------------------
// Manages random access operations in a BAM file
// **************************************************************************
-#include <api/BamIndex.h>
-#include <api/internal/BamException_p.h>
-#include <api/internal/BamRandomAccessController_p.h>
-#include <api/internal/BamReader_p.h>
-#include <api/internal/BamIndexFactory_p.h>
+#include "api/BamIndex.h"
+#include "api/internal/BamException_p.h"
+#include "api/internal/BamRandomAccessController_p.h"
+#include "api/internal/BamReader_p.h"
+#include "api/internal/BamIndexFactory_p.h"
using namespace BamTools;
using namespace BamTools::Internal;
// if alignment starts at or after left bound position
if ( alignment.Position >= m_region.LeftPosition) {
- if ( m_region.isRightBoundSpecified() && // right bound is specified AND
- m_region.LeftRefID == m_region.RightRefID && // left & right bounds on same reference AND
- alignment.Position > m_region.RightPosition ) // alignment starts after right bound position
+ if ( m_region.isRightBoundSpecified() && // right bound is specified AND
+ m_region.LeftRefID == m_region.RightRefID && // left & right bounds on same reference AND
+ alignment.Position >= m_region.RightPosition ) // alignment starts on or after right bound position
return AfterRegion;
// otherwise, alignment overlaps region
else {
// if alignment overlaps left bound position
- if ( alignment.GetEndPosition() >= m_region.LeftPosition )
+ if ( alignment.GetEndPosition() > m_region.LeftPosition )
return OverlapsRegion;
else
return BeforeRegion;
// alignment is on right bound reference
else {
- // if alignment starts on or before right bound position
- if ( alignment.Position <= m_region.RightPosition )
+ // if alignment starts before right bound position
+ if ( alignment.Position < m_region.RightPosition )
return OverlapsRegion;
else
return AfterRegion;
}
}
- // otherwise, alignment starts after left bound and there is no right bound
+ // otherwise, alignment starts after left bound and there is no right bound given
else return OverlapsRegion;
}
}