| 4794 | } |
| 4795 | |
| 4796 | public static String getBestSegment(ArrayList<String> segments, BloomFilterDeBruijnGraph graph) { |
| 4797 | int numSeqs = segments.size(); |
| 4798 | switch (numSeqs) { |
| 4799 | case 0: |
| 4800 | return ""; |
| 4801 | case 1: |
| 4802 | return segments.get(0); |
| 4803 | default: |
| 4804 | int k = graph.getK(); |
| 4805 | |
| 4806 | String best = ""; |
| 4807 | float bestCov = 0; |
| 4808 | |
| 4809 | NTHashIterator itr = graph.getHashIterator(); |
| 4810 | long[] hVals = itr.hVals; |
| 4811 | |
| 4812 | for (String seg : segments) { |
| 4813 | if (seg.length() >= k) { |
| 4814 | itr.start(seg); |
| 4815 | |
| 4816 | float min = Float.MAX_VALUE; |
| 4817 | while (itr.hasNext()) { |
| 4818 | itr.next(); |
| 4819 | float c = graph.getCount(hVals); |
| 4820 | if (c < min) { |
| 4821 | min = c; |
| 4822 | } |
| 4823 | } |
| 4824 | |
| 4825 | if (min > bestCov) { |
| 4826 | best = seg; |
| 4827 | bestCov = min; |
| 4828 | } |
| 4829 | } |
| 4830 | } |
| 4831 | |
| 4832 | return best; |
| 4833 | } |
| 4834 | } |
| 4835 | |
| 4836 | public static String connect(ArrayList<String> segments, BloomFilterDeBruijnGraph graph, int lookahead) { |
| 4837 | int numSeqs = segments.size(); |