(Kmer kmer, BloomFilterDeBruijnGraph graph, int maxTipLength, HashSet<Kmer> terminators, float minKmerCov)
| 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(); |
no test coverage detected