libStatGen Software 1
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. More...
 
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. More...
 
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. More...
 

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.

23{
24 const char* readSeq = record.getSequence();
25
26 // Get the cigar.
27 Cigar* cigar = record.getCigarInfo();
28
29 if(cigar == NULL)
30 {
31 throw std::runtime_error("Failed to get Cigar.");
32 }
33
34 int32_t readStartIndex =
35 cigar->getQueryIndex(pos0Based, record.get0BasedPosition());
36
37 // if the read start is negative, this position was deleted, so
38 // return false, it doesn't match.
39 if(readStartIndex == Cigar::INDEX_NA)
40 {
41 return(false);
42 }
43
44 // Increment the readSeq start to where this position is found.
45 readSeq += readStartIndex;
46 if(strncmp(readSeq, sequence, strlen(sequence)) == 0)
47 {
48 // Match, so return the readStartIndex (cycle).
49 return(readStartIndex);
50 }
51 // Did not match.
52 return(-1);
53}
This class represents the CIGAR without any methods to set the cigar (see CigarRoller for that).
Definition: Cigar.h:84
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
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
Cigar * getCigarInfo()
Returns a pointer to the Cigar object associated with this record.
Definition: SamRecord.cpp:1836
int32_t get0BasedPosition()
Get the 0-based(BAM) leftmost position of the record.
Definition: SamRecord.cpp:1319
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
recordrecord whose tags to append.
returnStringstring to append the tags to.
delimdelimiter to use to separate different tags.
Returns
true on success, false on failure/partial generation.

Definition at line 56 of file SamRecordHelper.cpp.

59{
60 char tag[3];
61 char vtype;
62 void* value;
63
64 // Reset the tag iterator to ensure that all the tags are written.
65 record.resetTagIter();
66
67 // While there are more tags, write them to the recordString.
68 bool firstEntry = true;
69 bool returnStatus = true;
70 while(record.getNextSamTag(tag, vtype, &value) != false)
71 {
72 if(!firstEntry)
73 {
74 returnString += delim;
75 }
76 else
77 {
78 firstEntry = false;
79 }
80 returnStatus &= genSamTagString(tag, vtype, value, returnString);
81 }
82 return(returnStatus);
83}
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.
bool getNextSamTag(char *tag, char &vtype, void **value)
Get the next tag from the record.
Definition: SamRecord.cpp:1962
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
tagthe tag name.
vtypethe vtype.
valuepointer to the value of the tag (will be cast to int, double, char, or string based on vtype).
returnStringstring to append the tag to.
Returns
true on success, false on failure/partial generation.

Definition at line 86 of file SamRecordHelper.cpp.

88{
89 returnString += tag;
90 returnString += ":";
91 returnString += vtype;
92 returnString += ":";
94 {
95 returnString += (int)*(int*)value;
96 }
97 else if(SamRecord::isFloatType(vtype))
98 {
99 returnString.appendFullFloat(*(float*)value);
100 }
101 else if(SamRecord::isCharType(vtype))
102 {
103 returnString += (char)*(char*)value;
104 }
105 else if(SamRecord::isStringType(vtype))
106 {
107 // String type.
108 returnString += (String)*(String*)value;
109 }
110 else
111 {
112 // Could not determine the type.
113 return(false);
114 }
115 return(true);
116}
static bool isIntegerType(char vtype)
Returns whether or not the specified vtype is an integer type.
Definition: SamRecord.cpp:2040
static bool isFloatType(char vtype)
Returns whether or not the specified vtype is a float type.
Definition: SamRecord.cpp:2052
static bool isCharType(char vtype)
Returns whether or not the specified vtype is a char type.
Definition: SamRecord.cpp:2062
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: