public void PalindromicAssembleTest() { const int KmerLength = 19; string testSeq = @"TTTTTTCAATTGAAAAAAAC"; //Will these two sequences be assembled differently? //Key is that there is no additional kmer added by the first sequence relative to the second sequence //TTTTTTTCAATTGAAAAAAATC // TTTTTTCAATTGAAAAAAATC var testSequence = new Sequence(NoGapDnaAlphabet.Instance, testSeq); List <ISequence> seqs = new List <ISequence>(); seqs.Add(testSequence); using (MitoPaintedAssembler assembler = new MitoPaintedAssembler()) { //assembler.ReferenceGenome = testSequence; assembler.KmerLength = 19; assembler.DiagnosticFileOutputPrefix = "tmp"; assembler.DanglingLinksThreshold = 1; var assembly = assembler.Assemble(seqs); // Compare the two graphs Assert.IsTrue(assembly.AssembledSequences.Count == 1); Assert.AreEqual(1, assembly.AssembledSequences.Count()); bool correctContig = assembly.AssembledSequences[0].SequenceEqual(testSequence); if (!correctContig) { correctContig = assembly.AssembledSequences[0].GetReverseComplementedSequence().Equals(testSequence); } Assert.IsTrue(correctContig); } }
public void OutputGraph(string fname) { SW = new StreamWriter(fname); MitoPaintedAssembler.RaiseStatusEvent("\tBuilding Graph File"); SW.Write(HEADER); //make verticies foreach (MetaNode node in MetaNodes) { OutNode(node); } int edgeCount = 0; //make edges foreach (MetaNode node in MetaNodes) { foreach (var leftNode in node.GetLeftEdges()) { edgeCount++; OutEdge(node, leftNode.ToNode, leftNode.DifferentOrientation, 0, leftNode.Weight); } //Remove all relatives foreach (var rightNode in node.GetRightEdges()) { edgeCount++; OutEdge(node, rightNode.ToNode, rightNode.DifferentOrientation, 100, rightNode.Weight); } } MitoPaintedAssembler.RaiseStatusEvent("\tWrote " + edgeCount.ToString() + " edges"); SW.Write(FOOTER); SW.Close(); }
public void AssembleDataWithNoErrors() { MitoPaintedAssembler mpa = new MitoPaintedAssembler(); MitoPaintedAssembler assembler = new MitoPaintedAssembler(); // assembler.ReferenceGenome = refAsSequence; assembler.KmerLength = 19; var assembly = assembler.Assemble(DoDeterministicSimulation(25, 75, true)); Assert.AreEqual(assembly.AssembledSequences.Count, 1); var seq1 = assembly.AssembledSequences.First(); Assert.IsTrue(seq1.SequenceEqual(refAsSequence) || seq1.GetReverseComplementedSequence().SequenceEqual(refAsSequence)); }
private void makeSlidingWindowOccurencePlot() { MitoPaintedAssembler.RaiseStatusEvent("\tStarting sliding window plot"); var list = GetAverageInSlidingCoverageWindows().ToList(); double[] xvals = list.Select(x => (double)x.Key).ToArray(); double[] yvals = list.Select(x => x.Value).ToArray(); var scutoff = PoissonCoverageCutoffCount.ToString(); string line = "lines(c(0,16569),c(" + scutoff + "," + scutoff + "),col=\"red\",lwd=3)"; rInt.PlotPDF(xvals, yvals, OutputFilePrefix + "Windowed" + this.ScanningWindowSize.ToString() + ".pdf", "Windowed occurence", "Insert Size", "Window Average", new List <string>() { line }); MitoPaintedAssembler.RaiseStatusEvent("\tFinished sliding window plot"); }
public void OutputDotGraph(string fname) { StreamWriter SW = new StreamWriter(fname); SW.WriteLine("digraph g {"); foreach (MetaNode node in MetaNodes) { if (node.Lowest_Reference_Position != 0) { SW.WriteLine("N" + node.NodeNumber.ToString() + " [label=\"" + node.Lowest_Reference_Position.ToString() + "-" + node.Highest_Reference_Position.ToString() + " -AvgCov=" + node.AvgKmerCoverage.ToString() + "\"];"); } else { SW.WriteLine("N" + node.NodeNumber.ToString() + " [label=\"" + node.Sequence + " -N=" + node.AvgKmerCoverage.ToString() + "\"];"); } } int edgeCount = 0; //make edges foreach (MetaNode node in MetaNodes) { foreach (var leftNode in node.GetLeftEdges().Where(x => !x.IsInferiorEdge)) { edgeCount++; string edge = "N" + leftNode.FromNode.NodeNumber.ToString() + " -> " + "N" + leftNode.ToNode.NodeNumber.ToString() + ";"; SW.WriteLine(edge); } //Remove all relatives foreach (var rightNode in node.GetRightEdges().Where(x => !x.IsInferiorEdge)) { edgeCount++; string edge = "N" + rightNode.FromNode.NodeNumber.ToString() + " -> " + "N" + rightNode.ToNode.NodeNumber.ToString() + ";"; SW.WriteLine(edge); } } SW.WriteLine("}"); MitoPaintedAssembler.RaiseStatusEvent("\tWrote " + edgeCount.ToString() + " edges in dot file"); SW.Close(); }