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

Method join

src/rnabloom/util/GraphUtils.java:892–1147  ·  view source on GitHub ↗
(BloomFilterDeBruijnGraph graph, 
                                        ArrayList<Kmer> leftKmers, 
                                        ArrayList<Kmer> rightKmers, 
                                        int bound, 
                                        int lookahead, 
                                        float maxCovGradient,
                                        int maxTipLen,
                                        int maxIndelLen,
                                        float minPercentIdentity,
                                        float minKmerCov)

Source from the content-addressed store, hash-verified

890 }
891
892 public static ArrayList<Kmer> join(BloomFilterDeBruijnGraph graph,
893 ArrayList<Kmer> leftKmers,
894 ArrayList<Kmer> rightKmers,
895 int bound,
896 int lookahead,
897 float maxCovGradient,
898 int maxTipLen,
899 int maxIndelLen,
900 float minPercentIdentity,
901 float minKmerCov) {
902 int k = graph.getK();
903 int numHash = graph.getMaxNumHash();
904 //int pkd = graph.getReadPairedKmerDistance();
905
906 HashSet<Kmer> leftKmersSet = new HashSet<>(leftKmers);
907 HashSet<Kmer> rightKmersSet = new HashSet<>(rightKmers);
908
909
910 Kmer right = rightKmers.get(0);
911
912 float leftCoverageThreshold = Math.max(minKmerCov, getMinimumKmerCoverage(leftKmers) * maxCovGradient);
913
914 ArrayList<Kmer> leftPath = new ArrayList<>(leftKmers);
915
916 int maxSize = bound + leftPath.size();
917 while (leftPath.size() < maxSize) {
918 ArrayDeque<Kmer> neighbors = leftPath.get(leftPath.size()-1).getSuccessors(k, numHash, graph, minKmerCov);
919
920 // filter by coverage
921 if (neighbors.isEmpty()) {
922 break;
923 }
924 else {
925 Kmer best = null;
926
927 if (neighbors.size() == 1) {
928 best = neighbors.pop();
929 leftCoverageThreshold = Math.max(minKmerCov, Math.min(leftCoverageThreshold, best.count*maxCovGradient));
930 }
931 else {
932 Iterator<Kmer> itr = neighbors.iterator();
933 while (itr.hasNext()) {
934 if (itr.next().count < leftCoverageThreshold) {
935 itr.remove();
936 }
937 }
938
939 if (neighbors.size() == 1) {
940 best = neighbors.pop();
941 leftCoverageThreshold = Math.max(minKmerCov, Math.min(leftCoverageThreshold, best.count*maxCovGradient));
942 }
943 }
944
945 if (best != null) {
946 if (rightKmersSet.contains(best)) {
947 if (best.equals(right)) {
948 leftPath.addAll(rightKmers);
949 return leftPath;

Callers 15

overlapAndConnectMethod · 0.95
populateGraphHelperMethod · 0.80
mainMethod · 0.80
extractSimplePathsMethod · 0.80
extractGreedyPathsMethod · 0.80
layoutBackbonesMethod · 0.80

Calls 15

equalsMethod · 0.95
extendRightSEMethod · 0.95
extendLeftSEMethod · 0.95
getMaxNumHashMethod · 0.80
containsMethod · 0.80
isHomopolymerMethod · 0.80
getMethod · 0.65
hasNextMethod · 0.65
nextMethod · 0.65
addMethod · 0.65
getKMethod · 0.45

Tested by

no test coverage detected