MCPcopy Create free account
hub / github.com/BirolLab/RNA-Bloom / overlapMaximally

Method overlapMaximally

src/rnabloom/util/SeqUtils.java:1335–1379  ·  view source on GitHub ↗
(String left, String right, int minOverlap)

Source from the content-addressed store, hash-verified

1333 }
1334
1335 public static String overlapMaximally(String left, String right, int minOverlap) {
1336 String prefix = right.substring(0, minOverlap);
1337 int leftLength = left.length();
1338 int rightLength = right.length();
1339
1340 int lowerL = 0;
1341 int maxLi = leftLength - minOverlap;
1342
1343 while (lowerL >= 0 && lowerL <= maxLi) {
1344 lowerL = left.indexOf(prefix, lowerL);
1345
1346 if (lowerL >= 0) {
1347 int upperL = lowerL+rightLength;
1348 if (upperL < leftLength) {
1349 // could `right` be contained in `left`?
1350 String leftTail = left.substring(lowerL+minOverlap, upperL);
1351 String rightTail = right.substring(minOverlap);
1352 if (leftTail.equals(rightTail)) {
1353 // overlap: rightLength
1354 return left;
1355 }
1356 }
1357 else {
1358 upperL = leftLength;
1359 String leftTail = left.substring(lowerL+minOverlap, upperL);
1360 String rightTail = right.substring(minOverlap, upperL-lowerL);
1361 if (leftTail.equals(rightTail)) {
1362 // overlap: leftLength - lowerL
1363 return left + right.substring(upperL-lowerL);
1364 }
1365 }
1366 ++lowerL;
1367 }
1368 }
1369
1370 if (leftLength >= rightLength && left.contains(right)) {
1371 return left;
1372 }
1373
1374 if (leftLength < rightLength && right.contains(left)) {
1375 return right;
1376 }
1377
1378 return null;
1379 }
1380
1381 public static String overlapMinimally(String left, String right, int minOverlap) {
1382 int li = left.length() - minOverlap;

Callers 1

overlapMethod · 0.80

Calls 2

containsMethod · 0.80
equalsMethod · 0.45

Tested by

no test coverage detected