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

Method extendSE

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

Source from the content-addressed store, hash-verified

6452 }
6453
6454 public static int[] extendSE(ArrayList<Kmer> kmers,
6455 BloomFilterDeBruijnGraph graph,
6456 int maxTipLength,
6457 float minKmerCov) {
6458 final int d = graph.getReadPairedKmerDistance();
6459 final float multiplier = 0.1f;
6460
6461 int origLen = kmers.size();
6462
6463 HashSet<Kmer> usedKmers = new HashSet<>(kmers);
6464
6465 Collections.reverse(kmers);
6466
6467 while (true) {
6468 float covThreshold = getMinimumKmerCoverage(kmers, Math.max(0, kmers.size()-d), kmers.size());
6469
6470 ArrayDeque<Kmer> e = null;
6471
6472 while (true) {
6473 covThreshold = Math.max(minKmerCov, covThreshold * multiplier);
6474
6475 e = extendLeftSE(kmers, graph, maxTipLength, covThreshold);
6476
6477 if ((e != null && !e.isEmpty()) || covThreshold == minKmerCov) {
6478 break;
6479 }
6480 }
6481
6482 if (e == null || e.isEmpty()) {
6483 break;
6484 }
6485
6486 Iterator<Kmer> itr = e.iterator();
6487 boolean used = true;
6488
6489 while (itr.hasNext() && used) {
6490 Kmer kmer = itr.next();
6491
6492 if (!usedKmers.contains(kmer)) {
6493 used = false;
6494 }
6495 }
6496
6497 int endIndex = Math.max(0, kmers.size()-d+e.size());
6498 for (int i=kmers.size()-1; i>=endIndex && used; --i) {
6499 Kmer kmer = kmers.get(i);
6500
6501 if (!usedKmers.contains(kmer)) {
6502 used = false;
6503 }
6504 }
6505
6506 if (used && (kmers.size() < d || hasDuplicatedKmerPair(kmers, e.getLast(), d, kmers.size()-1-d+e.size()))) {
6507 break;
6508 }
6509
6510 kmers.addAll(e);
6511 usedKmers.addAll(e);

Callers 1

runMethod · 0.80

Calls 10

extendLeftSEMethod · 0.95
hasDuplicatedKmerPairMethod · 0.95
extendRightSEMethod · 0.95
containsMethod · 0.80
hasNextMethod · 0.65
nextMethod · 0.65
getMethod · 0.65
sizeMethod · 0.45

Tested by

no test coverage detected