| 2395 | } |
| 2396 | |
| 2397 | string findSmallestSuffix (string s1, string s2) { |
| 2398 | |
| 2399 | if (s1 == "") |
| 2400 | return s2; |
| 2401 | |
| 2402 | // cout <<"s1: "<<s1<< "\ns2: "<<s2 << "\n"; |
| 2403 | |
| 2404 | string suffix = ""; |
| 2405 | vector<string>values1 = split(s1, ';'); |
| 2406 | vector<string>values2 = split(s2, ';'); |
| 2407 | |
| 2408 | int size1 = values1.size(); |
| 2409 | int size2 = values2.size(); |
| 2410 | |
| 2411 | //cout <<"s1 size: "<<size1<< "; s2 size: "<<size2 << "\n"; |
| 2412 | |
| 2413 | int startSuffix = 0; |
| 2414 | |
| 2415 | for (int i=max(0,size1-size2); i<size1; i++) { |
| 2416 | |
| 2417 | if (values1[i].compare(values2[0])==0) { |
| 2418 | //found possible overlap |
| 2419 | int realOverlap = 1; |
| 2420 | |
| 2421 | for (int j=i+1; j<size1; j++) { |
| 2422 | if (values1[j].compare(values2[j-i])!=0) { |
| 2423 | j=size1; |
| 2424 | realOverlap=0; |
| 2425 | } |
| 2426 | } |
| 2427 | if (realOverlap) { |
| 2428 | startSuffix = size1 - i; |
| 2429 | i=size1; |
| 2430 | } |
| 2431 | } |
| 2432 | } |
| 2433 | if (startSuffix == 0) |
| 2434 | return s2; |
| 2435 | |
| 2436 | if (startSuffix >= size2) //should never happen |
| 2437 | return ""; |
| 2438 | |
| 2439 | suffix = values2[startSuffix]; |
| 2440 | for (int i=startSuffix+1; i<size2; i++) { |
| 2441 | suffix += ";"+ values2[i]; |
| 2442 | } |
| 2443 | |
| 2444 | return suffix; |
| 2445 | } |
| 2446 | |
| 2447 | std::string getNormalBAFforPloidy(int ploidy) { |
| 2448 | if (ploidy>1) { |
no test coverage detected