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

Method extendRightPE

src/rnabloom/util/GraphUtils.java:6206–6309  ·  view source on GitHub ↗
(ArrayList<Kmer> kmers, 
                                            BloomFilterDeBruijnGraph graph,
                                            int maxTipLen,
                                            float minKmerCov)

Source from the content-addressed store, hash-verified

6204 }
6205
6206 private static ArrayDeque<Kmer> extendRightPE(ArrayList<Kmer> kmers,
6207 BloomFilterDeBruijnGraph graph,
6208 int maxTipLen,
6209 float minKmerCov) {
6210 final int k = graph.getK();
6211 final int numHash = graph.getMaxNumHash();
6212 final int readPairedKmersDist = graph.getReadPairedKmerDistance();
6213 final int fragPairedKmersDist = graph.getFragPairedKmerDistance();
6214 final int numKmers = kmers.size();
6215 int maxExtensionLength = fragPairedKmersDist - 2; // -1 for candidate k-mer; -1 for partner kmer on current sequence
6216
6217 ArrayDeque<Kmer> candidates = kmers.get(numKmers-1).getSuccessors(k, numHash, graph);
6218
6219 if (candidates.size() == 1) {
6220 Kmer c = candidates.peek();
6221 ArrayDeque<Kmer> e = naiveExtendRightNoBackChecks(c, graph, maxTipLen, maxExtensionLength, minKmerCov);
6222 e.addFirst(c);
6223 return e;
6224 }
6225
6226 for (int i=numKmers-1; i>=0; --i) {
6227 if (graph.isRepeatKmer(kmers.get(i))) {
6228 --maxExtensionLength;
6229 }
6230 else {
6231 break;
6232 }
6233 }
6234
6235 final float pathMinCov = getMinimumKmerCoverage(kmers, Math.max(numKmers - fragPairedKmersDist, 0), numKmers);
6236 float bestScore = 0;
6237 float bestCov = 0;
6238 ArrayDeque<Kmer> bestExtension = null;
6239 int[] result = new int[3];
6240
6241 for (Kmer candidate : candidates) {
6242 ArrayDeque<Kmer> e = naiveExtendRightNoBackChecks(candidate, graph, maxTipLen, maxExtensionLength, minKmerCov);
6243 e.addFirst(candidate);
6244
6245 countKmerPairsPE(kmers, e, 0, graph, result);
6246
6247 int lastPartneredKmerIndex = result[2];
6248
6249 if (lastPartneredKmerIndex >= 0 && result[0] > 0 && result[1] > 0) {
6250 float cov = getMedianKmerCoverage(e);
6251 float score = Math.min(pathMinCov, cov) * (result[0] + result[1]) / (lastPartneredKmerIndex+1);
6252// System.out.println(score + ": " + graph.assemble(e));
6253 if (score > bestScore || (score == bestScore && cov > bestCov)) {
6254 bestScore = score;
6255 bestCov = cov;
6256 bestExtension = e;
6257
6258 Iterator<Kmer> itr = e.descendingIterator();
6259 for (int i=e.size()-1; i>lastPartneredKmerIndex; --i) {
6260 itr.next();
6261 itr.remove();
6262 }
6263 }

Callers 1

extendPEMethod · 0.95

Calls 14

countKmerPairsPEMethod · 0.95
getMedianKmerCoverageMethod · 0.95
getMaxNumHashMethod · 0.80
isRepeatKmerMethod · 0.80
getMethod · 0.65
nextMethod · 0.65
hasNextMethod · 0.65
getKMethod · 0.45

Tested by

no test coverage detected