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

Method naiveExtendLeft

src/rnabloom/util/GraphUtils.java:6959–7012  ·  view source on GitHub ↗
(Kmer kmer, BloomFilterDeBruijnGraph graph, int maxTipLength, HashSet<Kmer> terminators, float minKmerCov)

Source from the content-addressed store, hash-verified

6957 }
6958
6959 public static ArrayDeque<Kmer> naiveExtendLeft(Kmer kmer, BloomFilterDeBruijnGraph graph, int maxTipLength, HashSet<Kmer> terminators, float minKmerCov) {
6960 int k = graph.getK();
6961 int numHash = graph.getMaxNumHash();
6962
6963 HashSet<Kmer> usedKmers = new HashSet<>();
6964
6965 ArrayDeque<Kmer> result = new ArrayDeque<>();
6966
6967 ArrayDeque<Kmer> neighbors = new ArrayDeque<>(4);
6968 kmer.getPredecessors(k, numHash, graph, neighbors, minKmerCov);
6969 Kmer best = kmer;
6970 while (!neighbors.isEmpty()) {
6971 /** look for back branches*/
6972 for (Kmer s : best.getRightVariants(k, numHash, graph)) {
6973 if (s.hasDepthRight(k, numHash, graph, maxTipLength)) {
6974 return result;
6975 }
6976 }
6977
6978 if (neighbors.size() == 1) {
6979 best = neighbors.pop();
6980 }
6981 else {
6982 best = null;
6983 while (!neighbors.isEmpty()) {
6984 Kmer n = neighbors.pop();
6985 if (n.hasDepthLeft(k, numHash, graph, maxTipLength)) {
6986 if (best == null) {
6987 best = n;
6988 }
6989 else {
6990 // too many good branches
6991 return result;
6992 }
6993 }
6994 }
6995 }
6996
6997 if (best == null) {
6998 break;
6999 }
7000
7001 if (terminators.contains(best) || usedKmers.contains(best)) {
7002 break;
7003 }
7004
7005 result.addLast(best);
7006 usedKmers.add(best);
7007
7008 best.getPredecessors(k, numHash, graph, neighbors, minKmerCov);
7009 }
7010
7011 return result;
7012 }
7013
7014 public static ArrayDeque<Kmer> naiveExtendLeft(Kmer kmer, BloomFilterDeBruijnGraph graph, int maxTipLength, int bound, float minKmerCov) {
7015 int k = graph.getK();

Callers 2

naiveExtendMethod · 0.95
extendLeftMethod · 0.95

Calls 9

getPredecessorsMethod · 0.95
getRightVariantsMethod · 0.95
hasDepthLeftMethod · 0.95
getMaxNumHashMethod · 0.80
containsMethod · 0.80
addMethod · 0.65
getKMethod · 0.45
hasDepthRightMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected