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

Method extractSimplePaths

src/rnabloom/olc/Layout.java:3349–3462  ·  view source on GitHub ↗
(String outFastaPath)

Source from the content-addressed store, hash-verified

3347 }
3348
3349 public void extractSimplePaths(String outFastaPath) throws IOException {
3350 HashSet<String> containedSet = populateGraphFromOverlaps();
3351
3352 Timer timer = new Timer();
3353
3354 if (!containedSet.isEmpty()) {
3355 printMessage("contained reads: " + NumberFormat.getInstance().format(containedSet.size()));
3356 }
3357
3358 Set<String> vertexSet = graph.vertexSet();
3359 if (!vertexSet.isEmpty()) {
3360 int numDovetailReads = vertexSet.size();
3361 if (!stranded) {
3362 numDovetailReads /= 2;
3363 }
3364 printMessage("dovetail reads: " + NumberFormat.getInstance().format(numDovetailReads));
3365 }
3366
3367 Set<OverlapEdge> edgeSet = graph.edgeSet();
3368
3369 if (edgeSet.size() > 1) {
3370 //printGraph();
3371 printMessage("G: |V|=" + NumberFormat.getInstance().format(vertexSet.size()) + " |E|=" + NumberFormat.getInstance().format(edgeSet.size()));
3372
3373 ArrayDeque<String> removedVertexes = removeRedundantNodes();
3374 if (stranded) {
3375 for (String vid : removedVertexes) {
3376 containedSet.add(getVertexName(vid));
3377 }
3378 }
3379 else {
3380 for (String vid : removedVertexes) {
3381 if (!graph.containsVertex(getReverseComplementID(vid))) {
3382 containedSet.add(getVertexName(vid));
3383 }
3384 }
3385 }
3386
3387 removeTransitiveEdges();
3388
3389 //printGraph();
3390 printMessage("G: |V|=" + NumberFormat.getInstance().format(vertexSet.size()) + " |E|=" + NumberFormat.getInstance().format(edgeSet.size()));
3391 writeGraph(this.seqFastaPath + ".dot.gz");
3392 }
3393
3394 HashMap<String, BitSequence> dovetailReadSeqs = new HashMap<>(vertexSet.size());
3395 FastaReader fr = new FastaReader(seqFastaPath);
3396 FastaWriter fw = new FastaWriter(outFastaPath, false);
3397 long seqID = 0;
3398 long originalNumSeq = 0;
3399 while (fr.hasNext()) {
3400 ++originalNumSeq;
3401 String[] nameSeq = fr.nextWithName();
3402 String name = nameSeq[0];
3403 if (vertexSet.contains(name + '+') || (!stranded && vertexSet.contains(name + '-'))) {
3404 dovetailReadSeqs.put(name, new BitSequence(nameSeq[1]));
3405 }
3406 else if (!containedSet.contains(name)) {

Callers 2

layoutSimpleMethod · 0.95
mainMethod · 0.95

Calls 15

printMessageMethod · 0.95
removeRedundantNodesMethod · 0.95
getVertexNameMethod · 0.95
removeTransitiveEdgesMethod · 0.95
writeGraphMethod · 0.95
hasNextMethod · 0.95
nextWithNameMethod · 0.95
writeMethod · 0.95
closeMethod · 0.95

Tested by

no test coverage detected