public static double ScorePeak(double totalArea, double peakCount, bool isIdentified) { double logUnforcedArea = LegacyLogUnforcedAreaCalc.Score(totalArea, 0); return(LegacyScoringModel.Score(logUnforcedArea, peakCount, 0, isIdentified ? 1 : 0)); }
/// <summary> /// Trains a legacy model, checks that it saves correctly in the list and the document, /// modifies it without changing its name and checks that the list and document models update correctly /// </summary> protected void TestModelChangesAndSave() { LegacyScoringModel peakScoringModelBase = null; // Test legacy model var reintegrateDlg = ShowDialog <ReintegrateDlg>(SkylineWindow.ShowReintegrateDialog); var editDlg = ShowDialog <EditPeakScoringModelDlg>(reintegrateDlg.AddPeakScoringModel); RunUI(() => { Assert.AreEqual(editDlg.PeakScoringModelName, ""); editDlg.PeakScoringModelName = "legacy1"; // Not L10N editDlg.SelectedModelItem = LegacyScoringModel.DEFAULT_NAME; Assert.AreEqual(editDlg.PeakScoringModelName, "legacy1"); editDlg.TrainModelClick(); VerifyBias(editDlg, SCORES_AND_WEIGHTS[4]); VerifyCellValues(editDlg, SCORES_AND_WEIGHTS[5]); editDlg.UsesSecondBest = true; editDlg.UsesDecoys = false; editDlg.TrainModelClick(); VerifyBias(editDlg, SCORES_AND_WEIGHTS[6]); VerifyCellValues(editDlg, SCORES_AND_WEIGHTS[7]); editDlg.UsesSecondBest = false; peakScoringModelBase = editDlg.PeakScoringModel as LegacyScoringModel; }); // Unchecking decoys and second best leads to error on training RunDlg <MessageDlg>(editDlg.TrainModelClick, messageDlg => { Assert.AreEqual(string.Format(Resources.EditPeakScoringModelDlg_btnTrainModel_Click_Cannot_train_model_without_either_decoys_or_second_best_peaks_included_), messageDlg.Message); messageDlg.OkDialog(); }); OkDialog(editDlg, editDlg.OkDialog); RunUI(() => reintegrateDlg.ComboPeakScoringModelSelected = "legacy1"); OkDialog(reintegrateDlg, reintegrateDlg.OkDialog); RunUI(() => { // Test modification of legacy scoring model SkylineWindow.SaveDocument(); var peakScoringModel = SkylineWindow.DocumentUI.Settings.PeptideSettings.Integration.PeakScoringModel as LegacyScoringModel; var listModels = Settings.Default.PeakScoringModelList; Assert.AreEqual(listModels.Count, 4); var peakScoringModelList = listModels[3] as LegacyScoringModel; // Check that model in EditList, document model, and model from the dialog are all the same AssertEqualNotNull(new List <LegacyScoringModel> { peakScoringModel, peakScoringModelList, peakScoringModelBase }); // Check document model is the last model we trained // ReSharper disable PossibleNullReferenceException Assert.AreEqual(peakScoringModel.Name, "legacy1"); // ReSharper restore PossibleNullReferenceException }); LegacyScoringModel peakScoringModelBaseNew = null; RunEditPeakScoringDlg("legacy1", editDlgTemp => { editDlgTemp.UsesDecoys = true; editDlgTemp.TrainModelClick(); peakScoringModelBaseNew = editDlgTemp.PeakScoringModel as LegacyScoringModel; editDlgTemp.OkDialog(); }); RunUI(() => { SkylineWindow.SaveDocument(); var peakScoringModelNew = SkylineWindow.DocumentUI.Settings.PeptideSettings.Integration.PeakScoringModel as LegacyScoringModel; var listModels = Settings.Default.PeakScoringModelList; var peakScoringModelListNew = listModels[3] as LegacyScoringModel; // Check that model in EditList, document model, and model from the dialog are all the same AssertEqualNotNull(new List <LegacyScoringModel> { peakScoringModelNew, peakScoringModelListNew, peakScoringModelBaseNew }); // Check document model has changed // ReSharper disable PossibleNullReferenceException Assert.IsTrue(peakScoringModelNew.UsesDecoys); // ReSharper restore PossibleNullReferenceException }); // Test changing legacy to mProphet model without changing name MProphetPeakScoringModel peakScoringModelMProphetBase = null; RunEditPeakScoringDlg("legacy1", editDlgTemp => { // Switch to mProphet model editDlgTemp.SelectedModelItem = "mProphet"; editDlgTemp.TrainModelClick(); peakScoringModelMProphetBase = editDlgTemp.PeakScoringModel as MProphetPeakScoringModel; editDlgTemp.OkDialog(); } ); RunUI(() => { SkylineWindow.SaveDocument(); var peakScoringModelMProphet = SkylineWindow.DocumentUI.Settings.PeptideSettings.Integration.PeakScoringModel as MProphetPeakScoringModel; var listModels = Settings.Default.PeakScoringModelList; var peakScoringModelMProphetList = listModels[3] as MProphetPeakScoringModel; // Check that model in EditList, document model, and model from the dialog are all the same AssertEqualNotNull(new List <MProphetPeakScoringModel> { peakScoringModelMProphet, peakScoringModelMProphetList, peakScoringModelMProphetBase }); // Check document model has changed Assert.AreNotEqual(peakScoringModelBaseNew, peakScoringModelMProphet); // ReSharper disable PossibleNullReferenceException Assert.IsTrue(peakScoringModelMProphet.UsesDecoys); // ReSharper restore PossibleNullReferenceException Assert.AreEqual(peakScoringModelMProphet.PeakFeatureCalculators.Count, 23); }); }