(BloomFilterDeBruijnGraph graph,
Kmer left,
Kmer right,
BloomFilter bf,
int lowerBound,
int upperBound)
| 824 | } |
| 825 | |
| 826 | public static boolean hasValidPath(BloomFilterDeBruijnGraph graph, |
| 827 | Kmer left, |
| 828 | Kmer right, |
| 829 | BloomFilter bf, |
| 830 | int lowerBound, |
| 831 | int upperBound) { |
| 832 | |
| 833 | int k = graph.getK(); |
| 834 | int numHash = graph.getMaxNumHash(); |
| 835 | |
| 836 | ArrayDeque<Kmer> frontier = new ArrayDeque<>(); |
| 837 | frontier.addAll(left.getSuccessors(k, numHash, graph, bf)); |
| 838 | |
| 839 | HashSet<Kmer> kmersInFrontier = new HashSet<>(); |
| 840 | ArrayDeque<Kmer> newFrontier; |
| 841 | for (int i=1; i<lowerBound; ++i) { |
| 842 | kmersInFrontier.clear(); |
| 843 | newFrontier = new ArrayDeque<>(); |
| 844 | for (Kmer kmer : frontier) { |
| 845 | for (Kmer s : kmer.getSuccessors(k, numHash, graph, bf)) { |
| 846 | if (!kmersInFrontier.contains(s)) { |
| 847 | newFrontier.add(s); |
| 848 | kmersInFrontier.add(s); |
| 849 | } |
| 850 | } |
| 851 | } |
| 852 | |
| 853 | if (newFrontier.isEmpty()) { |
| 854 | return false; |
| 855 | } |
| 856 | |
| 857 | frontier = newFrontier; |
| 858 | } |
| 859 | |
| 860 | for (int i=lowerBound; i<=upperBound; ++i) { |
| 861 | kmersInFrontier.clear(); |
| 862 | newFrontier = new ArrayDeque<>(); |
| 863 | for (Kmer kmer : frontier) { |
| 864 | if (kmer.equals(right)) { |
| 865 | return true; |
| 866 | } |
| 867 | newFrontier.add(kmer); |
| 868 | for (Kmer s : kmer.getSuccessors(k, numHash, graph, bf)) { |
| 869 | if (!kmersInFrontier.contains(s)) { |
| 870 | newFrontier.add(s); |
| 871 | kmersInFrontier.add(s); |
| 872 | } |
| 873 | } |
| 874 | } |
| 875 | |
| 876 | if (newFrontier.isEmpty()) { |
| 877 | return false; |
| 878 | } |
| 879 | |
| 880 | frontier = newFrontier; |
| 881 | } |
| 882 | |
| 883 | for (Kmer kmer : frontier) { |
nothing calls this directly
no test coverage detected