|
| GreedyTupleAligner (Weight &wt) |
|
int | MatchTuple (const QueryType query, const int queryLength, const ReferenceType reference, const ReferenceIndex searchStartIndex, const int searchSize, int &matchedLength, int &mismatch) |
| Match 'query' to the 'reference' from 'searchStartIndex' up to 'searchSize', store matched length to 'matchedLength' and number of mismatch to 'mismatch'. More...
|
|
void | Align (QueryType query, int queryLength, ReferenceType reference, ReferenceIndex searchStartIndex, int searchSize, CigarRoller &cigarRoller, ReferenceIndex &matchPosition) |
| Core local alignment algorithm. More...
|
|
template<typename QueryType, typename ReferenceType, typename ReferenceIndex>
class GreedyTupleAligner< QueryType, ReferenceType, ReferenceIndex >
Definition at line 60 of file GreedyTupleAligner.h.
◆ Align()
template<typename QueryType , typename ReferenceType , typename ReferenceIndex >
void GreedyTupleAligner< QueryType, ReferenceType, ReferenceIndex >::Align |
( |
QueryType |
query, |
|
|
int |
queryLength, |
|
|
ReferenceType |
reference, |
|
|
ReferenceIndex |
searchStartIndex, |
|
|
int |
searchSize, |
|
|
CigarRoller & |
cigarRoller, |
|
|
ReferenceIndex & |
matchPosition |
|
) |
| |
|
inline |
Core local alignment algorithm.
- Parameters
-
query | input query |
queryLength | length of query |
reference | reference genome |
searchStartIndex | matching starts here |
searchSize | how far we will search |
cigarRoller | store alignment results here |
matchPosition | store match position |
Definition at line 159 of file GreedyTupleAligner.h.
175 int queryMatchCount = 0;
183 while (queryMatchCount < queryLength)
185 if (r1 == searchSize - 1)
190 if (queryLength - q1 < tupleSize)
200 if ((pos =
MatchTuple(query+q1, queryLength-q1, reference, searchStartIndex + r1, searchSize - r1, matchedLen, mismatch))
232 queryMatchCount = q1;
242 for (
int i = 1; i < queryLength - q1 - tupleSize; i++)
247 if (searchStartIndex + r1 >= reference.getNumberBases())
250 queryLength - q1 -i ,
252 searchStartIndex + r1,
258 if (matchPosition < 0)
259 matchPosition = pos + q1 + i ;
261 queryMatchCount += i;
266 r1 += pos + tupleSize;
270 while (searchStartIndex + r1 < reference.getNumberBases()
271 && query[q1]==reference[searchStartIndex + r1]
277 if (q1 < queryLength)
280 queryMatchCount = q1;
285 queryMatchCount = queryLength ;
References CigarRoller::Add(), CigarRoller::clear(), Cigar::del, Cigar::insert, Cigar::match, GreedyTupleAligner< QueryType, ReferenceType, ReferenceIndex >::MatchTuple(), Cigar::mismatch, and Cigar::softClip.
◆ MatchTuple()
template<typename QueryType , typename ReferenceType , typename ReferenceIndex >
int GreedyTupleAligner< QueryType, ReferenceType, ReferenceIndex >::MatchTuple |
( |
const QueryType |
query, |
|
|
const int |
queryLength, |
|
|
const ReferenceType |
reference, |
|
|
const ReferenceIndex |
searchStartIndex, |
|
|
const int |
searchSize, |
|
|
int & |
matchedLength, |
|
|
int & |
mismatch |
|
) |
| |
|
inline |
Match 'query' to the 'reference' from 'searchStartIndex' up to 'searchSize', store matched length to 'matchedLength' and number of mismatch to 'mismatch'.
- Parameters
-
query | input query |
queryLength | length of query |
reference | reference sequence |
searchStartIndex | the positino where search starts |
searchSize | the total length in reference sequence that will be examine |
matchedLength | store how many bases are matched |
mismatch | store how many bases are mismatched |
- Returns
- -1 for unsuccess return
Definition at line 79 of file GreedyTupleAligner.h.
91 const int MAX_MISMATCH=2;
92 int bestPos = 0, bestMismatch = queryLength, bestMatchedLength = 0, bestScore=-1;
94 #if defined(DEBUG_GREEDY_ALIGNER)
95 cout <<
"searchStartIndex == " << searchStartIndex <<
", searchSize == " << searchSize << std::endl;
99 for (
int i = 0; i <= searchSize - tupleSize; i++)
103 while (j < queryLength)
105 if (searchStartIndex + i + j >= reference.getNumberBases())
107 if (query[j] != reference[searchStartIndex + i + j])
110 if (mismatch >= MAX_MISMATCH)
116 if (j>0 && (j==queryLength)) j--;
118 while (searchStartIndex +i +j < reference.getNumberBases()
119 && ((j+1) > mismatch)
121 && query[j] != reference[searchStartIndex + i+j])
129 int score = j - mismatch;
131 if (score > bestScore)
135 bestMismatch = mismatch;
136 bestMatchedLength = j+1;
142 mismatch = bestMismatch;
143 matchedLength = bestMatchedLength;
Referenced by GreedyTupleAligner< QueryType, ReferenceType, ReferenceIndex >::Align().
The documentation for this class was generated from the following file: