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

Method findPath

src/rnabloom/util/GraphUtils.java:1497–1579  ·  view source on GitHub ↗
(BloomFilterDeBruijnGraph graph, Kmer left, Kmer right, int bound, int lookahead, float minKmerCov)

Source from the content-addressed store, hash-verified

1495 }
1496
1497 public static ArrayDeque<Kmer> findPath(BloomFilterDeBruijnGraph graph, Kmer left, Kmer right, int bound, int lookahead, float minKmerCov) {
1498 if (!graph.isLowComplexity(left) && !graph.isLowComplexity(right)) {
1499 int k = graph.getK();
1500 int numHash = graph.getMaxNumHash();
1501
1502 ArrayDeque<Kmer> rightExtension = new ArrayDeque<>();
1503
1504 ArrayDeque<Kmer> neighbors = new ArrayDeque<>(4);
1505 for (int i=0; i<bound; ++i) {
1506 right.getPredecessors(k, numHash, graph, neighbors, minKmerCov);
1507
1508 if (neighbors.size() == 1) {
1509 Kmer kmer = neighbors.pop();
1510
1511 if (left.equals(kmer)) {
1512 return rightExtension;
1513 }
1514
1515 rightExtension.addFirst(kmer);
1516 }
1517 else {
1518 break;
1519 }
1520 }
1521
1522 if (!rightExtension.isEmpty()) {
1523 bound -= rightExtension.size();
1524 right = rightExtension.getFirst();
1525 }
1526
1527 // data structure to store visited kmers at defined depth
1528 HashSet<Kmer> visitedBranchingKmers = new HashSet<>();
1529
1530 int depth = 0;
1531
1532 ArrayDeque<LinkedList<Kmer>> branchesStack = new ArrayDeque<>();
1533 branchesStack.add(getSuccessorsRanked(left, graph, lookahead));
1534
1535 ArrayDeque<Kmer> extension = new ArrayDeque<>();
1536 HashSet<Kmer> extensionKmers = new HashSet<>();
1537
1538 while (!branchesStack.isEmpty()) {
1539 LinkedList<Kmer> branches = branchesStack.getLast();
1540
1541 if (branches.isEmpty()) {
1542 extensionKmers.remove(extension.pollLast());
1543 branchesStack.removeLast();
1544 --depth;
1545 }
1546 else {
1547 Kmer cursor = branches.pop();
1548
1549 if (cursor.equals(right)) {
1550 if (!rightExtension.isEmpty()) {
1551 extension.addAll(rightExtension);
1552 }
1553
1554 return extension;

Callers

nothing calls this directly

Calls 11

getSuccessorsRankedMethod · 0.95
equalsMethod · 0.95
getMaxNumHashMethod · 0.80
containsMethod · 0.80
addMethod · 0.65
isLowComplexityMethod · 0.45
getKMethod · 0.45
getPredecessorsMethod · 0.45
sizeMethod · 0.45
equalsMethod · 0.45

Tested by

no test coverage detected