Skip to content

Commit f2e8642

Browse files
committed
this works
1 parent 749a41e commit f2e8642

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

src/variants.cpp

+11-6
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ bool DBG::DBGtoVariants(InSegment *inSegment) {
8686
bool isFw = false;
8787

8888
for (uint16_t pos = 0; pos < userInput.maxSpan; ++pos) { // populate targets
89-
if (pos < len-userInput.maxSpan) {
89+
if (pos < kcount) {
9090
key = hash(str+pos);
9191
targetsQueue.push_back(key);
9292
targetsMap[key];
@@ -97,7 +97,7 @@ bool DBG::DBGtoVariants(InSegment *inSegment) {
9797

9898
targetsMap.erase(targetsQueue.front());
9999
targetsQueue.pop_front();
100-
if (c < len-userInput.maxSpan) {
100+
if (c < kcount-userInput.maxSpan) {
101101
key = hash(str+c+userInput.maxSpan);
102102
targetsMap[key];
103103
targetsQueue.push_back(key);
@@ -294,26 +294,31 @@ std::pair<bool,std::deque<DBGpath>> DBG::searchVariants(std::pair<const uint64_t
294294
prevNode = prev[prevNode].first;
295295
++i;
296296
}
297-
298-
if (refLen > k)
297+
int16_t b = i-refLen;
298+
if (refLen > k) {
299299
newPath.type = COM;
300+
newPath.refLen = refLen-k+1;
301+
b = refLen - k;
302+
}
300303
else if (i == refLen)
301304
newPath.type = SNV;
302305
else if (i > refLen) {
303306
newPath.type = DEL;
304-
--i;
307+
--b;
305308
}
306309
else
307310
newPath.type = INS;
308311

309312
prevNode = prev[destination].first;
310313
bool direction = prev[prevNode].second;
311314
std::cout<<+direction<<" "<<+i<<" "<<+refLen<<std::endl;
312-
for (int16_t b = i-refLen; b >= 0; --b) {
315+
while (b >= 0) {
313316
newPath.sequence.push_back(direction ? reverseHash(prevNode)[0] : revCom(reverseHash(prevNode)[k-1]));
314317
prevNode = prev[prevNode].first;
315318
direction = prev[prevNode].second;
319+
--b;
316320
}
321+
reverse(newPath.sequence.begin(), newPath.sequence.end());
317322
discoveredPaths.push_back(newPath);
318323
}
319324
}

testFiles/to_correct.fasta

+4-4
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,17 @@ CATACTACGATCAGATCGACTGACaCGTACATGCAGTGATGTACGAATGCATGCATCGATCGATCGAATGATAGCATGAC
2828
CATACTACGATCAGATCGACTGACTCGTACATGAGTGATGTACGAATGCATGCATCGATCGATCGAATGATAGCATGACTCAGACTGATCAGATCGA
2929
>sequence15 - two deletions overlapping (homopolymer 47:A, homopolymer 68:A)
3030
CATACTACGATCAGATCGACTGACTCGTACATGCAGTGATGTACGATGCATGCATCGATCGATCGAATGATAGCATGACTCAGACTGATCAGATCGA
31-
>sequence16 - two homopolymer deletions (68-69:AA) < only one detected
31+
>sequence16 - two homopolymer deletions (68-69:AA)
3232
CATACTACGATCAGATCGACTGACTCGTACATGCAGTGATGTACGAATGCATGCATCGATCGATCGATGATAGCATGACTCAGACTGATCAGATCGA
3333
>sequence17 - one point error and one homopolymer insertion apart (25:T>A, 69:A)
3434
CATACTACGATCAGATCGACTGACaCGTACATGCAGTGATGTACGAATGCATGCATCGATCGATCGAAAaTGATAGCATGACTCAGACTGATCAGATCGA
3535
>sequence18 - two insertions apart (34:A, 70:A)
3636
CATACTACGATCAGATCGACTGACTCGTACATGaCAGTGATGTACGAATGCATGCATCGATCGATCGAAAaTGATAGCATGACTCAGACTGATCAGATCGA
37-
>sequence19 - two insertions overlapping (34:A, homopolymer 44:A)
37+
>sequence19 - two insertions overlapping (34:A, homopolymer 44:A) < starts too long
3838
CATACTACGATCAGATCGACTGACTCGTACATGaCAGTGATGTaACGAATGCATGCATCGATCGATCGAAATGATAGCATGACTCAGACTGATCAGATCGA
3939
>sequence20 - two homopolymer insertions (69-70:AA) < only one detected
40-
CATACTACGATCAGATCGACTGACTCGTACATGCAGTGATGTACGAATGCATGCATCGATCGATCGAAaaATGATAGCATGACTCAGACTGATCAGATCGA
41-
>sequence21 - two point errors next to each other (25:T>A, 26:C>T) < only one detected
40+
CATACTACGATCAGATCGACTGACTCGTACATGCAGTGATGTACGAATGCATGCATCGATCGATCGAAAaaATGATAGCATGACTCAGACTGATCAGATCGA
41+
>sequence21 - two point errors next to each other (25:T>A, 26:C>T)
4242
CATACTACGATCAGATCGACTGACatGTACATGCAGTGATGTACGAATGCATGCATCGATCGATCGAAATGATAGCATGACTCAGACTGATCAGATCGA
4343
>sequence22 - two point errors apart (30:C>G, 70:T>g)
4444
CATACTACGATCAGATCGACTGACTCGTAgATGCAGTGATGTACGAATGCATGCATCGATCGATCGAAAgGATAGCATGACTCAGACTGATCAGATCGA

0 commit comments

Comments
 (0)