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

Method layoutBackbones

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

Source from the content-addressed store, hash-verified

4058 }
4059
4060 public boolean layoutBackbones(String outFastaPath) throws IOException {
4061 HashSet<String> containedSet = populateGraphFromOverlaps();
4062
4063 if (!containedSet.isEmpty()) {
4064 printMessage("contained reads: " + NumberFormat.getInstance().format(containedSet.size()));
4065 }
4066
4067 Set<String> vertexSet = graph.vertexSet();
4068 if (!vertexSet.isEmpty()) {
4069 int numDovetailReads = vertexSet.size();
4070 if (!stranded) {
4071 numDovetailReads = numDovetailReads/2;
4072 }
4073 printMessage("dovetail reads: " + NumberFormat.getInstance().format(numDovetailReads));
4074 }
4075
4076 Set<OverlapEdge> edgeSet = graph.edgeSet();
4077
4078 if (edgeSet.size() > 1) {
4079 printMessage("G: |V|=" + NumberFormat.getInstance().format(vertexSet.size()) + " |E|=" + NumberFormat.getInstance().format(edgeSet.size()));
4080
4081// ArrayDeque<String> redundantNodeNames = removeRedundantNodes();
4082// for (String n : redundantNodeNames) {
4083// containedSet.add(getVertexName(n));
4084// }
4085//
4086// printGraph();
4087// numEdges = graph.edgeSet().size();
4088// System.out.println("G: |V|=" + NumberFormat.getInstance().format(graph.vertexSet().size()) + " |E|=" + NumberFormat.getInstance().format(numEdges));
4089
4090 resolveJunctions();
4091 printMessage("G: |V|=" + NumberFormat.getInstance().format(vertexSet.size()) + " |E|=" + NumberFormat.getInstance().format(edgeSet.size()));
4092 }
4093
4094 // extract read sequences
4095 int numVertexReads = vertexSet.size();
4096 if (!stranded) {
4097 numVertexReads = numVertexReads/2;
4098 }
4099
4100 HashMap<String, BitSequence> dovetailReadSeqs = new HashMap<>(numVertexReads);
4101 FastaReader fr = new FastaReader(seqFastaPath);
4102 FastaWriter fw = new FastaWriter(outFastaPath, false);
4103 long seqID = 0;
4104 long originalNumSeq = 0;
4105 while (fr.hasNext()) {
4106 ++originalNumSeq;
4107 String[] nameSeq = fr.nextWithName();
4108 String name = nameSeq[0];
4109 if (vertexSet.contains(name + '+')) {
4110 dovetailReadSeqs.put(name, new BitSequence(nameSeq[1]));
4111 }
4112 else if (!containedSet.contains(name)) {
4113 // this sequence either contains shorter sequences or it has no overlaps with others
4114 fw.write(Long.toString(++seqID), nameSeq[1]);
4115 }
4116 }
4117 fr.close();

Callers 1

layoutMethod · 0.95

Calls 15

printMessageMethod · 0.95
resolveJunctionsMethod · 0.95
hasNextMethod · 0.95
nextWithNameMethod · 0.95
writeMethod · 0.95
closeMethod · 0.95
getVertexNameMethod · 0.95
assemblePathMethod · 0.95
closeMethod · 0.95

Tested by

no test coverage detected