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

Method isTemplateSwitch2

src/rnabloom/util/GraphUtils.java:8305–8432  ·  view source on GitHub ↗
(ArrayList<Kmer> seqKmers, BloomFilterDeBruijnGraph graph, BloomFilter assembledKmers, int lookahead, float minPercentIdentity)

Source from the content-addressed store, hash-verified

8303 }
8304
8305 public static boolean isTemplateSwitch2(ArrayList<Kmer> seqKmers, BloomFilterDeBruijnGraph graph, BloomFilter assembledKmers, int lookahead, float minPercentIdentity) {
8306 int numKmers = seqKmers.size();
8307 int k = graph.getK();
8308 int maxNumKmersInLoop = 2*k;
8309
8310 if (assembledKmers.lookup(seqKmers.get(numKmers-1).getHash())) {
8311 int start = Math.max(0, numKmers-2);
8312 for (; start>=0; --start) {
8313 if (!assembledKmers.lookup(seqKmers.get(start).getHash())) {
8314 if (start-k >=0) {
8315 ArrayDeque<Kmer> path = getMaxCoveragePath(graph,
8316 seqKmers.get(start-k),
8317 seqKmers.get(start+1),
8318 k+1,
8319 lookahead,
8320 assembledKmers);
8321 if (path != null) {
8322 start -= k;
8323 continue;
8324 }
8325 }
8326
8327 ++start;
8328 break;
8329 }
8330 }
8331
8332 if (start < k) {
8333 // no unassembled kmers
8334 return false;
8335 }
8336
8337 float medCoverage = getMedianKmerCoverage(seqKmers, start, numKmers);
8338
8339 int backBoneKmerIndex = -1;
8340 for (int i=start; i<numKmers; ++i) {
8341 if (seqKmers.get(i).count >= medCoverage) {
8342 backBoneKmerIndex = i;
8343 break;
8344 }
8345 }
8346
8347 if (backBoneKmerIndex >= 0) {
8348 Kmer backBoneKmer = seqKmers.get(backBoneKmerIndex);
8349
8350 ArrayDeque<Kmer> extension = greedyExtendLeft(graph, backBoneKmer, lookahead, 1000, assembledKmers);
8351 extension.add(backBoneKmer);
8352 extension.addAll(greedyExtendRight(graph, backBoneKmer, lookahead, 1000, assembledKmers));
8353
8354 String backBone = graph.assemble(extension);
8355
8356 String tipRC = reverseComplement(graph.assemble(seqKmers, 0, Math.max(1, start-maxNumKmersInLoop)));
8357
8358 if (backBone.contains(tipRC)) {
8359 return true;
8360 }
8361
8362// if (found) {

Callers

nothing calls this directly

Calls 13

getMaxCoveragePathMethod · 0.95
getMedianKmerCoverageMethod · 0.95
greedyExtendLeftMethod · 0.95
greedyExtendRightMethod · 0.95
assembleMethod · 0.80
containsMethod · 0.80
lookupMethod · 0.65
getMethod · 0.65
addMethod · 0.65
sizeMethod · 0.45
getKMethod · 0.45
getHashMethod · 0.45

Tested by

no test coverage detected