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

Method extendPE

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

Source from the content-addressed store, hash-verified

6565 }
6566
6567 public static int[] extendPE(ArrayList<Kmer> kmers,
6568 BloomFilterDeBruijnGraph graph,
6569 int maxTipLength,
6570 float minKmerCov) {
6571 final int d = graph.getFragPairedKmerDistance();
6572 final float multiplier = 0.1f;
6573
6574 int origLen = kmers.size();
6575
6576 HashSet<Kmer> usedKmers = new HashSet<>(kmers);
6577
6578 Collections.reverse(kmers);
6579
6580 while (true) {
6581 float covThreshold = getMinimumKmerCoverage(kmers, Math.max(0, kmers.size()-d), kmers.size());
6582
6583 ArrayDeque<Kmer> e = null;
6584
6585 while (true) {
6586 covThreshold = Math.max(minKmerCov, covThreshold * multiplier);
6587
6588 e = extendLeftPE(kmers, graph, maxTipLength, covThreshold);
6589
6590 if ((e != null && !e.isEmpty()) || covThreshold == minKmerCov) {
6591 break;
6592 }
6593 }
6594
6595 if (e == null || e.isEmpty()) {
6596 break;
6597 }
6598
6599 Iterator<Kmer> itr = e.iterator();
6600 boolean used = true;
6601
6602 while (itr.hasNext() && used) {
6603 Kmer kmer = itr.next();
6604
6605 if (!usedKmers.contains(kmer)) {
6606 used = false;
6607 }
6608 }
6609
6610 int endIndex = Math.max(0, kmers.size()-d+e.size());
6611 for (int i=kmers.size()-1; i>=endIndex && used; --i) {
6612 Kmer kmer = kmers.get(i);
6613
6614 if (!usedKmers.contains(kmer)) {
6615 used = false;
6616 }
6617 }
6618
6619 if (used && (kmers.size() < d || hasDuplicatedKmerPair(kmers, e.getLast(), d, kmers.size()-1-d+e.size()))) {
6620 break;
6621 }
6622
6623 kmers.addAll(e);
6624 usedKmers.addAll(e);

Callers 1

runMethod · 0.80

Calls 10

extendLeftPEMethod · 0.95
hasDuplicatedKmerPairMethod · 0.95
extendRightPEMethod · 0.95
containsMethod · 0.80
hasNextMethod · 0.65
nextMethod · 0.65
getMethod · 0.65
sizeMethod · 0.45

Tested by

no test coverage detected