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

Method getSimilarCoveragePath

src/rnabloom/util/GraphUtils.java:1149–1495  ·  view source on GitHub ↗
(BloomFilterDeBruijnGraph graph, 
                                                        ArrayList<Kmer> leftKmers, 
                                                        ArrayList<Kmer> rightKmers, 
                                                        int bound, 
                                                        int lookahead, 
                                                        float maxCovGradient,
                                                        boolean rescue,
                                                        float minKmerCov)

Source from the content-addressed store, hash-verified

1147 }
1148
1149 public static ArrayList<Kmer> getSimilarCoveragePath(BloomFilterDeBruijnGraph graph,
1150 ArrayList<Kmer> leftKmers,
1151 ArrayList<Kmer> rightKmers,
1152 int bound,
1153 int lookahead,
1154 float maxCovGradient,
1155 boolean rescue,
1156 float minKmerCov) {
1157
1158 HashSet<Kmer> leftKmersSet = new HashSet<>(leftKmers);
1159 HashSet<Kmer> rightKmersSet = new HashSet<>(rightKmers);
1160
1161 Kmer left = leftKmers.get(leftKmers.size()-1);
1162 Kmer right = rightKmers.get(0);
1163
1164 float leftCoverageThreshold = getMinimumKmerCoverage(leftKmers) * maxCovGradient;
1165 float rightCoverageThreshold = getMinimumKmerCoverage(rightKmers) * maxCovGradient;
1166
1167 int k = graph.getK();
1168 int numHash = graph.getMaxNumHash();
1169
1170 HashSet<Kmer> leftPathKmers = new HashSet<>(bound);
1171
1172 /* extend right */
1173 ArrayDeque<Kmer> leftPath = new ArrayDeque<>(bound);
1174 Kmer best;
1175 ArrayDeque<Kmer> neighbors = new ArrayDeque<>(4);
1176
1177 best = left;
1178
1179 for (int depth=0; depth < bound; ++depth) {
1180 best.getSuccessors(k, numHash, graph, neighbors, minKmerCov);
1181
1182 if (neighbors.isEmpty()) {
1183 break;
1184 }
1185 else {
1186 if (neighbors.size() == 1) {
1187 best = neighbors.pop();
1188 }
1189 else {
1190 Iterator<Kmer> itr = neighbors.iterator();
1191 while (itr.hasNext()) {
1192 if (itr.next().count < leftCoverageThreshold) {
1193 itr.remove();
1194 }
1195 }
1196
1197 if (neighbors.isEmpty()) {
1198 break;
1199 }
1200 else if (neighbors.size() == 1) {
1201 best = neighbors.pop();
1202
1203 float c = maxCovGradient * best.count;
1204 if (c < leftCoverageThreshold) {
1205 leftCoverageThreshold = c;
1206 }

Callers

nothing calls this directly

Calls 13

getSuccessorsMethod · 0.95
equalsMethod · 0.95
getPredecessorsMethod · 0.95
getMaxNumHashMethod · 0.80
containsMethod · 0.80
getMethod · 0.65
hasNextMethod · 0.65
nextMethod · 0.65
addMethod · 0.65
sizeMethod · 0.45
getKMethod · 0.45

Tested by

no test coverage detected