public void CreateDatabase(string path) { //The file that was just created does not have a schema, so SQLite won't touch it. //The file must have a schema or not exist for use with SQLite, so we'll delete //it and install a schema try { FileEx.SafeDelete(path); } catch (IOException x) { MessageDlg.ShowException(this, x); return; } //Create file, initialize db try { IonMobilityDb.CreateIonMobilityDb(path); textDatabase.Text = path; } catch (DatabaseOpeningException x) { MessageDlg.ShowException(this, x); } catch (Exception x) { var message = TextUtil.LineSeparate(string.Format(Resources.EditIonMobilityLibraryDlg_CreateDatabase_The_ion_mobility_library_file__0__could_not_be_created, path), x.Message); MessageDlg.ShowWithException(this, message, x); } }
public void OkDialog() { if (string.IsNullOrEmpty(textLibraryName.Text)) { MessageDlg.Show(this, Resources.EditIonMobilityLibraryDlg_OkDialog_Please_enter_a_name_for_the_ion_mobility_library_); textLibraryName.Focus(); return; } if (_existingLibs != null) { foreach (var existingLib in _existingLibs) { if (Equals(existingLib.Name, textLibraryName.Text) && !Equals(existingLib.Name, _editingName)) { if (MessageBox.Show(this, string.Format(Resources.EditIonMobilityLibraryDlg_OkDialog_An_ion_mobility_library_with_the_name__0__already_exists__Do_you_want_to_overwrite_it_, textLibraryName.Text), Program.Name, MessageBoxButtons.YesNo) != DialogResult.Yes) { textLibraryName.Focus(); return; } } } } string message; if (string.IsNullOrEmpty(textDatabase.Text)) { message = TextUtil.LineSeparate(Resources.EditIonMobilityLibraryDlg_OkDialog_Please_choose_a_file_for_the_ion_mobility_library, Resources.EditIonMobilityLibraryDlg_OkDialog_Click_the_Create_button_to_create_a_new_library_or_the_Open_button_to_open_an_existing_library_file_); MessageDlg.Show(this, message); textDatabase.Focus(); return; } string path = Path.GetFullPath(textDatabase.Text); if (!Equals(path, textDatabase.Text)) { message = TextUtil.LineSeparate(Resources.EditIonMobilityLibraryDlg_OkDialog_Please_use_a_full_path_to_a_file_for_the_ion_mobility_library_, Resources.EditIonMobilityLibraryDlg_OkDialog_Click_the_Create_button_to_create_a_new_library_or_the_Open_button_to_open_an_existing_library_file_); MessageDlg.Show(this, message); textDatabase.Focus(); return; } if (!string.Equals(Path.GetExtension(path), IonMobilityDb.EXT)) { path += IonMobilityDb.EXT; } // This function MessageBox.Show's error messages if (!ValidatePeptideList(LibraryPeptideList, textLibraryName.Text ?? string.Empty)) { gridViewMeasuredPeptides.Focus(); return; } try { var calculator = new IonMobilityLibrary(textLibraryName.Text, path); IonMobilityDb db = File.Exists(path) ? IonMobilityDb.GetIonMobilityDb(path, null) : IonMobilityDb.CreateIonMobilityDb(path); db = db.UpdatePeptides(LibraryPeptides.ToArray(), _originalPeptides ?? new ValidatingIonMobilityPeptide[0]); IonMobilityLibrary = calculator.ChangeDatabase(db); } catch (DatabaseOpeningException x) { MessageDlg.Show(this, x.Message); textDatabase.Focus(); return; } catch (StaleStateException staleStateException) { // CONSIDER: (copied from iRT code) Not sure if this is the right thing to do. It would // be nice to solve whatever is causing this, but this is // better than showing an unexpected error form with stack trace. MessageDlg.ShowWithException(this, Resources.EditIonMobilityLibraryDlg_OkDialog_Failure_updating_peptides_in_the_ion_mobility_library__The_library_may_be_out_of_synch_, staleStateException); return; } DialogResult = DialogResult.OK; }
private void PerformTestMeasuredDriftValues(bool asSmallMolecules) { if (asSmallMolecules) { if (!RunSmallMoleculeTestVersions) { Console.Write(MSG_SKIPPING_SMALLMOLECULE_TEST_VERSION); return; } } var testFilesDir = new TestFilesDir(TestContext, @"TestData\Results\BlibDriftTimeTest.zip"); // Re-used from BlibDriftTimeTest // Open document with some peptides but no results var docPath = testFilesDir.GetTestPath("BlibDriftTimeTest.sky"); // This was a malformed document, which caused problems after a fix to not recalculate // document library settings on open. To avoid rewriting this test for the document // which now contains 2 precursors, the first precursor is removed immediately. SrmDocument docOriginal = ResultsUtil.DeserializeDocument(docPath); var pathFirstPeptide = docOriginal.GetPathTo((int)SrmDocument.Level.Molecules, 0); var nodeFirstPeptide = (DocNodeParent)docOriginal.FindNode(pathFirstPeptide); docOriginal = (SrmDocument)docOriginal.RemoveChild(pathFirstPeptide, nodeFirstPeptide.Children[0]); if (asSmallMolecules) { var refine = new RefinementSettings(); docOriginal = refine.ConvertToSmallMolecules(docOriginal, testFilesDir.FullPath); } using (var docContainer = new ResultsTestDocumentContainer(docOriginal, docPath)) { var doc = docContainer.Document; // Import an mz5 file that contains drift info const string replicateName = "ID12692_01_UCA168_3727_040714"; var chromSets = new[] { new ChromatogramSet(replicateName, new[] { new MsDataFilePath(testFilesDir.GetTestPath("ID12692_01_UCA168_3727_040714" + ExtensionTestContext.ExtMz5)), }), }; var docResults = doc.ChangeMeasuredResults(new MeasuredResults(chromSets)); Assert.IsTrue(docContainer.SetDocument(docResults, docOriginal, true)); docContainer.AssertComplete(); var document = docContainer.Document; // Clear out any current settings document = document.ChangeSettings(document.Settings.ChangeTransitionIonMobilityFiltering(s => TransitionIonMobilityFiltering.EMPTY)); // Verify ability to extract predictions from raw data var libraryName0 = "test0"; var dbPath0 = testFilesDir.GetTestPath(libraryName0 + IonMobilityDb.EXT); var newIMFiltering = document.Settings.TransitionSettings.IonMobilityFiltering.ChangeLibrary( IonMobilityLibrary.CreateFromResults( document, docContainer.DocumentFilePath, true, libraryName0, dbPath0)); var result = newIMFiltering.IonMobilityLibrary.GetIonMobilityLibKeyMap().AsDictionary(); Assert.AreEqual(1, result.Count); var expectedDT = 4.0019; var expectedOffset = .4829; Assert.AreEqual(expectedDT, result.Values.First().First().IonMobility.Mobility.Value, .001); Assert.AreEqual(expectedOffset, result.Values.First().First().HighEnergyIonMobilityValueOffset ?? 0, .001); // Check ability to update, and to preserve unchanged var revised = new List <PrecursorIonMobilities>(); var libKey = result.Keys.First(); revised.Add(new PrecursorIonMobilities(libKey, IonMobilityAndCCS.GetIonMobilityAndCCS(IonMobilityValue.GetIonMobilityValue(expectedDT = 4, eIonMobilityUnits.drift_time_msec), null, expectedOffset = 0.234))); // N.B. CCS handling would require actual raw data in this test, it's covered in a perf test var pepSequence = "DEADEELS"; var libKey2 = asSmallMolecules ? new LibKey(SmallMoleculeLibraryAttributes.Create(pepSequence, "C12H5", null, null, null, null), Adduct.M_PLUS_2H) : new LibKey(pepSequence, Adduct.DOUBLY_PROTONATED); revised.Add(new PrecursorIonMobilities(libKey2, IonMobilityAndCCS.GetIonMobilityAndCCS(IonMobilityValue.GetIonMobilityValue(5, eIonMobilityUnits.drift_time_msec), null, 0.123))); var libraryName = "test"; var dbPath = testFilesDir.GetTestPath(libraryName + IonMobilityDb.EXT); var imsdb = IonMobilityDb.CreateIonMobilityDb(dbPath, libraryName, false, revised); var newLibIM = new IonMobilityLibrary(libraryName, dbPath, imsdb); var ionMobilityWindowWidthCalculator = new IonMobilityWindowWidthCalculator( IonMobilityWindowWidthCalculator.IonMobilityWindowWidthType.resolving_power, 40, 0, 0, 0); var calculator = ionMobilityWindowWidthCalculator; document = document.ChangeSettings( document.Settings.ChangeTransitionIonMobilityFiltering( imf => imf.ChangeFilterWindowWidthCalculator(calculator). ChangeLibrary(newLibIM))); result = document.Settings.TransitionSettings.IonMobilityFiltering.IonMobilityLibrary.GetIonMobilityLibKeyMap().AsDictionary(); Assert.AreEqual(2, result.Count); Assert.AreEqual(expectedDT, result[libKey].First().IonMobility.Mobility.Value, .001); Assert.AreEqual(expectedOffset, result[libKey].First().HighEnergyIonMobilityValueOffset ?? 0, .001); Assert.AreEqual(5, result[libKey2].First().IonMobility.Mobility.Value, .001); Assert.AreEqual(0.123, result[libKey2].First().HighEnergyIonMobilityValueOffset ?? 0, .001); ionMobilityWindowWidthCalculator = new IonMobilityWindowWidthCalculator( IonMobilityWindowWidthCalculator.IonMobilityWindowWidthType.fixed_width, 40, 0, 0, 100); document = document.ChangeSettings( document.Settings.ChangeTransitionIonMobilityFiltering( imf => imf.ChangeFilterWindowWidthCalculator(ionMobilityWindowWidthCalculator). ChangeLibrary(newLibIM))); result = document.Settings.TransitionSettings.IonMobilityFiltering.IonMobilityLibrary.GetIonMobilityLibKeyMap().AsDictionary(); Assert.AreEqual(2, result.Count); Assert.AreEqual(expectedDT, result[libKey].First().IonMobility.Mobility.Value, .001); Assert.AreEqual(expectedOffset, result[libKey].First().HighEnergyIonMobilityValueOffset ?? 0, .001); Assert.AreEqual(5, result[libKey2].First().IonMobility.Mobility.Value, .001); Assert.AreEqual(0.123, result[libKey2].First().HighEnergyIonMobilityValueOffset ?? 0, .001); } }