Пример #1
0
        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);
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
        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));
        }
Пример #4
0
        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");
        }
Пример #5
0
        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();
        }