Compare

#include <pbbam/Compare.h>

Defines the Compare class & a number of function objects for comparing BamRecords.

namespace PacBio
namespace BAM
struct Compare
#include <pbbam/Compare.h>

The Compare class provides utilities for sorting collections of BamRecords.

// sort on increasing ZMW hole number
std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::Zmw());
Note
The functors provided here currently only support std::less<T> comparisons (i.e. sorting by ascending value).

Comparison Type

enum Type

This enum defines the supported comparison types { ==, !=, <, <=, >, >=, & (contains), ~ (not contains) }.

Values:

EQUAL = 0
NOT_EQUAL
LESS_THAN
LESS_THAN_EQUAL
GREATER_THAN
GREATER_THAN_EQUAL
CONTAINS
NOT_CONTAINS
static Compare::Type TypeFromOperator(const std::string &opString)

Convert operator string to Compare::Type.

Compare::Type type = Compare::TypeFromOperator("!=");
assert(type == Compare::NOT_EQUAL);

Return
comparison type from an operator string
See
Compare::TypeToOperator
Parameters
  • opString: operator string. Can be C++-style operators (“==”, ”!=”, “<=”, etc) or alpha equivalents (“eq”, “ne”, “lte”, etc).
Exceptions
  • std::runtime_error: if cannot convert opString to Compare::Type

static std::string TypeToName(const Compare::Type &type)

Convert a Compare::Type to printable enum name.

string name = Compare::TypeToName(Compare::LESS_THAN);
assert(name = "Compare::LESS_THAN");

Return
the printable name for a Compare::Type enum value.are::Type
Parameters
Exceptions

static std::string TypeToOperator(const Compare::Type &type, bool asAlpha = false)

Convert a Compare::Type to printable operator.

Return
the printable operator string
Parameters
  • type: Compare::Type to convert
  • asAlpha: (optional) flag to print using alpha equivalents e.g. “lte” rather than “<=”
Exceptions

struct AlignedEnd
#include <pbbam/Compare.h>

Compares on BamRecord::AlignedEnd.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::AlignedEnd());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::AlignedEnd >

struct AlignedStart
#include <pbbam/Compare.h>

Compares on BamRecord::AlignedStart.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::AlignedStart());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::AlignedStart >

struct AlignedStrand
#include <pbbam/Compare.h>

Compares on BamRecord::AlignedStrand.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::AlignedStrand());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Strand,&BamRecord::AlignedStrand >

struct BarcodeForward
#include <pbbam/Compare.h>

Compares on BamRecord::BarcodeForward.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::BarcodeForward());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< int16_t,&BamRecord::BarcodeForward >

struct BarcodeQuality
#include <pbbam/Compare.h>

Compares on BamRecord::BarcodeQuality.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::BarcodeQuality());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< uint8_t,&BamRecord::BarcodeQuality >

struct BarcodeReverse
#include <pbbam/Compare.h>

Compares on BamRecord::BarcodeReverse.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::BarcodeReverse());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< int16_t,&BamRecord::BarcodeReverse >

struct Base
#include <pbbam/Compare.h>

Base class for all BamRecord compare functors.

Mostly used for method signatures that can accept any comparator.

Custom comparators may be used by inheriting from this class.

Inherits from std::function< bool(const BamRecord &, const BamRecord &)>

Subclassed by PacBio::BAM::Compare::MemberFunctionBaseHelper< Accuracy >, PacBio::BAM::Compare::MemberFunctionBaseHelper< int16_t >, PacBio::BAM::Compare::MemberFunctionBaseHelper< int32_t >, PacBio::BAM::Compare::MemberFunctionBaseHelper< LocalContextFlags >, PacBio::BAM::Compare::MemberFunctionBaseHelper< Position >, PacBio::BAM::Compare::MemberFunctionBaseHelper< size_t >, PacBio::BAM::Compare::MemberFunctionBaseHelper< std::string >, PacBio::BAM::Compare::MemberFunctionBaseHelper< Strand >, PacBio::BAM::Compare::MemberFunctionBaseHelper< uint8_t >, PacBio::BAM::Compare::None

struct FullName
#include <pbbam/Compare.h>

Compares on BamRecord::FullName.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::FullName());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::FullName >

struct LocalContextFlag
#include <pbbam/Compare.h>

Compares on BamRecord::LocalContextFlags.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::LocalContextFlag());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< LocalContextFlags,&BamRecord::LocalContextFlags >

struct MapQuality
#include <pbbam/Compare.h>

Compares on BamRecord::MapQuality.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::MapQuality());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< uint8_t,&BamRecord::MapQuality >

template <typename ValueType, typename MemberFunctionBaseHelper< ValueType >::MemberFnType fn, typename CompareType = std::less<ValueType>>
struct MemberFunctionBase
#include <pbbam/Compare.h>

Base class for all BamRecord compare functors that take a BamRecord function pointer and compare on its return type.

Derived comparators usually need only declare the return value & function pointer in the template signature. This class implements the basic method-calling machinery.

Custom comparators will work for any BamRecord member function that does not take any input parameters.

Inherits from PacBio::BAM::Compare::MemberFunctionBaseHelper< ValueType >

