本文整理汇总了C++中DNASequence::CopyAsRC方法的典型用法代码示例。如果您正苦于以下问题:C++ DNASequence::CopyAsRC方法的具体用法?C++ DNASequence::CopyAsRC怎么用?C++ DNASequence::CopyAsRC使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DNASequence
的用法示例。
在下文中一共展示了DNASequence::CopyAsRC方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SAMAlignmentsToCandidates
void SAMAlignmentsToCandidates(SAMAlignment &sam,
std::vector<FASTASequence> &referenceSequences,
std::map<std::string,int> & refNameToRefListIndex,
std::vector<AlignmentCandidate<> > &candidates,
bool parseSmrtTitle,
bool keepRefAsForward,
bool copyQVs) {
//
// First determine how many alignments there are from CIGAR string.
//
std::vector<int> lengths;
std::vector<char> ops;
sam.cigar.Vectorize(lengths, ops);
DNASequence querySeq;
// For now just reference the query sequence.
querySeq.deleteOnExit = false;
querySeq.seq = (Nucleotide*) sam.seq.c_str();
querySeq.length = sam.seq.size();
DNALength samTEnd = 0;
DNALength samTStart = sam.pos - 1;
std::vector<std::string> optionalQVs;
if (copyQVs) {
sam.CopyQVs(&optionalQVs);
}
if (keepRefAsForward == false and IsReverseComplement(sam.flag)) {
ReverseAlignmentOperations(lengths, ops);
DNASequence rcQuerySeq;
querySeq.CopyAsRC(rcQuerySeq);
//
// Zero out the query seq so that the string memory is not
// deleted.
//
querySeq.seq = NULL;
querySeq.length = 0;
querySeq = rcQuerySeq;
rcQuerySeq.Free();
samTEnd = GetAlignedReferenceLengthByCIGARSum(ops, lengths);
// We also need to reverse any optional QVs
if (copyQVs) {
for(int i=0; i<optionalQVs.size(); i++) {
std::reverse(optionalQVs[i].begin(), optionalQVs[i].end());
}
}
}
int i;
int offset = 0;
if (ops.size() == 0) {
return;
}
bool alignmentStarted = false;
bool onFirstMatch = true;
int curAlignment;
//
// Advance past any clipping. This advances in both query and
// reference position.
//
int cigarPos = 0;
int qPos = 0;
int tPos = 0;
DNALength queryPosOffset = 0;
if (parseSmrtTitle) {
//
// The aligned sequence is really a subread of a full
// sequence. The position of the aligments start at 0, the
// beginning of the query sequence, but in the sam file, they
// may appear as subreads, and are offset from the start of the
// subread. By convention, the subread coordinates are embedded
// in the title of the query, if it is a smrtTitle.
// Two types of smrtTitle are supported:
// movie/zmw/start_end
// movie/zmw/start_end/start2_end2
SMRTTitle stitle = SMRTTitle(sam.qName);
if (not stitle.isSMRTTitle) {
std::cout << "ERROR. Could not parse title " << sam.qName << std::endl;
exit(1);
}
queryPosOffset = stitle.start;
}
else if (sam.xs) {
queryPosOffset += sam.xs - 1;
}
while (cigarPos < lengths.size()) {
int numClipped;
//
// Sequence clipping becomes offsets into the q/t alignedSeqPos
//
int numSoftClipped;
//.........这里部分代码省略.........