public void TestRemoval(string file1Src, string file2Src, string file1Dest, string file2Dest, string expectedResult1, string expectedResult2, int?prefixLength = null, int?suffixLength = null) { if (!File.Exists(file1Dest)) { File.Move(file1Src, file1Dest); } if (!File.Exists(file2Dest)) { File.Move(file2Src, file2Dest); } using (new WaitDocumentChange()) { var importResultsDlg = ShowDialog <ImportResultsDlg>(SkylineWindow.ImportResults); RunUI(() => { importResultsDlg.NamedPathSets = DataSourceUtil.GetDataSources(TestFilesDir.FullPath).ToArray(); }); var removeSuffix = ShowDialog <ImportResultsNameDlg>(importResultsDlg.OkDialog); if (prefixLength != null) { string foundPrefix = string.Empty; foundPrefix = removeSuffix.Prefix; RunUI(() => removeSuffix.Prefix = foundPrefix.Substring(0, foundPrefix.Length - prefixLength.Value)); } if (suffixLength != null) { string foundSuffix = string.Empty; foundSuffix = removeSuffix.Suffix; RunUI(() => removeSuffix.Suffix = foundSuffix.Substring(suffixLength.Value)); } OkDialog(removeSuffix, () => removeSuffix.YesDialog()); } WaitForDocumentLoaded(); Assert.AreEqual(expectedResult1, SkylineWindow.Document.Settings.MeasuredResults.Chromatograms[0].Name); Assert.AreEqual(expectedResult2, SkylineWindow.Document.Settings.MeasuredResults.Chromatograms[1].Name); RunUI(SkylineWindow.Undo); }
protected override void DoTest() { var folderAbsoluteQuant = UseRawFiles ? "AbsoluteQuant" : "AbsoluteQuantMzml"; // Generating a Transition List, p. 4 { var doc = SkylineWindow.Document; var transitionSettingsUI = ShowDialog <TransitionSettingsUI>(SkylineWindow.ShowTransitionSettingsUI); RunUI(() => { // Predicition Settings transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.Prediction; transitionSettingsUI.PrecursorMassType = MassType.Monoisotopic; transitionSettingsUI.FragmentMassType = MassType.Monoisotopic; transitionSettingsUI.RegressionCEName = "Thermo TSQ Vantage"; transitionSettingsUI.RegressionDPName = Resources.SettingsList_ELEMENT_NONE_None; }); PauseForScreenShot <TransitionSettingsUI.PredictionTab>("Transition Settings - Prediction tab", 4); RunUI(() => { // Filter Settings transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.Filter; transitionSettingsUI.PrecursorCharges = "2"; transitionSettingsUI.ProductCharges = "1"; transitionSettingsUI.FragmentTypes = "y"; transitionSettingsUI.RangeFrom = Resources.TransitionFilter_FragmentStartFinders_ion_3; transitionSettingsUI.RangeTo = Resources.TransitionFilter_FragmentEndFinders_last_ion_minus_1; transitionSettingsUI.SpecialIons = new string[0]; }); PauseForScreenShot <TransitionSettingsUI.FilterTab>("Transition Settings - Filter tab", 4); OkDialog(transitionSettingsUI, transitionSettingsUI.OkDialog); WaitForDocumentChange(doc); } // Configuring Peptide settings p. 4 PeptideSettingsUI peptideSettingsUI = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => peptideSettingsUI.SelectedTab = PeptideSettingsUI.TABS.Modifications); PauseForScreenShot <PeptideSettingsUI.ModificationsTab>("Peptide Settings - Modification tab", 5); var modHeavyK = new StaticMod("Label:13C(6)15N(2) (C-term K)", "K", ModTerminus.C, false, null, LabelAtoms.C13 | LabelAtoms.N15, RelativeRT.Matching, null, null, null); AddHeavyMod(modHeavyK, peptideSettingsUI, "Edit Isotope Modification over Transition Settings", 5); RunUI(() => peptideSettingsUI.PickedHeavyMods = new[] { modHeavyK.Name }); PauseForScreenShot <PeptideSettingsUI.ModificationsTab>("Peptide Settings - Modification tab with mod added", 5); OkDialog(peptideSettingsUI, peptideSettingsUI.OkDialog); // Inserting a peptide sequence p. 5 using (new CheckDocumentState(1, 1, 2, 10)) { RunUI(() => SetClipboardText("IEAIPQIDK\tGST-tag")); var pasteDlg = ShowDialog <PasteDlg>(SkylineWindow.ShowPastePeptidesDlg); RunUI(pasteDlg.PastePeptides); WaitForProteinMetadataBackgroundLoaderCompletedUI(); PauseForScreenShot <PasteDlg.PeptideListTab>("Insert Peptide List", 6); OkDialog(pasteDlg, pasteDlg.OkDialog); } RunUI(SkylineWindow.ExpandPrecursors); RunUI(() => SkylineWindow.SaveDocument(TestFilesDir.GetTestPath(folderAbsoluteQuant + @"test_file.sky"))); WaitForCondition(() => File.Exists(TestFilesDir.GetTestPath(folderAbsoluteQuant + @"test_file.sky"))); PauseForScreenShot("Main window with Targets view", 6); // Exporting a transition list p. 6 { var exportMethodDlg = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.List)); RunUI(() => { exportMethodDlg.InstrumentType = ExportInstrumentType.THERMO; exportMethodDlg.ExportStrategy = ExportStrategy.Single; exportMethodDlg.OptimizeType = ExportOptimize.NONE; exportMethodDlg.MethodType = ExportMethodType.Standard; }); PauseForScreenShot <ExportMethodDlg.TransitionListView>("Export Transition List", 7); OkDialog(exportMethodDlg, () => exportMethodDlg.OkDialog(TestFilesDir.GetTestPath("Quant_Abs_Thermo_TSQ_Vantage.csv"))); } // Importing RAW files into Skyline p. 7 var importResultsDlg = ShowDialog <ImportResultsDlg>(SkylineWindow.ImportResults); PauseForScreenShot <ImportResultsDlg>("Import Results - click OK to get shot of Import Results Files and then cancel", 8); RunUI(() => { var rawFiles = DataSourceUtil.GetDataSources(TestFilesDirs[0].FullPath).First().Value.Skip(1); var namedPathSets = from rawFile in rawFiles select new KeyValuePair <string, MsDataFileUri[]>( rawFile.GetFileNameWithoutExtension(), new[] { rawFile }); importResultsDlg.NamedPathSets = namedPathSets.ToArray(); }); RunDlg <ImportResultsNameDlg>(importResultsDlg.OkDialog, importResultsNameDlg => importResultsNameDlg.NoDialog()); WaitForGraphs(); RunUI(() => { SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 0); Settings.Default.ArrangeGraphsOrder = GroupGraphsOrder.Document.ToString(); Settings.Default.ArrangeGraphsReversed = false; SkylineWindow.ArrangeGraphsTiled(); SkylineWindow.AutoZoomBestPeak(); }); WaitForCondition(() => Equals(8, SkylineWindow.GraphChromatograms.Count(graphChrom => !graphChrom.IsHidden)), "unexpected visible graphChromatogram count"); WaitForCondition(10 * 60 * 1000, // ten minutes () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); PauseForScreenShot("Main window with imported data", 9); // Analyzing SRM Data from FOXN1-GST Sample p. 9 RunDlg <ImportResultsDlg>(SkylineWindow.ImportResults, importResultsDlg1 => { var rawFiles = DataSourceUtil.GetDataSources(TestFilesDirs[0].FullPath).First().Value.Take(1); var namedPathSets = from rawFile in rawFiles select new KeyValuePair <string, MsDataFileUri[]>( rawFile.GetFileNameWithoutExtension(), new[] { rawFile }); importResultsDlg1.NamedPathSets = namedPathSets.ToArray(); importResultsDlg1.OkDialog(); }); WaitForGraphs(); CheckReportCompatibility.CheckAll(SkylineWindow.Document); WaitForCondition(5 * 60 * 1000, // five minutes () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); RunUI(() => { SkylineWindow.ToggleIntegrateAll(); SkylineWindow.ArrangeGraphsTabbed(); SkylineWindow.ShowRTReplicateGraph(); SkylineWindow.ShowPeakAreaReplicateComparison(); // Total normalization SkylineWindow.NormalizeAreaGraphTo(AreaNormalizeToView.area_percent_view); }); RunUI(() => SkylineWindow.ActivateReplicate("FOXN1-GST")); WaitForGraphs(); RunUI(() => SkylineWindow.SelectedPath = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.TransitionGroups, 0)); WaitForGraphs(); RunUI(() => { Assert.AreEqual(SkylineWindow.SelectedResultsIndex, SkylineWindow.GraphPeakArea.ResultsIndex); Assert.AreEqual(SkylineWindow.SelectedResultsIndex, SkylineWindow.GraphRetentionTime.ResultsIndex); }); RunUI(() => { int transitionCount = SkylineWindow.DocumentUI.PeptideTransitionGroups.First().TransitionCount; CheckGstGraphs(transitionCount, transitionCount); }); PauseForScreenShot("Main window with Peak Areas, Retention Times and FOXN1-GST for light", 10); RunUI(() => SkylineWindow.SelectedPath = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.TransitionGroups, 1)); WaitForGraphs(); RunUI(() => { int transitionCount = SkylineWindow.DocumentUI.PeptideTransitionGroups.ToArray()[1].TransitionCount; CheckGstGraphs(transitionCount, transitionCount); }); PauseForScreenShot("Main window with Peak Areas, Retention Times and FOXN1-GST for heavy", 10); RunUI(() => SkylineWindow.SelectedPath = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.Molecules, 0)); WaitForGraphs(); // Heavy normalization RunUI(() => SkylineWindow.NormalizeAreaGraphTo(AreaNormalizeToView.area_ratio_view)); WaitForGraphs(); RunUI(() => { int transitionGroupCount = SkylineWindow.DocumentUI.Peptides.First().TransitionGroupCount; CheckGstGraphs(transitionGroupCount, transitionGroupCount - 1); }); PauseForScreenShot("Main window with totals graphs for light and heavy and FOXN1-GST", 11); // Peptide Quantitification Settings p. 11 var peptideSettingsUi = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); const string quantUnits = "fmol/ul"; RunUI(() => { peptideSettingsUi.SelectedTab = PeptideSettingsUI.TABS.Quantification; peptideSettingsUi.QuantRegressionFit = RegressionFit.LINEAR; peptideSettingsUi.QuantNormalizationMethod = new NormalizationMethod.RatioToLabel(IsotopeLabelType.heavy); peptideSettingsUi.QuantUnits = quantUnits; }); PauseForScreenShot("Peptide Settings Quantification Tab", 12); OkDialog(peptideSettingsUi, peptideSettingsUi.OkDialog); // Specify analyte concentrations of external standards RunUI(() => SkylineWindow.ShowDocumentGrid(true)); var documentGridForm = FindOpenForm <DocumentGridForm>(); RunUI(() => { documentGridForm.ChooseView(Resources.SkylineViewContext_GetDocumentGridRowSources_Replicates); }); WaitForConditionUI(() => documentGridForm.IsComplete); var concentrations = new[] { 40, 12.5, 5, 2.5, 1, .5, .25, .1 }; for (int iRow = 0; iRow < concentrations.Length; iRow++) { // ReSharper disable AccessToModifiedClosure RunUI(() => { var colSampleType = documentGridForm.FindColumn(PropertyPath.Root.Property("SampleType")); documentGridForm.DataGridView.Rows[iRow].Cells[colSampleType.Index].Value = SampleType.STANDARD; }); WaitForConditionUI(() => documentGridForm.IsComplete); RunUI(() => { var colAnalyteConcentration = documentGridForm.FindColumn(PropertyPath.Root.Property("AnalyteConcentration")); var cell = documentGridForm.DataGridView.Rows[iRow].Cells[colAnalyteConcentration.Index]; documentGridForm.DataGridView.CurrentCell = cell; cell.Value = concentrations[iRow]; }); // ReSharper restore AccessToModifiedClosure WaitForConditionUI(() => documentGridForm.IsComplete); } PauseForScreenShot("Document grid with concentrations filled in", 13); // View the calibration curve p. 13 RunUI(() => SkylineWindow.ShowCalibrationForm()); var calibrationForm = FindOpenForm <CalibrationForm>(); PauseForScreenShot("View calibration curve", 14); Assert.AreEqual(CalibrationCurveFitter.AppendUnits(QuantificationStrings.Analyte_Concentration, quantUnits), calibrationForm.ZedGraphControl.GraphPane.XAxis.Title.Text); Assert.AreEqual(string.Format(QuantificationStrings.CalibrationCurveFitter_PeakAreaRatioText__0___1__Peak_Area_Ratio, IsotopeLabelType.light.Title, IsotopeLabelType.heavy.Title), calibrationForm.ZedGraphControl.GraphPane.YAxis.Title.Text); }
protected override void DoTest() { RunUI(() => { SkylineWindow.ResetDefaultSettings(); SkylineWindow.NewDocument(); }); ShowAndPositionAuditLog(false); PauseForScreenShot <AuditLogForm>("Empty Audit Log form.", 2); // Configuring Settings for Inserting a New Peptide, p. 3 { var doc = SkylineWindow.Document; var transitionSettingsUI = ShowDialog <TransitionSettingsUI>(SkylineWindow.ShowTransitionSettingsUI); RunUI(() => { // Filter Settings transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.Filter; transitionSettingsUI.RangeFrom = Resources.TransitionFilter_FragmentStartFinders_ion_3; transitionSettingsUI.RangeTo = Resources.TransitionFilter_FragmentEndFinders_last_ion_minus_1; }); OkDialog(transitionSettingsUI, transitionSettingsUI.OkDialog); WaitForDocumentChange(doc); } PeptideSettingsUI peptideSettingsUi = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => peptideSettingsUi.SelectedTab = PeptideSettingsUI.TABS.Modifications); var modHeavyK = new StaticMod("Label:13C(6)15N(2) (C-term K)", "K", ModTerminus.C, false, null, LabelAtoms.C13 | LabelAtoms.N15, RelativeRT.Matching, null, null, null); AddHeavyMod(modHeavyK, peptideSettingsUi); RunUI(() => peptideSettingsUi.PickedHeavyMods = new[] { modHeavyK.Name }); OkDialog(peptideSettingsUi, peptideSettingsUi.OkDialog); PauseForScreenShot <AuditLogForm>("Audit Log form with settings modifications.", 4); RunUI(() => { SkylineWindow.AuditLogForm.Close(); SkylineWindow.Width = 1010; }); PauseForScreenShot("Undo list expanded. (manual)", 4); RunUI(SkylineWindow.Undo); PauseForScreenShot("Redo list expanded. (manual)", 5); RunUI(SkylineWindow.Redo); // Inserting a peptide sequence p. 5 using (new CheckDocumentState(1, 1, 2, 10)) { WaitForProteinMetadataBackgroundLoaderCompletedUI(); var pasteDlg = ShowDialog <PasteDlg>(SkylineWindow.ShowPastePeptidesDlg); RunUI(() => SetClipboardText("IEAIPQIDK\tGST-tag")); RunUI(pasteDlg.PastePeptides); RunUI(() => { pasteDlg.Size = new Size(700, 210); pasteDlg.Top = SkylineWindow.Bottom + 20; }); PauseForScreenShot <PasteDlg.PeptideListTab>("Insert Peptide List", 6); using (new WaitDocumentChange()) { OkDialog(pasteDlg, pasteDlg.OkDialog); } WaitForConditionUI(() => SkylineWindow.SequenceTree.Nodes.Count > 0); } RunUI(() => { SkylineWindow.ExpandPrecursors(); SkylineWindow.Height = 390; }); PauseForScreenShot("Main window with Targets view", 6); ShowAndPositionAuditLog(true); PauseForScreenShot <AuditLogForm>("Audit Log form with inserted peptide.", 7); ShowLastExtraInfo("Extra info form with inserted peptide info.", 7); string documentPath = GetTestPath("AuditLogTutorial" + SrmDocument.EXT); RunUI(() => SkylineWindow.SaveDocument(documentPath)); WaitForCondition(() => File.Exists(documentPath)); // Importing RAW files into Skyline p. 7 var importResultsDlg = ShowDialog <ImportResultsDlg>(SkylineWindow.ImportResults); RunUI(() => { var rawFiles = DataSourceUtil.GetDataSources(TestFilesDirs[0].FullPath).First().Value; var namedPathSets = from rawFile in rawFiles select new KeyValuePair <string, MsDataFileUri[]>( rawFile.GetFileNameWithoutExtension(), new[] { rawFile }); importResultsDlg.NamedPathSets = namedPathSets.ToArray(); }); OkDialog(importResultsDlg, importResultsDlg.OkDialog); WaitForGraphs(); RunUI(() => { SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 0); Settings.Default.ArrangeGraphsOrder = GroupGraphsOrder.Document.ToString(); Settings.Default.ArrangeGraphsReversed = false; SkylineWindow.ArrangeGraphsTabbed(); SkylineWindow.AutoZoomBestPeak(); }); WaitForCondition(() => Equals(9, SkylineWindow.GraphChromatograms.Count(graphChrom => !graphChrom.IsHidden)), "unexpected visible graphChromatogram count"); WaitForCondition(10 * 60 * 1000, // ten minutes () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); PauseForScreenShot <AuditLogForm>("Audit Log form with imported data files.", 9); ShowLastExtraInfo("Extra info form for the import.", 9); // Peptide Quantitification Settings p. 9 peptideSettingsUi = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => peptideSettingsUi.SelectedTab = (PeptideSettingsUI.TABS) 5); const string quantUnits = "fmol/ul"; RunUI(() => { peptideSettingsUi.QuantRegressionFit = RegressionFit.LINEAR; peptideSettingsUi.QuantNormalizationMethod = new NormalizationMethod.RatioToLabel(IsotopeLabelType.heavy); peptideSettingsUi.QuantUnits = quantUnits; }); OkDialog(peptideSettingsUi, peptideSettingsUi.OkDialog); PauseForScreenShot <AuditLogForm>("Audit Log form with quantification settings.", 10); // Specify analyte concentrations of external standards RunUI(() => { SkylineWindow.AuditLogForm.Close(); SkylineWindow.ShowDocumentGrid(true); }); var documentGridForm = FindOpenForm <DocumentGridForm>(); RunUI(() => { documentGridForm.ChooseView(Resources.SkylineViewContext_GetDocumentGridRowSources_Replicates); }); WaitForConditionUI(() => documentGridForm.IsComplete); var concentrations = new[] { 40, 12.5, 5, 2.5, 1, .5, .25, .1 }; string pasteString = TextUtil.LineSeparate(concentrations.Select((f, i) => QuantificationStrings.SampleType_STANDARD_Standard + "\t" + f)); ClipboardEx.SetText(pasteString); using (new WaitDocumentChange()) { RunUI(() => { var colSampleType = documentGridForm.FindColumn(PropertyPath.Root.Property("SampleType")); documentGridForm.DataGridView.CurrentCell = documentGridForm.DataGridView.Rows[1].Cells[colSampleType.Index]; documentGridForm.DataGridView.SendPaste(); }); } // ReSharper restore AccessToModifiedClosure WaitForConditionUI(() => documentGridForm.IsComplete); RunUI(() => { var gridFloatingWindow = documentGridForm.Parent.Parent; gridFloatingWindow.Size = new Size(370, 315); gridFloatingWindow.Top = SkylineWindow.Bottom + 20; }); PauseForScreenShot <DocumentGridForm>("Document grid with concentrations filled in", 11); RunUI(documentGridForm.Close); ShowAndPositionAuditLog(true); PauseForScreenShot <AuditLogForm>("Audit Log form with grid changes", 12); ShowLastExtraInfo("Extra Info for the analyte data import.", 12); RunUI(SkylineWindow.AuditLogForm.Close); const string unknownReplicate = "FOXN1-GST"; RestoreViewOnScreen(13); ActivateReplicate(unknownReplicate); SelectNode(SrmDocument.Level.TransitionGroups, 1); RunUI(() => SkylineWindow.Size = new Size(936, 527)); WaitForGraphs(); PauseForScreenShot("Heavy precursor chromatogram", 13); RunUI(() => { var pathHeavy = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.TransitionGroups, 1); var graphChrom = SkylineWindow.GetGraphChrom(unknownReplicate); Assert.IsNotNull(graphChrom); Assert.AreEqual(unknownReplicate, graphChrom.NameSet); var firstGroupInfo = graphChrom.ChromGroupInfos.FirstOrDefault(); Assert.IsNotNull(firstGroupInfo, "Missing group info"); var firstChromItem = graphChrom.GraphItems.FirstOrDefault(gci => gci.TransitionChromInfo != null); Assert.IsNotNull(firstChromItem, "Missing graph item"); var listChanges = new List <ChangedPeakBoundsEventArgs> { new ChangedPeakBoundsEventArgs(pathHeavy, null, graphChrom.NameSet, firstGroupInfo.FilePath, firstChromItem.GetValidPeakBoundaryTime(20.65), firstChromItem.GetValidPeakBoundaryTime(21.15), PeakIdentification.FALSE, PeakBoundsChangeType.both) }; graphChrom.SimulateChangedPeakBounds(listChanges); }); ShowAndPositionAuditLog(true, 50, 200); WaitForConditionUI(500, () => SkylineWindow.AuditLogForm.DataGridView.Rows.Count > 0); PauseForScreenShot <AuditLogForm>("Audit Log form with changed integration boundary.", 14); int reasonIndex = 2; using (new WaitDocumentChange()) { RunUI(() => { var pathReason = PropertyPath.Root.Property("Reason"); var colReason = SkylineWindow.AuditLogForm.FindColumn(pathReason); reasonIndex = colReason.Index; SetCellValue(SkylineWindow.AuditLogForm.DataGridView, 0, reasonIndex, "Changed peak integration as instructed by the tutorial"); }); } RunUI(() => SkylineWindow.AuditLogForm.DataGridView.AutoResizeColumn(reasonIndex)); SetGridFormToFullWidth(SkylineWindow.AuditLogForm); PauseForScreenShot <AuditLogForm>("Audit Log form with updated reason.", 14); // View the calibration curve p. 15 RunUI(() => SkylineWindow.ShowCalibrationForm()); var calibrationForm = FindOpenForm <CalibrationForm>(); var priorZoomState = ZoomCalibrationCurve(calibrationForm, 0.52); RunUI(() => { Assert.AreEqual(CalibrationCurveFitter.AppendUnits(QuantificationStrings.Analyte_Concentration, quantUnits), calibrationForm.ZedGraphControl.GraphPane.XAxis.Title.Text); Assert.AreEqual(string.Format(QuantificationStrings.CalibrationCurveFitter_PeakAreaRatioText__0___1__Peak_Area_Ratio, IsotopeLabelType.light.Title, IsotopeLabelType.heavy.Title), calibrationForm.ZedGraphControl.GraphPane.YAxis.Title.Text); VerifyCalibrationCurve(calibrationForm, 5.4065E-1, -2.9539E-1, 0.999); }); PauseForScreenShot <CalibrationForm>("Calibration curve zoomed", 15); RunUI(() => { priorZoomState?.ApplyState(calibrationForm.ZedGraphControl.GraphPane); var chromatograms = SkylineWindow.DocumentUI.Settings.MeasuredResults.Chromatograms; new [] { 5, 6, 7, 8 }.ForEach((index) => { int replicateIdx = chromatograms.IndexOf((ch) => ch.Name.Equals("Standard_" + index)); Assert.IsTrue(replicateIdx >= 0); using (var excludeStandardMenu = calibrationForm.MakeExcludeStandardMenuItem(replicateIdx)) { excludeStandardMenu?.PerformClick(); } }); }); WaitForGraphs(); RunUI(() => VerifyCalibrationCurve(calibrationForm, 5.52E-1, -6.3678E-1, 1)); OkDialog(calibrationForm, calibrationForm.Close); PauseForScreenShot <AuditLogForm>("Audit Log with excluded standard records", 16); PauseForScreenShot <AuditLogForm>("Audit Log Reports menu (manual)", 16); // TODO(nicksh): Audit log reason field does not currently support fill down // RunUI(() => // { // SetCellValue(SkylineWindow.AuditLogForm.DataGridView, 0, reasonIndex, "Excluded standard below LOD"); // for (int i = 0; i < 4; i++) // SkylineWindow.AuditLogForm.DataGridView.Rows[i].Cells[reasonIndex].Selected = true; // }); // RunUI(() => SkylineWindow.AuditLogForm.DataboundGridControl.FillDown()); RunUI(() => { for (int i = 0; i < 4; i++) { SetCellValue(SkylineWindow.AuditLogForm.DataGridView, i, reasonIndex, "Excluded standard below LOD"); } }); RunUI(() => { SkylineWindow.AuditLogForm.ChooseView(AuditLogStrings.AuditLogForm_MakeAuditLogForm_Undo_Redo); }); SetGridFormToFullWidth(SkylineWindow.AuditLogForm); RunUI(() => { var floatingWindow = SkylineWindow.AuditLogForm.Parent.Parent; floatingWindow.Height = 334; floatingWindow.Width -= 15; }); PauseForScreenShot <AuditLogForm>("Audit Log with UndoRedo view.", 17); if (IsCoverShotMode) { RunUI(() => { SkylineWindow.ChangeTextSize(TreeViewMS.LRG_TEXT_FACTOR); }); RestoreCoverViewOnScreen(); var calibrationCoverForm = WaitForOpenForm <CalibrationForm>(); ZoomCalibrationCurve(calibrationCoverForm, 0.53); var floatingLogWindow = SkylineWindow.AuditLogForm.Parent.Parent; var floatingCalWindow = calibrationCoverForm.Parent.Parent; RunUI(() => { floatingLogWindow.Top = SkylineWindow.Bottom - floatingLogWindow.Height - 8; floatingLogWindow.Left = (SkylineWindow.Left + SkylineWindow.Right) / 2 - floatingLogWindow.Width / 2; floatingCalWindow.Top = SkylineWindow.Top + 8; floatingCalWindow.Left = SkylineWindow.Right - floatingCalWindow.Width - 8; SkylineWindow.AuditLogForm.DataGridView.AutoResizeColumn(reasonIndex); SkylineWindow.AuditLogForm.DataGridView.AutoResizeColumn(reasonIndex - 1); }); TakeCoverShot(); } var customizeDialog = ShowDialog <ViewEditor>(SkylineWindow.AuditLogForm.NavBar.CustomizeView); RunUI(() => { customizeDialog.ViewName = "Custom Columns"; var columnsToAdd = new[] { PropertyPath.Parse("SkylineVersion"), PropertyPath.Parse("User"), }; foreach (var id in columnsToAdd) { Assert.IsTrue(customizeDialog.ChooseColumnsTab.TrySelect(id), "Unable to select {0}", id); customizeDialog.ChooseColumnsTab.AddSelectedColumn(); } customizeDialog.Height = 370; }); PauseForScreenShot <ViewEditor.ChooseColumnsView>("Custom Columns report template", 17); OkDialog(customizeDialog, customizeDialog.OkDialog); SetGridFormToFullWidth(SkylineWindow.AuditLogForm); RunUI(() => SkylineWindow.AuditLogForm.Parent.Parent.Height += 10); // Extra for 2-line headers PauseForScreenShot <AuditLogForm>("Audit Log with custom view.", 18); var registrationDialog = ShowDialog <MultiButtonMsgDlg>(() => SkylineWindow.ShowPublishDlg(null)); PauseForScreenShot <MultiButtonMsgDlg>("Upload confirmation dialog.", 19); var loginDialog = ShowDialog <EditServerDlg>(registrationDialog.ClickNo); PauseForScreenShot <EditServerDlg>("Login dialog.", 20); RunUI(() => { loginDialog.URL = SERVER_URL; loginDialog.Username = PANORAMA_USER_NAME; }); if (!IsPauseForScreenShots) { OkDialog(loginDialog, loginDialog.CancelButton.PerformClick); } else { PauseTest("Enter password. (manual) No screen shot."); var publishDialog = ShowDialog <PublishDocumentDlg>(loginDialog.OkDialog); WaitForCondition(() => publishDialog.IsLoaded); RunUI(() => { publishDialog.SelectItem(testFolderName); }); PauseForScreenShot <PublishDocumentDlg>("Folder selection dialog.", 21); var browserConfirmationDialog = ShowDialog <MultiButtonMsgDlg>(publishDialog.OkDialog); OkDialog(browserConfirmationDialog, browserConfirmationDialog.ClickYes); PauseForScreenShot("Uploaded document in Panorama (in browser)."); Regex reDocId = new Regex(@"\?id=([0-9]+)"); Assert.IsTrue(reDocId.IsMatch(publishDialog.PanoramaPublishClient.UploadedDocumentUri.ToString())); string docId = reDocId.Match(publishDialog.PanoramaPublishClient.UploadedDocumentUri.ToString()).Groups[1].Captures[0].Value; Uri serverUri = new Uri(SERVER_URL); Uri requestUri = PanoramaUtil.Call(serverUri, "targetedms", String.Format("{0}/{1}", PANORAMA_FOLDER, testFolderName), "showSkylineAuditLog", "id=" + docId); Process.Start(requestUri.ToString()); PauseForScreenShot("Uploaded document audit log in Panorama (in browser)."); } }
protected override void DoTest() { var folderAbsoluteQuant = UseRawFiles ? "AbsoluteQuant" : "AbsoluteQuantMzml"; // Generating a Transition List, p. 4 { var doc = SkylineWindow.Document; var transitionSettingsUI = ShowDialog <TransitionSettingsUI>(SkylineWindow.ShowTransitionSettingsUI); RunUI(() => { // Predicition Settings transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.Prediction; transitionSettingsUI.PrecursorMassType = MassType.Monoisotopic; transitionSettingsUI.FragmentMassType = MassType.Monoisotopic; transitionSettingsUI.RegressionCEName = "Thermo TSQ Vantage"; transitionSettingsUI.RegressionDPName = Resources.SettingsList_ELEMENT_NONE_None; }); PauseForScreenShot <TransitionSettingsUI.PredictionTab>("Transition Settings - Prediction tab", 4); RunUI(() => { // Filter Settings transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.Filter; transitionSettingsUI.PrecursorCharges = "2"; transitionSettingsUI.ProductCharges = "1"; transitionSettingsUI.FragmentTypes = "y"; transitionSettingsUI.RangeFrom = Resources.TransitionFilter_FragmentStartFinders_ion_3; transitionSettingsUI.RangeTo = Resources.TransitionFilter_FragmentEndFinders_last_ion_minus_1; transitionSettingsUI.SpecialIons = new string[0]; }); PauseForScreenShot <TransitionSettingsUI.FilterTab>("Transition Settings - Filter tab", 4); OkDialog(transitionSettingsUI, transitionSettingsUI.OkDialog); WaitForDocumentChange(doc); } // Configuring Peptide settings p. 4 PeptideSettingsUI peptideSettingsUI = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => peptideSettingsUI.SelectedTab = PeptideSettingsUI.TABS.Modifications); PauseForScreenShot <PeptideSettingsUI.ModificationsTab>("Peptide Settings - Modification tab", 5); var modHeavyK = new StaticMod("Label:13C(6)15N(2) (C-term K)", "K", ModTerminus.C, false, null, LabelAtoms.C13 | LabelAtoms.N15, RelativeRT.Matching, null, null, null); AddHeavyMod(modHeavyK, peptideSettingsUI, "Edit Isotope Modification over Transition Settings", 5); RunUI(() => peptideSettingsUI.PickedHeavyMods = new[] { modHeavyK.Name }); PauseForScreenShot <PeptideSettingsUI.ModificationsTab>("Peptide Settings - Modification tab with mod added", 5); OkDialog(peptideSettingsUI, peptideSettingsUI.OkDialog); // Inserting a peptide sequence p. 5 using (new CheckDocumentState(1, 1, 2, 10)) { RunUI(() => SetClipboardText("IEAIPQIDK\tGST-tag")); var pasteDlg = ShowDialog <PasteDlg>(SkylineWindow.ShowPastePeptidesDlg); RunUI(pasteDlg.PastePeptides); WaitForProteinMetadataBackgroundLoaderCompletedUI(); PauseForScreenShot <PasteDlg.PeptideListTab>("Insert Peptide List", 6); OkDialog(pasteDlg, pasteDlg.OkDialog); } RunUI(SkylineWindow.ExpandPrecursors); RunUI(() => SkylineWindow.SaveDocument(TestFilesDir.GetTestPath(folderAbsoluteQuant + @"test_file.sky"))); WaitForCondition(() => File.Exists(TestFilesDir.GetTestPath(folderAbsoluteQuant + @"test_file.sky"))); PauseForScreenShot("Main window with Targets view", 6); // Exporting a transition list p. 6 { var exportMethodDlg = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.List)); RunUI(() => { exportMethodDlg.InstrumentType = ExportInstrumentType.THERMO; exportMethodDlg.ExportStrategy = ExportStrategy.Single; exportMethodDlg.OptimizeType = ExportOptimize.NONE; exportMethodDlg.MethodType = ExportMethodType.Standard; }); PauseForScreenShot <ExportMethodDlg.TransitionListView>("Export Transition List", 7); OkDialog(exportMethodDlg, () => exportMethodDlg.OkDialog(TestFilesDir.GetTestPath("Quant_Abs_Thermo_TSQ_Vantage.csv"))); } // Importing RAW files into Skyline p. 7 var importResultsDlg = ShowDialog <ImportResultsDlg>(SkylineWindow.ImportResults); PauseForScreenShot <ImportResultsDlg>("Import Results - click OK to get shot of Import Results Files and then cancel", 8); RunUI(() => { var rawFiles = DataSourceUtil.GetDataSources(TestFilesDirs[0].FullPath).First().Value.Skip(1); var namedPathSets = from rawFile in rawFiles select new KeyValuePair <string, MsDataFileUri[]>( rawFile.GetFileNameWithoutExtension(), new[] { rawFile }); importResultsDlg.NamedPathSets = namedPathSets.ToArray(); }); RunDlg <ImportResultsNameDlg>(importResultsDlg.OkDialog, importResultsNameDlg => importResultsNameDlg.NoDialog()); WaitForGraphs(); RunUI(() => { SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 0); Settings.Default.ArrangeGraphsOrder = GroupGraphsOrder.Document.ToString(); Settings.Default.ArrangeGraphsReversed = false; SkylineWindow.ArrangeGraphsTiled(); SkylineWindow.AutoZoomBestPeak(); }); WaitForCondition(() => Equals(8, SkylineWindow.GraphChromatograms.Count(graphChrom => !graphChrom.IsHidden)), "unexpected visible graphChromatogram count"); WaitForCondition(10 * 60 * 1000, // ten minutes () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); PauseForScreenShot("Main window with imported data", 9); // Analyzing SRM Data from FOXN1-GST Sample p. 9 RunDlg <ImportResultsDlg>(SkylineWindow.ImportResults, importResultsDlg1 => { var rawFiles = DataSourceUtil.GetDataSources(TestFilesDirs[0].FullPath).First().Value.Take(1); var namedPathSets = from rawFile in rawFiles select new KeyValuePair <string, MsDataFileUri[]>( rawFile.GetFileNameWithoutExtension(), new[] { rawFile }); importResultsDlg1.NamedPathSets = namedPathSets.ToArray(); importResultsDlg1.OkDialog(); }); WaitForGraphs(); CheckReportCompatibility.CheckAll(SkylineWindow.Document); WaitForCondition(5 * 60 * 1000, // five minutes () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); RunUI(() => { SkylineWindow.ToggleIntegrateAll(); SkylineWindow.ArrangeGraphsTabbed(); SkylineWindow.ShowRTReplicateGraph(); SkylineWindow.ShowPeakAreaReplicateComparison(); // Total normalization SkylineWindow.NormalizeAreaGraphTo(AreaNormalizeToView.area_percent_view); }); RunUI(() => SkylineWindow.ActivateReplicate("FOXN1-GST")); WaitForGraphs(); RunUI(() => SkylineWindow.SelectedPath = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.TransitionGroups, 0)); WaitForGraphs(); RunUI(() => { Assert.AreEqual(SkylineWindow.SelectedResultsIndex, SkylineWindow.GraphPeakArea.ResultsIndex); Assert.AreEqual(SkylineWindow.SelectedResultsIndex, SkylineWindow.GraphRetentionTime.ResultsIndex); }); RunUI(() => { int transitionCount = SkylineWindow.DocumentUI.PeptideTransitionGroups.First().TransitionCount; CheckGstGraphs(transitionCount, transitionCount); }); PauseForScreenShot("Main window with Peak Areas, Retention Times and FOXN1-GST for light", 10); RunUI(() => SkylineWindow.SelectedPath = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.TransitionGroups, 1)); WaitForGraphs(); RunUI(() => { int transitionCount = SkylineWindow.DocumentUI.PeptideTransitionGroups.ToArray()[1].TransitionCount; CheckGstGraphs(transitionCount, transitionCount); }); PauseForScreenShot("Main window with Peak Areas, Retention Times and FOXN1-GST for heavy", 10); RunUI(() => SkylineWindow.SelectedPath = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.Molecules, 0)); WaitForGraphs(); // Heavy normalization RunUI(() => SkylineWindow.NormalizeAreaGraphTo(AreaNormalizeToView.area_ratio_view)); WaitForGraphs(); RunUI(() => { int transitionGroupCount = SkylineWindow.DocumentUI.Peptides.First().TransitionGroupCount; CheckGstGraphs(transitionGroupCount, transitionGroupCount - 1); }); PauseForScreenShot("Main window with totals graphs for light and heavy and FOXN1-GST", 11); const int columnsToAddCount = 4; var columnSeparator = TextUtil.CsvSeparator; // Generating a Calibration Curve p. 11 var exportLiveReportDlg = ShowDialog <ExportLiveReportDlg>(SkylineWindow.ShowExportReportDialog); var editReportListDlg = ShowDialog <ManageViewsForm>(exportLiveReportDlg.EditList); const string reportName = "Peptide Ratio Results Test"; var columnsToAdd = new[] { PropertyPath.Parse("Proteins!*.Peptides!*.Sequence"), PropertyPath.Parse("Proteins!*.Name"), PropertyPath.Parse("Replicates!*.Name"), PropertyPath.Parse("Proteins!*.Peptides!*.Results!*.Value.RatioToStandard"), }; Assert.AreEqual(columnsToAddCount, columnsToAdd.Length); { var viewEditor = ShowDialog <ViewEditor>(editReportListDlg.AddView); RunUI(() => { viewEditor.ViewName = reportName; foreach (var id in columnsToAdd) { Assert.IsTrue(viewEditor.ChooseColumnsTab.TrySelect(id), "Unable to select {0}", id); viewEditor.ChooseColumnsTab.AddSelectedColumn(); } Assert.AreEqual(columnsToAdd.Length, viewEditor.ChooseColumnsTab.ColumnCount); }); // TODO: MultiViewProvider not yet supported in Common PauseForScreenShot <ViewEditor>("Edit Report form", 12); OkDialog(viewEditor, viewEditor.OkDialog); } RunUI(editReportListDlg.OkDialog); WaitForClosedForm(editReportListDlg); RunUI(() => { exportLiveReportDlg.ReportName = reportName; exportLiveReportDlg.OkDialog(TestFilesDir.GetTestPath("Calibration.csv"), columnSeparator); }); // Check if export file is correct. string filePath = TestFilesDir.GetTestPath("Calibration.csv"); Assert.IsTrue(File.Exists(filePath)); string[] lines = File.ReadAllLines(filePath); string[] line0 = lines[0].Split(columnSeparator); int count = line0.Length; Assert.IsTrue(lines.Count() == SkylineWindow.Document.Settings.MeasuredResults.Chromatograms.Count + 1); Assert.AreEqual(columnsToAddCount, count); // Check export file data double ratio1 = Double.Parse(lines[1].Split(new[] { columnSeparator }, 4)[3]); double ratio2 = Double.Parse(lines[2].Split(new[] { columnSeparator }, 4)[3]); double ratio3 = Double.Parse(lines[3].Split(new[] { columnSeparator }, 4)[3]); double ratio4 = Double.Parse(lines[4].Split(new[] { columnSeparator }, 4)[3]); double ratio5 = Double.Parse(lines[5].Split(new[] { columnSeparator }, 4)[3]); double ratio6 = Double.Parse(lines[6].Split(new[] { columnSeparator }, 4)[3]); double ratio7 = Double.Parse(lines[7].Split(new[] { columnSeparator }, 4)[3]); double ratio8 = Double.Parse(lines[8].Split(new[] { columnSeparator }, 4)[3]); double ratio9 = Double.Parse(lines[9].Split(new[] { columnSeparator }, 4)[3]); Assert.AreEqual(21.4513, ratio1, 0.1); Assert.AreEqual(6.2568, ratio2, 0.1); Assert.AreEqual(2.0417, ratio3, 0.1); Assert.AreEqual(0.8244, ratio4, 0.1); Assert.AreEqual(0.2809, ratio5, 0.1); Assert.AreEqual(0.1156, ratio6, 0.1); Assert.AreEqual(0.0819, ratio7, 0.1); Assert.AreEqual(0.0248, ratio8, 0.1); Assert.AreEqual(0.7079, ratio9, 0.1); CheckReportCompatibility.CheckAll(SkylineWindow.Document); }