Public Functions

bool operator()(const BamRecord &lhs, const BamRecord &rhs) const
template <typename ValueType>
struct MemberFunctionBaseHelper

Inherits from PacBio::BAM::Compare::Base

Subclassed by PacBio::BAM::Compare::MemberFunctionBase< Accuracy,&BamRecord::ReadAccuracy >, PacBio::BAM::Compare::MemberFunctionBase< int16_t,&BamRecord::BarcodeForward >, PacBio::BAM::Compare::MemberFunctionBase< int16_t,&BamRecord::BarcodeReverse >, PacBio::BAM::Compare::MemberFunctionBase< int32_t,&BamRecord::HoleNumber >, PacBio::BAM::Compare::MemberFunctionBase< int32_t,&BamRecord::ReadGroupNumericId >, PacBio::BAM::Compare::MemberFunctionBase< int32_t,&BamRecord::ReferenceId >, PacBio::BAM::Compare::MemberFunctionBase< LocalContextFlags,&BamRecord::LocalContextFlags >, PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::AlignedEnd >, PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::AlignedStart >, PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::QueryEnd >, PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::QueryStart >, PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::ReferenceEnd >, PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::ReferenceStart >, PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumDeletedBases >, PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumInsertedBases >, PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumMatches >, PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumMismatches >, PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::FullName >, PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::MovieName >, PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::ReadGroupId >, PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::ReferenceName >, PacBio::BAM::Compare::MemberFunctionBase< Strand,&BamRecord::AlignedStrand >, PacBio::BAM::Compare::MemberFunctionBase< uint8_t,&BamRecord::BarcodeQuality >, PacBio::BAM::Compare::MemberFunctionBase< uint8_t,&BamRecord::MapQuality >, PacBio::BAM::Compare::MemberFunctionBase< ValueType, fn, CompareType >

Public Types

template<>
using MemberFnType = ValueType (BamRecord::*)() const
struct MovieName
#include <pbbam/Compare.h>

Compares on BamRecord::MovieName.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::MovieName());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::MovieName >

struct None
#include <pbbam/Compare.h>

Provides an operator() is essentially a no-op for comparing/sorting.

If used in a sorting operation, then no change will occur.

Inherits from PacBio::BAM::Compare::Base

Public Functions

bool operator()(const BamRecord&, const BamRecord&) const
struct NumDeletedBases
#include <pbbam/Compare.h>

Compares on BamRecord::NumDeletedBases.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::NumDeletedBases());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumDeletedBases >

struct NumInsertedBases
#include <pbbam/Compare.h>

Compares on BamRecord::NumInsertedBases.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::NumInsertedBases());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumInsertedBases >

struct NumMatches
#include <pbbam/Compare.h>

Compares on BamRecord::NumMatches.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::NumMatches());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumMatches >

struct NumMismatches
#include <pbbam/Compare.h>

Compares on BamRecord::NumMismatches.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::NumMismatches());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< size_t,&BamRecord::NumMismatches >

struct QueryEnd
#include <pbbam/Compare.h>

Compares on BamRecord::QueryEnd.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::QueryEnd());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::QueryEnd >

struct QueryStart
#include <pbbam/Compare.h>

Compares on BamRecord::QueryStart.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::QueryStart());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::QueryStart >

struct ReadAccuracy
#include <pbbam/Compare.h>

Compares on BamRecord::ReadAccuracy.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::ReadAccuracy());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Accuracy,&BamRecord::ReadAccuracy >

struct ReadGroupId
#include <pbbam/Compare.h>

Compares on BamRecord::ReadGroupId.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::ReadGroupId());
Note
Even though the ReadGroupId string contains hex values, it is still just a std::string. Comparisons will use lexical, not numeric ordering. If numeric ordering is desired, use Compare::ReadGroupNumericId instead.

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::ReadGroupId >

struct ReadGroupNumericId
#include <pbbam/Compare.h>

Compares on BamRecord::ReadGroupNumericId.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::ReadGroupNumericId());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< int32_t,&BamRecord::ReadGroupNumericId >

struct ReferenceEnd
#include <pbbam/Compare.h>

Compares on BamRecord::ReferenceEnd.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::ReferenceEnd());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::ReferenceEnd >

struct ReferenceId
#include <pbbam/Compare.h>

Compares on BamRecord::ReferenceId.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::ReferenceId());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< int32_t,&BamRecord::ReferenceId >

struct ReferenceName
#include <pbbam/Compare.h>

Compares on BamRecord::ReferenceName.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::ReferenceName());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< std::string,&BamRecord::ReferenceName >

struct ReferenceStart
#include <pbbam/Compare.h>

Compares on BamRecord::ReferenceStart.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::ReferenceStart());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< Position,&BamRecord::ReferenceStart >

struct Zmw
#include <pbbam/Compare.h>

Compares on BamRecord::HoleNumber.

Example:

std::vector<BamRecord> records;
std::sort(records.begin(), records.end(), Compare::Zmw());

Note
Currently only supports std::less<T> comparisons (i.e. sorting by ascending value).

Inherits from PacBio::BAM::Compare::MemberFunctionBase< int32_t,&BamRecord::HoleNumber >