Loading...
Searching...
No Matches
SamRecordHelper Class Reference

Class for extracting information from a SAM Flag. More...

`#include <SamRecordHelper.h>`

## Static Public Member Functions

static int | checkSequence (SamRecord &record, int32_t pos0Based, const char *sequence)
| Helper method that checks if the record's read sequence starting at the specified 0-based reference position matches the passed in sequence.
static bool | genSamTagsString (SamRecord &record, String &returnString, char delim='\t')
| Helper to append the SAM string representation of all the tags to the specified string.
static bool | genSamTagString (const char *tag, char vtype, void *value, String &returnString)
| Helper to append the SAM string representation of the specified tag to the specified string.

## Detailed Description

Class for extracting information from a SAM Flag.

Definition at line 24 of file SamRecordHelper.h.

## Member Function Documentation

## checkSequence()

int SamRecordHelper::checkSequence | ( | SamRecord & | record,
|  | int32_t | pos0Based,
|  | const char * | sequence )

static

Helper method that checks if the record's read sequence starting at the specified 0-based reference position matches the passed in sequence.

Returns
  returns -1 if it does not match, returns the cycle (read position) of pos0Based if it does match.

Definition at line 21 of file SamRecordHelper.cpp.

{
const char* readSeq = record.getSequence();
// Get the cigar.
Cigar* cigar = record.getCigarInfo();
if(cigar == NULL)
{
throw std::runtime_error("Failed to get Cigar.");
}
int32_t readStartIndex =
cigar->getQueryIndex(pos0Based, record.get0BasedPosition());
// if the read start is negative, this position was deleted, so
// return false, it doesn't match.
if(readStartIndex == Cigar::INDEX_NA)
{
return(false);
}
// Increment the readSeq start to where this position is found.
readSeq += readStartIndex;
if(strncmp(readSeq, sequence, strlen(sequence)) == 0)
{
// Match, so return the readStartIndex (cycle).
return(readStartIndex);
}
// Did not match.
return(-1);
}
Cigar::INDEX_NA
static const int32_t INDEX_NA
Value associated with an index that is not applicable/does not exist, used for converting between que...
Definition Cigar.h:492
Cigar::getQueryIndex
int32_t getQueryIndex(int32_t refOffset)
Return the query index associated with the specified reference offset or INDEX_NA based on this cigar...
Definition Cigar.cpp:202
SamRecord::getCigarInfo
Cigar * getCigarInfo()
Returns a pointer to the Cigar object associated with this record.
Definition SamRecord.cpp:1836
SamRecord::get0BasedPosition
int32_t get0BasedPosition()
Get the 0-based(BAM) leftmost position of the record.
Definition SamRecord.cpp:1319
SamRecord::getSequence
const char * getSequence()
Returns the SAM formatted sequence string (SEQ), translating the base as specified by setSequenceTran...
Definition SamRecord.cpp:1568

References SamRecord::get0BasedPosition(), SamRecord::getCigarInfo(), Cigar::getQueryIndex(), SamRecord::getSequence(), and Cigar::INDEX_NA.

## genSamTagsString()

bool SamRecordHelper::genSamTagsString | ( | SamRecord & | record,
|  | String & | returnString,
|  | char | delim = '\t' )

static

Helper to append the SAM string representation of all the tags to the specified string.

Does NOT add a preceding delimiter before the first tag.

Parameters

  record | record whose tags to append.
  returnString | string to append the tags to.
  delim | delimiter to use to separate different tags.

Returns
  true on success, false on failure/partial generation.

Definition at line 56 of file SamRecordHelper.cpp.

{
char tag[3];
char vtype;
void* value;
// Reset the tag iterator to ensure that all the tags are written.
record.resetTagIter();
// While there are more tags, write them to the recordString.
bool firstEntry = true;
bool returnStatus = true;
while(record.getNextSamTag(tag, vtype, &value) != false)
{
if(!firstEntry)
{
returnString += delim;
}
else
{
firstEntry = false;
}
returnStatus &= genSamTagString(tag, vtype, value, returnString);
}
return(returnStatus);
}
SamRecordHelper::genSamTagString
static bool genSamTagString(const char *tag, char vtype, void *value, String &returnString)
Helper to append the SAM string representation of the specified tag to the specified string.
Definition SamRecordHelper.cpp:86
SamRecord::getNextSamTag
bool getNextSamTag(char *tag, char &vtype, void **value)
Get the next tag from the record.
Definition SamRecord.cpp:1962
SamRecord::resetTagIter
void resetTagIter()
Reset the tag iterator to the beginning of the tags.
Definition SamRecord.cpp:2034

References genSamTagString(), SamRecord::getNextSamTag(), and SamRecord::resetTagIter().

## genSamTagString()

bool SamRecordHelper::genSamTagString | ( | const char * | tag,
|  | char | vtype,
|  | void * | value,
|  | String & | returnString )

static

Helper to append the SAM string representation of the specified tag to the specified string.

Parameters

  tag | the tag name.
  vtype | the vtype.
  value | pointer to the value of the tag (will be cast to int, double, char, or string based on vtype).
  returnString | string to append the tag to.

Returns
  true on success, false on failure/partial generation.

Definition at line 86 of file SamRecordHelper.cpp.

{
returnString += tag;
returnString += ":";
returnString += vtype;
returnString += ":";
if(SamRecord::isIntegerType(vtype))
{
returnString += (int)*(int*)value;
}
else if(SamRecord::isFloatType(vtype))
{
returnString.appendFullFloat(*(float*)value);
}
else if(SamRecord::isCharType(vtype))
{
returnString += (char)*(char*)value;
}
else if(SamRecord::isStringType(vtype))
{
// String type.
returnString += (String)*(String*)value;
}
else
{
// Could not determine the type.
return(false);
}
return(true);
}
SamRecord::isIntegerType
static bool isIntegerType(char vtype)
Returns whether or not the specified vtype is an integer type.
Definition SamRecord.cpp:2040
SamRecord::isFloatType
static bool isFloatType(char vtype)
Returns whether or not the specified vtype is a float type.
Definition SamRecord.cpp:2052
SamRecord::isCharType
static bool isCharType(char vtype)
Returns whether or not the specified vtype is a char type.
Definition SamRecord.cpp:2062
SamRecord::isStringType
static bool isStringType(char vtype)
Returns whether or not the specified vtype is a string type.
Definition SamRecord.cpp:2072

References SamRecord::isCharType(), SamRecord::isFloatType(), SamRecord::isIntegerType(), and SamRecord::isStringType().

Referenced by genSamTagsString().

The documentation for this class was generated from the following files:

- bam/SamRecordHelper.h
- bam/SamRecordHelper.cpp