public static List<SearchResult> ReadSearchResultsViaBiblioSpec(String filename, Func<int, bool> progressMonitor) { string tempFile = null; try { tempFile = Path.GetTempFileName(); var blibBuild = new BlibBuild(tempFile, new[] {filename}) { CompressLevel = 0, }; var status = new ProgressStatus(""); var progressMonitorImpl = ProgressMonitorImpl.NewProgressMonitorImpl(status, progressMonitor); string[] ambiguousPeptides; blibBuild.BuildLibrary(LibraryBuildAction.Create, progressMonitorImpl, ref status, out ambiguousPeptides); return ReadBiblioSpecDatabase(tempFile, progressMonitor); } finally { try { if (tempFile != null) { File.Delete(tempFile); } } catch (Exception exception) { Trace.TraceWarning("Exception deleting temp file {0}", exception); } } }
public bool BuildLibrary(IProgressMonitor progress) { _ambiguousMatches = null; ProgressStatus status = new ProgressStatus(Resources.BiblioSpecLiteBuilder_BuildLibrary_Preparing_to_build_library); progress.UpdateProgress(status); if (InputFiles.Any(f => f.EndsWith(EXT_PILOT))) { try { InputFiles = VendorIssueHelper.ConvertPilotFiles(InputFiles, progress, status); if (progress.IsCanceled) return false; } catch (Exception x) { progress.UpdateProgress(status.ChangeErrorException(x)); return false; } } string message = string.Format(Resources.BiblioSpecLiteBuilder_BuildLibrary_Building__0__library, Path.GetFileName(OutputPath)); progress.UpdateProgress(status = status.ChangeMessage(message)); string redundantLibrary = BiblioSpecLiteSpec.GetRedundantName(OutputPath); var blibBuilder = new BlibBuild(redundantLibrary, InputFiles, TargetSequences) { Authority = Authority, IncludeAmbiguousMatches = IncludeAmbiguousMatches, CutOffScore = CutOffScore, Id = Id, }; try { if (!blibBuilder.BuildLibrary(Action, progress, ref status, out _ambiguousMatches)) { return false; } } catch (IOException x) { progress.UpdateProgress(status.ChangeErrorException(x)); return false; } catch (Exception x) { Console.WriteLine(x.Message); progress.UpdateProgress(status.ChangeErrorException( new Exception(string.Format(Resources.BiblioSpecLiteBuilder_BuildLibrary_Failed_trying_to_build_the_redundant_library__0__, redundantLibrary)))); return false; } var blibFilter = new BlibFilter(); status = new ProgressStatus(message); progress.UpdateProgress(status); // Write the non-redundant library to a temporary file first try { using (var saver = new FileSaver(OutputPath)) { if (!blibFilter.Filter(redundantLibrary, saver.SafeName, progress, ref status)) { return false; } saver.Commit(); } } catch (IOException x) { progress.UpdateProgress(status.ChangeErrorException(x)); return false; } catch { progress.UpdateProgress(status.ChangeErrorException( new Exception(string.Format(Resources.BiblioSpecLiteBuilder_BuildLibrary_Failed_trying_to_build_the_library__0__, OutputPath)))); return false; } finally { if (!KeepRedundant) FileEx.SafeDelete(redundantLibrary, true); } return true; }