public bool BuildPeptideSearchLibrary(CancelEventArgs e) { // Nothing to build, if now search files were specified if (!SearchFilenames.Any()) { var libraries = SkylineWindow.Document.Settings.PeptideSettings.Libraries; if (!libraries.HasLibraries) { return(false); } var libSpec = libraries.LibrarySpecs.FirstOrDefault(s => s.IsDocumentLibrary); return(libSpec != null && LoadPeptideSearchLibrary(libSpec)); } double cutOffScore; MessageBoxHelper helper = new MessageBoxHelper(WizardForm); if (!helper.ValidateDecimalTextBox(textCutoff, 0, 1.0, out cutOffScore)) { e.Cancel = true; return(false); } ImportPeptideSearch.CutoffScore = cutOffScore; BiblioSpecLiteBuilder builder; try { builder = ImportPeptideSearch.GetLibBuilder(SkylineWindow.Document, SkylineWindow.DocumentFilePath, cbIncludeAmbiguousMatches.Checked); } catch (FileEx.DeleteException de) { MessageDlg.ShowException(this, de); return(false); } using (var longWaitDlg = new LongWaitDlg { Text = Resources.BuildPeptideSearchLibraryControl_BuildPeptideSearchLibrary_Building_Peptide_Search_Library, Message = Resources.BuildPeptideSearchLibraryControl_BuildPeptideSearchLibrary_Building_document_library_for_peptide_search_, }) { // Disable the wizard, because the LongWaitDlg does not try { ImportPeptideSearch.ClosePeptideSearchLibraryStreams(SkylineWindow.DocumentUI); var status = longWaitDlg.PerformWork(WizardForm, 800, monitor => LibraryManager.BuildLibraryBackground(SkylineWindow, builder, monitor, new LibraryManager.BuildState(null, null))); if (status.IsError) { MessageDlg.ShowException(WizardForm, status.ErrorException); return(false); } } catch (Exception x) { MessageDlg.ShowWithException(WizardForm, TextUtil.LineSeparate(string.Format(Resources.BuildPeptideSearchLibraryControl_BuildPeptideSearchLibrary_Failed_to_build_the_library__0__, Path.GetFileName(BiblioSpecLiteSpec.GetLibraryFileName(SkylineWindow.DocumentFilePath))), x.Message), x); return(false); } } var docLibSpec = builder.LibrarySpec.ChangeDocumentLibrary(true); Settings.Default.SpectralLibraryList.Insert(0, docLibSpec); // Go ahead and load the library - we'll need it for // the modifications and chromatograms page. if (!LoadPeptideSearchLibrary(docLibSpec)) { return(false); } var selectedIrtStandard = comboStandards.SelectedItem as IrtStandard; var addedIrts = false; if (selectedIrtStandard != null && selectedIrtStandard != IrtStandard.NULL) { addedIrts = AddIrtLibraryTable(docLibSpec.FilePath, selectedIrtStandard); } var docNew = ImportPeptideSearch.AddDocumentSpectralLibrary(SkylineWindow.Document, docLibSpec); if (docNew == null) { return(false); } if (addedIrts) { docNew = ImportPeptideSearch.AddRetentionTimePredictor(docNew, docLibSpec); } SkylineWindow.ModifyDocument(Resources.BuildPeptideSearchLibraryControl_BuildPeptideSearchLibrary_Add_document_spectral_library, doc => docNew); if (!string.IsNullOrEmpty(builder.AmbiguousMatchesMessage)) { MessageDlg.Show(WizardForm, builder.AmbiguousMatchesMessage); } return(true); }
private bool BuildPeptideSearchLibrary(CancelEventArgs e) { // Nothing to build, if now search files were specified if (!SearchFilenames.Any()) { var libraries = DocumentContainer.Document.Settings.PeptideSettings.Libraries; if (!libraries.HasLibraries) { return(false); } var libSpec = libraries.LibrarySpecs.FirstOrDefault(s => s.IsDocumentLibrary); return(libSpec != null && LoadPeptideSearchLibrary(libSpec)); } double cutOffScore; MessageBoxHelper helper = new MessageBoxHelper(WizardForm); if (!helper.ValidateDecimalTextBox(textCutoff, 0, 1.0, out cutOffScore)) { e.Cancel = true; return(false); } ImportPeptideSearch.CutoffScore = cutOffScore; BiblioSpecLiteBuilder builder; try { builder = ImportPeptideSearch.GetLibBuilder(DocumentContainer.Document, DocumentContainer.DocumentFilePath, cbIncludeAmbiguousMatches.Checked); builder.PreferEmbeddedSpectra = PreferEmbeddedSpectra; } catch (FileEx.DeleteException de) { MessageDlg.ShowException(this, de); return(false); } bool retry = false; do { using (var longWaitDlg = new LongWaitDlg { Text = Resources.BuildPeptideSearchLibraryControl_BuildPeptideSearchLibrary_Building_Peptide_Search_Library, Message = Resources.BuildPeptideSearchLibraryControl_BuildPeptideSearchLibrary_Building_document_library_for_peptide_search_, }) { // Disable the wizard, because the LongWaitDlg does not try { ImportPeptideSearch.ClosePeptideSearchLibraryStreams(DocumentContainer.Document); var status = longWaitDlg.PerformWork(WizardForm, 800, monitor => LibraryManager.BuildLibraryBackground(DocumentContainer, builder, monitor, new LibraryManager.BuildState(null, null))); if (status.IsError) { // E.g. could not find external raw data for MaxQuant msms.txt; ask user if they want to retry with "prefer embedded spectra" option if (BiblioSpecLiteBuilder.IsLibraryMissingExternalSpectraError(status.ErrorException)) { var response = ShowLibraryMissingExternalSpectraError(WizardForm, status.ErrorException); if (response == UpdateProgressResponse.cancel) { return(false); } else if (response == UpdateProgressResponse.normal) { builder.PreferEmbeddedSpectra = true; } retry = true; } else { MessageDlg.ShowException(WizardForm, status.ErrorException); return(false); } } } catch (Exception x) { MessageDlg.ShowWithException(WizardForm, TextUtil.LineSeparate(string.Format(Resources.BuildPeptideSearchLibraryControl_BuildPeptideSearchLibrary_Failed_to_build_the_library__0__, Path.GetFileName(BiblioSpecLiteSpec.GetLibraryFileName(DocumentContainer.DocumentFilePath))), x.Message), x); return(false); } } } while (retry); var docLibSpec = builder.LibrarySpec.ChangeDocumentLibrary(true); Settings.Default.SpectralLibraryList.Insert(0, docLibSpec); // Go ahead and load the library - we'll need it for // the modifications and chromatograms page. if (!LoadPeptideSearchLibrary(docLibSpec)) { return(false); } var selectedIrtStandard = comboStandards.SelectedItem as IrtStandard; var addedIrts = false; if (selectedIrtStandard != null && selectedIrtStandard != IrtStandard.EMPTY) { addedIrts = AddIrtLibraryTable(docLibSpec.FilePath, selectedIrtStandard); } var docNew = ImportPeptideSearch.AddDocumentSpectralLibrary(DocumentContainer.Document, docLibSpec); if (docNew == null) { return(false); } if (addedIrts) { docNew = ImportPeptideSearch.AddRetentionTimePredictor(docNew, docLibSpec); } DocumentContainer.ModifyDocumentNoUndo(doc => docNew); if (!string.IsNullOrEmpty(builder.AmbiguousMatchesMessage)) { MessageDlg.Show(WizardForm, builder.AmbiguousMatchesMessage); } return(true); }