/// <summary> /// Initializes a new instance of the <see cref="LibraryMatchWorkflow"/> class. /// </summary> /// <param name="uimfFileLocation"> /// The UIMF file location. /// </param> /// <param name="outputDirectory"> /// The output directory. /// </param> /// <param name="resultFileName"> /// The result file name. /// </param> /// <param name="parameters"> /// The parameters. /// </param> public LibraryMatchWorkflow(string uimfFileLocation, string outputDirectory, string resultFileName, LibraryMatchParameters parameters) { this.uimfReader = new DataReader(uimfFileLocation); // Append bin-centric table to the uimf if not present. if (!this.uimfReader.DoesContainBinCentricData()) { DataWriter dataWriter = new DataWriter(uimfFileLocation); dataWriter.CreateBinCentricTables(); } this.Parameters = parameters; this.smoother = new SavitzkyGolaySmoother(parameters.NumPointForSmoothing, 2); this.NumberOfFrames = this.uimfReader.GetGlobalParams().NumFrames; this.NumberOfScans = this.uimfReader.GetFrameParams(1).Scans; this.DatasetName = Path.GetFileNameWithoutExtension(uimfFileLocation); this.Parameters = parameters; this.ResultFileName = resultFileName; if (outputDirectory == string.Empty) { outputDirectory = Directory.GetCurrentDirectory(); } if (!outputDirectory.EndsWith("\\")) { outputDirectory += "\\"; } if (!Directory.Exists(outputDirectory)) { try { Directory.CreateDirectory(outputDirectory); } catch (Exception) { Console.WriteLine("Failed to create directory."); throw; } } this.OutputPath = outputDirectory; Trace.Listeners.Clear(); ConsoleTraceListener consoleTraceListener = new ConsoleTraceListener(false); consoleTraceListener.TraceOutputOptions = TraceOptions.DateTime; string result = this.OutputPath + this.ResultFileName; this.resultFileWriter = File.AppendText(result); TextWriterTraceListener resultFileTraceListener = new TextWriterTraceListener(this.resultFileWriter) { Name = "this.DatasetName" + "_Result", TraceOutputOptions = TraceOptions.ThreadId | TraceOptions.DateTime }; Trace.Listeners.Add(consoleTraceListener); Trace.Listeners.Add(resultFileTraceListener); Trace.AutoFlush = true; }
/// <summary> /// The execute match. /// </summary> /// <param name="options"> /// The options. /// </param> /// <returns> /// The <see cref="int"/>. /// </returns> private static int ExecuteMatch(MatchOptions options) { string inputPath = options.InputPath; // get the UIMF file string libraryPath = options.LibraryPath; string datasetName = Path.GetFileNameWithoutExtension(inputPath); string libraryFlieName = Path.GetFileNameWithoutExtension(libraryPath); string resultName = datasetName + "_" + libraryFlieName + "_MatchResult.txt"; string resultPath = Path.Combine(options.OutputPath, resultName); string outputDirectory = options.OutputPath; if (outputDirectory == string.Empty) { outputDirectory = Directory.GetCurrentDirectory(); } if (!Directory.Exists(outputDirectory)) { try { Directory.CreateDirectory(outputDirectory); } catch (Exception) { Console.WriteLine(string.Format("Failed to create directory {0}", outputDirectory)); throw; } } // Delete the result file if it already exists if (File.Exists(resultPath)) { File.Delete(resultPath); } IList<DriftTimeTarget> importDriftTimeLibrary = DriftTimeLibraryImporter.ImportDriftTimeLibrary(libraryPath); var parameters = new LibraryMatchParameters(options.DriftTimeError, 250, 9, options.PeakShapeScoreThreshold, options.IsotopicScoreThreshold, 0.25, options.MassError, options.DriftTubeLength); LibraryMatchWorkflow workflow = new LibraryMatchWorkflow(inputPath, outputDirectory, resultName, parameters); IDictionary<DriftTimeTarget, LibraryMatchResult> results = workflow.RunLibraryMatchWorkflow(importDriftTimeLibrary); // Write out the target / result pairs as serialized objects if (options.PauseWhenDone) { PauseProgram(); } return 1; }