/// <summary> /// Writes delta for query sequences. /// </summary> /// <param name="sorter">Sorter instance.</param> /// <param name="unsortedDeltaFilename">Unsorted Delta Filename.</param> /// <param name="queryParser">Query/read sequences parser.</param> /// <param name="outputfilename">Output file name.</param> public static void WriteSortedDelta(DeltaAlignmentSorter sorter, string unsortedDeltaFilename, FastASequencePositionParser queryParser, string outputfilename) { if (sorter == null) { throw new ArgumentNullException("sorter"); } using (DeltaAlignmentParser unsortedDeltaParser = new DeltaAlignmentParser(unsortedDeltaFilename, queryParser)) { using (StreamWriter writer = new StreamWriter(outputfilename)) { long deltaPositionInFile = 0; foreach (long id in sorter.GetSortedIds()) { DeltaAlignment deltaAlignment = unsortedDeltaParser.GetDeltaAlignmentAt(id); deltaAlignment.Id = deltaPositionInFile; string deltaString = Helper.GetString(deltaAlignment); deltaPositionInFile += deltaString.Length; writer.Write(deltaString); } writer.Flush(); } } }
/// <summary> /// Writes delta for query sequences. /// </summary> /// <param name="delta">The Deltas.</param> private void WriteDelta( DeltaAlignmentSorter sorter) { FastASequencePositionParser sequenceParser = null; DeltaAlignmentParser unsortedDeltaParser = null; TextWriter textWriterConsoleOutSave = Console.Out; StreamWriter streamWriterConsoleOut = null; try { sequenceParser = new FastASequencePositionParser(this.FilePath[1], true); unsortedDeltaParser = new DeltaAlignmentParser(UnsortedDeltaFile, sequenceParser); if (!string.IsNullOrEmpty(this.OutputFile)) { streamWriterConsoleOut = new StreamWriter(this.OutputFile); Console.SetOut(streamWriterConsoleOut); } long deltaPositionInFile = 0; foreach (long id in sorter.GetSortedIds()) { DeltaAlignment deltaAlignment = unsortedDeltaParser.GetDeltaAlignmentAt(id); deltaAlignment.Id = deltaPositionInFile; string deltaString = Helper.GetString(deltaAlignment); deltaPositionInFile += deltaString.Length; Console.Write(deltaString); } Console.Out.Flush(); } finally { if (streamWriterConsoleOut != null) { streamWriterConsoleOut.Dispose(); streamWriterConsoleOut = null; } if (sequenceParser != null) { sequenceParser.Dispose(); sequenceParser = null; } if (unsortedDeltaParser != null) { unsortedDeltaParser.Dispose(); unsortedDeltaParser = null; } Console.SetOut(textWriterConsoleOutSave); } }
/// <summary> /// Resolve ambuiguity in the delta alignments. /// </summary> public void ResolveAmbiguity() { TimeSpan repeatResolutionSpan = new TimeSpan(); Stopwatch runRepeatResolution = new Stopwatch(); FileInfo inputFileinfo = new FileInfo(this.FilePath); long inputFileLength = inputFileinfo.Length; inputFileinfo = null; runRepeatResolution.Restart(); DeltaAlignmentParser parser = new DeltaAlignmentParser(this.FilePath); IList <IEnumerable <DeltaAlignment> > deltas = parser.Parse(); runRepeatResolution.Stop(); if (this.Verbose) { Console.WriteLine(); Console.WriteLine(" Processed DeltaAlignment file: {0}", Path.GetFullPath(this.FilePath)); Console.WriteLine(" Read/Processing time: {0}", runRepeatResolution.Elapsed); Console.WriteLine(" File Size : {0}", inputFileLength); } runRepeatResolution.Restart(); List <DeltaAlignment> outputDeltas = RepeatResolver.ResolveAmbiguity(deltas); List <DeltaAlignment> orderedOutputDeltas = outputDeltas.OrderBy(a => a.FirstSequenceStart).ToList(); runRepeatResolution.Stop(); repeatResolutionSpan = repeatResolutionSpan.Add(runRepeatResolution.Elapsed); runRepeatResolution.Restart(); this.WriteDelta(orderedOutputDeltas); runRepeatResolution.Stop(); if (this.Verbose) { Console.WriteLine(" Compute time: {0}", repeatResolutionSpan); Console.WriteLine(" Write() time: {0}", runRepeatResolution.Elapsed); } }
/// <summary> /// Refine layout in the delta alignments. /// </summary> public void GenerateConsensus() { TimeSpan timeSpan = new TimeSpan(); Stopwatch runAlgorithm = new Stopwatch(); FileInfo inputFileinfo = new FileInfo(this.FilePath); long inputFileLength = inputFileinfo.Length; inputFileinfo = null; runAlgorithm.Restart(); DeltaAlignmentParser parser = new DeltaAlignmentParser(this.FilePath); IList <DeltaAlignment> deltas = parser.Parse(); runAlgorithm.Stop(); if (this.Verbose) { Console.WriteLine(); Console.WriteLine(" Processed DeltaAlignment file: {0}", Path.GetFullPath(this.FilePath)); Console.WriteLine(" Read/Processing time: {0}", runAlgorithm.Elapsed); Console.WriteLine(" File Size : {0}", inputFileLength); } runAlgorithm.Restart(); IEnumerable <ISequence> consensus = ConsensusGeneration.GenerateConsensus(deltas); runAlgorithm.Stop(); timeSpan = timeSpan.Add(runAlgorithm.Elapsed); runAlgorithm.Restart(); this.WriteSequences(consensus); runAlgorithm.Stop(); if (this.Verbose) { Console.WriteLine(" Compute time: {0}", timeSpan); Console.WriteLine(" Write() time: {0}", runAlgorithm.Elapsed); } }
/// <summary> /// Writes delta for query sequences. /// </summary> /// <param name="sorter">Sorter instance.</param> /// <param name="unsortedDeltaFilename">Unsorted Delta Filename.</param> /// <param name="queryFilename">Query/read sequences filename.</param> /// <param name="outputfilename">Output file name.</param> private static void WriteSortedDelta(DeltaAlignmentSorter sorter, string unsortedDeltaFilename, FastASequencePositionParser queryParser, string outputfilename) { using (DeltaAlignmentParser unsortedDeltaParser = new DeltaAlignmentParser(unsortedDeltaFilename, queryParser)) { TextWriter textWriterConsoleOutSave = Console.Out; StreamWriter streamWriterConsoleOut = null; try { if (!string.IsNullOrEmpty(outputfilename)) { streamWriterConsoleOut = new StreamWriter(outputfilename); Console.SetOut(streamWriterConsoleOut); } long deltaPositionInFile = 0; foreach (long id in sorter.GetSortedIds()) { DeltaAlignment deltaAlignment = unsortedDeltaParser.GetDeltaAlignmentAt(id); deltaAlignment.Id = deltaPositionInFile; string deltaString = Helper.GetString(deltaAlignment); deltaPositionInFile += deltaString.Length; Console.Write(deltaString); } Console.Out.Flush(); } finally { if (streamWriterConsoleOut != null) { streamWriterConsoleOut.Dispose(); streamWriterConsoleOut = null; } Console.SetOut(textWriterConsoleOutSave); } } }