// Given a SMRT sequence and one of its subreads, make the // reverse complement of the subread in the coordinate of the // reverse complement sequence of the SMRT sequence. // Input: // smrtRead - a SMRT read // subreadSequence - a subread of smrtRead // Output: // subreadSequenceRC - the reverse complement of the subread // in the coordinate of the reverse // complement of the SMRT read. void MakeSubreadRC(SMRTSequence & subreadSequenceRC, SMRTSequence & subreadSequence, SMRTSequence & smrtRead) { assert(smrtRead.length >= subreadSequence.length); // Reverse complement sequence of the subread. subreadSequence.MakeRC(subreadSequenceRC); // Update start and end positions of subreadSequenceRC in the // coordinate of reverse compelement sequence of the SMRT read. subreadSequenceRC.SubreadStart(smrtRead.length - subreadSequence.SubreadEnd()); subreadSequenceRC.SubreadEnd (smrtRead.length - subreadSequence.SubreadStart()); subreadSequenceRC.zmwData = smrtRead.zmwData; }
void CreateSMRTSequence(SMRTSequence& smrt, Nucleotide* seq, int holeNumber, int start, int end) { int size = end - start; smrt.seq = new Nucleotide[size]; memcpy(smrt.seq, seq, size * sizeof(Nucleotide)); smrt.length = size; smrt.deleteOnExit = false; smrt.HoleNumber(holeNumber); smrt.SubreadStart(start); smrt.SubreadEnd(end); std::stringstream ss; }
// Given a SMRT sequence and a subread interval, make the subread. // Input: // smrtRead - a SMRT sequence // subreadInterval - a subread interval // params - mapping parameters // Output: // subreadSequence - the constructed subread void MakeSubreadOfInterval(SMRTSequence & subreadSequence, SMRTSequence & smrtRead, ReadInterval & subreadInterval, MappingParameters & params) { int start = subreadInterval.start; int end = subreadInterval.end; assert(smrtRead.length >= subreadSequence.length); smrtRead.MakeSubreadAsMasked(subreadSequence, start, end); if (!params.preserveReadTitle) { smrtRead.SetSubreadTitle(subreadSequence, subreadSequence.SubreadStart(), subreadSequence.SubreadEnd()); } else { subreadSequence.CopyTitle(smrtRead.title); } subreadSequence.zmwData = smrtRead.zmwData; }