private static void CheckGstGraphs(int rtCurveCount, int areaCurveCount) { var graphChrom = SkylineWindow.GetGraphChrom("FOXN1-GST"); Assert.IsNotNull(graphChrom); Assert.IsTrue(graphChrom.BestPeakTime.HasValue); Assert.AreEqual(20.9, graphChrom.BestPeakTime.Value, 0.05); Assert.AreEqual(rtCurveCount, SkylineWindow.RTGraphController.GraphSummary.CurveCount); Assert.AreEqual(9, SkylineWindow.RTGraphController.GraphSummary.Categories.Count()); Assert.AreEqual(areaCurveCount, SkylineWindow.GraphPeakArea.Controller.GraphSummary.CurveCount); Assert.AreEqual(9, SkylineWindow.GraphPeakArea.Controller.GraphSummary.Categories.Count()); }
private void TestOriginalPeak() { RunUI(() => { SkylineWindow.ActivateReplicate("1"); }); WaitForGraphs(); var graphChrom = SkylineWindow.GetGraphChrom("1"); // If the entire graph object list may be empty when the graph is offscreen // It is not worth it to make this work. if (!graphChrom.GraphItem.GraphObjList.Any() && Program.SkylineOffscreen) { return; } var norect = GetChromRect(graphChrom); Assert.IsNull(norect); RunUI(() => { var pathPep = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.Molecules, 0); var nodeGroup = SkylineWindow.DocumentUI.Peptides.ElementAt(0).TransitionGroups.First(); var listChanges = new List <ChangedPeakBoundsEventArgs> { new ChangedPeakBoundsEventArgs(new IdentityPath(pathPep, nodeGroup.TransitionGroup), null, graphChrom.NameSet, graphChrom.ChromGroupInfos[0].FilePath, graphChrom.GraphItems.First().GetNearestDisplayTime(40.0), graphChrom.GraphItems.First().GetNearestDisplayTime(42.0), PeakIdentification.ALIGNED, PeakBoundsChangeType.both) }; graphChrom.SimulateChangedPeakBounds(listChanges); }); WaitForGraphs(); var rect = GetChromRect(graphChrom); Assert.IsNotNull(rect); var tag = (ChromGraphItem.GraphObjTag)rect.Tag; Assert.AreEqual(tag.StartTime.DisplayTime.ToString("N2"), 40.31.ToString(CultureInfo.CurrentCulture)); Assert.AreEqual(tag.EndTime.DisplayTime.ToString("N2"), 41.21.ToString(CultureInfo.CurrentCulture)); Assert.IsNull(GetChromRect(SkylineWindow.GetGraphChrom("2"))); Assert.IsNull(GetChromRect(SkylineWindow.GetGraphChrom("3"))); Assert.IsNull(GetChromRect(SkylineWindow.GetGraphChrom("4"))); }
private static int GetRawTimeCount(string chromName) { var graphChrom = SkylineWindow.GetGraphChrom(chromName); // Graph objects will not be present when the program is off screen if (!graphChrom.GraphItem.GraphObjList.Any() && Program.SkylineOffscreen) { return(graphChrom.GraphItems.Sum(g => g.RawTimesCount)); } int count = 0; foreach (var graphObj in graphChrom.GraphItem.GraphObjList) { var objTag = graphObj.Tag as ChromGraphItem.GraphObjTag; if (objTag != null && objTag.GraphObjType == ChromGraphItem.GraphObjType.raw_time) { count++; } } return(count); }
protected override void DoTest() { // Skyline Targeted Method Refinement var folderMethodRefine = UseRawFiles ? "MethodRefine" : "MethodRefineMzml"; // Not L10N // Results Data, p. 2 var doc = SkylineWindow.Document; RunUI(() => SkylineWindow.OpenFile(TestFilesDirs[1].GetTestPath(folderMethodRefine + @"\WormUnrefined.sky"))); // Not L10N WaitForDocumentChangeLoaded(doc); RunUI(() => { // Adjust font sizes for better screen shots Settings.Default.ChromatogramFontSize = 14; Settings.Default.SpectrumFontSize = 14; SkylineWindow.ChangeTextSize(TreeViewMS.LRG_TEXT_FACTOR); SkylineWindow.SequenceTree.SelectedNode = SkylineWindow.SequenceTree.Nodes[0].Nodes[0]; SkylineWindow.AutoZoomBestPeak(); // TODO: Mention this in the tutorial SkylineWindow.Size = new Size(1160, 660); Assert.AreEqual(SkylineWindow.SequenceTree.SelectedNode.Text, "YLGAYLLATLGGNASPSAQDVLK"); // Not L10N }); PauseForScreenShot("Main window", 2); // TODO: Update tutorial to view b-ions. RunUI(() => SkylineWindow.GraphSpectrumSettings.ShowBIons = true); // Unrefined Methods, p. 3 { var exportDlg = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.List)); RunUI(() => { exportDlg.ExportStrategy = ExportStrategy.Buckets; exportDlg.MethodType = ExportMethodType.Standard; exportDlg.OptimizeType = ExportOptimize.NONE; exportDlg.MaxTransitions = 59; }); PauseForScreenShot("Export Transition List form", 3); // Not L10N OkDialog(exportDlg, () => exportDlg.OkDialog(TestFilesDirs[1].GetTestPath(folderMethodRefine + @"\worm"))); // Not L10N } for (int i = 1; i < 10; i++) { Assert.IsTrue(File.Exists(TestFilesDirs[1].GetTestPath(folderMethodRefine + @"\worm_000" + i + TextUtil.EXT_CSV))); // Not L10N } for (int i = 10; i < 40; i++) { Assert.IsTrue(File.Exists(TestFilesDirs[1].GetTestPath(folderMethodRefine + @"\worm_00" + i + TextUtil.EXT_CSV))); // Not L10N } // Importing Multiple Injection Data, p. 4 Assert.IsTrue(SkylineWindow.Document.Settings.HasResults); RunDlg <ManageResultsDlg>(SkylineWindow.ManageResults, manageResultsDlg => { manageResultsDlg.RemoveReplicates(); Assert.AreEqual(manageResultsDlg.Chromatograms.ToArray().Length, 0); manageResultsDlg.OkDialog(); }); RunUI(() => SkylineWindow.SaveDocument()); Assert.IsFalse(SkylineWindow.Document.Settings.HasResults); const string replicateName = "Unrefined"; // Not L10N RunDlg <ImportResultsDlg>(SkylineWindow.ImportResults, importResultsDlg => { importResultsDlg.RadioAddNewChecked = true; var namedPathSets = DataSourceUtil.GetDataSourcesInSubdirs(TestFilesDirs[0].FullPath).ToArray(); importResultsDlg.NamedPathSets = new[] { new KeyValuePair <string, MsDataFileUri[]>(replicateName, namedPathSets[0].Value.Take(15).ToArray()) }; importResultsDlg.OkDialog(); }); WaitForOpenForm <AllChromatogramsGraph>(); // To make the AllChromatogramsGraph form accessible to the SkylineTester forms tab PauseForScreenShot <AllChromatogramsGraph>("Loading Chromatograms: Take screenshot at about 25% loaded...", 5); WaitForCondition(15 * 60 * 1000, () => SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); // 15 minutes Assert.IsTrue(SkylineWindow.Document.Settings.HasResults); Assert.AreEqual(15, SkylineWindow.Document.Settings.MeasuredResults.CachedFilePaths.ToArray().Length); RunDlg <ImportResultsDlg>(SkylineWindow.ImportResults, importResultsDlg => { importResultsDlg.RadioAddExistingChecked = true; var namedPathSets = DataSourceUtil.GetDataSourcesInSubdirs(TestFilesDirs[0].FullPath).ToArray(); importResultsDlg.NamedPathSets = new[] { new KeyValuePair <string, MsDataFileUri[]>(replicateName, namedPathSets[0].Value.Skip(15).ToArray()) }; importResultsDlg.OkDialog(); }); WaitForCondition(20 * 60 * 1000, () => SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); // 15 minutes Assert.AreEqual(39, SkylineWindow.Document.Settings.MeasuredResults.CachedFilePaths.ToArray().Length); RunUI(SkylineWindow.AutoZoomNone); RestoreViewOnScreen(7); PauseForScreenShot("Chromatogram graph metafile", 7); // Simple Manual Refinement, p. 6 int startingNodeCount = SkylineWindow.SequenceTree.Nodes[0].GetNodeCount(false); Assert.AreEqual("YLGAYLLATLGGNASPSAQDVLK", SkylineWindow.SequenceTree.Nodes[0].Nodes[0].Text); // Not L10N RunUI(() => { SkylineWindow.SequenceTree.SelectedNode = SkylineWindow.SequenceTree.Nodes[0].Nodes[0]; SkylineWindow.AutoZoomNone(); SkylineWindow.AutoZoomBestPeak(); SkylineWindow.EditDelete(); SkylineWindow.ShowRTLinearRegressionGraph(); }); Assert.AreEqual(SkylineWindow.SequenceTree.Nodes[0].GetNodeCount(false), startingNodeCount - 1); Assert.AreEqual("VLEAGGLDCDMENANSVVDALK", SkylineWindow.SequenceTree.Nodes[0].Nodes[0].Text); // Not L10N PauseForScreenShot("Retention Times Regression plot metafile", 8); RunDlg <RegressionRTThresholdDlg>(SkylineWindow.ShowRegressionRTThresholdDlg, rtThresholdDlg => { rtThresholdDlg.Threshold = 0.95; rtThresholdDlg.OkDialog(); }); WaitForConditionUI(() => SkylineWindow.RTGraphController.RegressionRefined != null); WaitForGraphs(); PauseForScreenShot("Retention Times Regression plot metafile with 0.95 threshold", 9); // Not L10N TestRTResidualsSwitch(); RunDlg <EditRTDlg>(SkylineWindow.CreateRegression, editRTDlg => editRTDlg.OkDialog()); RunUI(() => SkylineWindow.ShowGraphRetentionTime(false)); RunUI(SkylineWindow.AutoZoomNone); PauseForScreenShot("Chromatogram graph metafile zoomed out", 10); // Not L10N // Missing Data, p. 10 RunUI(() => { SkylineWindow.RTGraphController.SelectPeptide(SkylineWindow.Document.GetPathTo(1, 163)); Assert.AreEqual("YLAEVASEDR", SkylineWindow.SequenceTree.SelectedNode.Text); // Not L10N }); RestoreViewOnScreen(11); // Restoring the view changes the selection RunUI(SkylineWindow.CollapsePeptides); FindNode("YLAEVASEDR"); RunUI(() => SkylineWindow.SequenceTree.TopNode = SkylineWindow.SequenceTree.Nodes[0].Nodes[153]); PauseForScreenShot("Targets view clipped from the main window", 11); RunUI(() => { var nodePep = (PeptideDocNode)((SrmTreeNode)SkylineWindow.SequenceTree.SelectedNode).Model; Assert.AreEqual(null, nodePep.GetPeakCountRatio( SkylineWindow.SequenceTree.GetDisplayResultsIndex(nodePep))); SkylineWindow.SequenceTree.SelectedPath = SkylineWindow.Document.GetPathTo(1, 157); Assert.AreEqual("VTVVDDQSVILK", SkylineWindow.SequenceTree.SelectedNode.Text); }); WaitForGraphs(); RunUI(() => { SkylineWindow.ActivateReplicate("Unrefined"); SkylineWindow.AutoZoomNone(); }); PauseForScreenShot("Unrefined chromatogram graph page clipped from main window", 12); // Not L10N // foreach (var peptideDocNode in SkylineWindow.Document.Peptides) // { // var nodeGroup = ((TransitionGroupDocNode)peptideDocNode.Children[0]); // Console.WriteLine("{0} - {1}", peptideDocNode.Peptide.Sequence, // nodeGroup.GetDisplayText(SkylineWindow.SequenceTree.GetDisplaySettings(peptideDocNode))); // } // Console.WriteLine("---------------------------------"); RunUI(() => { var graphChrom = SkylineWindow.GetGraphChrom("Unrefined"); // Not L10N Assert.AreEqual(2, graphChrom.Files.Count); SkylineWindow.SequenceTree.SelectedNode = SkylineWindow.SequenceTree.Nodes[0]; // Picking Measurable Peptides and Transitions, p. 12 SkylineWindow.ExpandPeptides(); SkylineWindow.SequenceTree.SelectedNode = SkylineWindow.SequenceTree.Nodes[0].Nodes[0]; }); RunUI(SkylineWindow.AutoZoomBestPeak); RestoreViewOnScreen(13); RunUI(() => SkylineWindow.ShowGraphSpectrum(false)); PauseForScreenShot("Targets view clipped from the main window and chromatogram graph metafile", 13); RunUI(() => SkylineWindow.ShowGraphSpectrum(true)); PauseForScreenShot("Library Match plot metafile", 14); RunUI(() => { SkylineWindow.ShowGraphSpectrum(false); SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Transitions, 0); SkylineWindow.SelectedNode.Expand(); SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 0); }); PauseForScreenShot("Targetes view clipped from the main window", 14); // Not L10N RunUI(() => { double dotpExpect = Math.Round(Statistics.AngleToNormalizedContrastAngle(0.78), 2); // 0.57 AssertEx.Contains(SkylineWindow.SequenceTree.SelectedNode.Nodes[0].Text, dotpExpect.ToString(LocalizationHelper.CurrentCulture)); SkylineWindow.EditDelete(); dotpExpect = 0.34; // Math.Round(Statistics.AngleToNormalizedContrastAngle(0.633), 2); // 0.44 SkylineWindow.SequenceTree.SelectedNode = SkylineWindow.SequenceTree.Nodes[0].Nodes[0]; AssertEx.Contains(SkylineWindow.SequenceTree.SelectedNode.Nodes[0].Text, dotpExpect.ToString(LocalizationHelper.CurrentCulture)); SkylineWindow.EditDelete(); PeptideTreeNode nodePep; for (int i = 0; i < 2; i++) { nodePep = (PeptideTreeNode)SkylineWindow.SequenceTree.Nodes[0].Nodes[i]; nodePep.ExpandAll(); foreach (TransitionTreeNode nodeTran in nodePep.Nodes[0].Nodes) { TransitionDocNode nodeTranDoc = (TransitionDocNode)nodeTran.Model; Assert.AreEqual((int)SequenceTree.StateImageId.peak, TransitionTreeNode.GetPeakImageIndex(nodeTranDoc, (PeptideDocNode)nodePep.Model, SkylineWindow.SequenceTree)); var resultsIndex = SkylineWindow.SequenceTree.GetDisplayResultsIndex(nodePep); var rank = nodeTranDoc.GetPeakRank(resultsIndex); if (rank == null || rank > 3) { SkylineWindow.SequenceTree.SelectedNode = nodeTran; } SkylineWindow.SequenceTree.KeysOverride = Keys.Control; } } nodePep = (PeptideTreeNode)SkylineWindow.SequenceTree.Nodes[0].Nodes[2]; nodePep.ExpandAll(); foreach (TransitionTreeNode nodeTran in nodePep.Nodes[0].Nodes) { TransitionDocNode nodeTranDoc = (TransitionDocNode)nodeTran.Model; Assert.AreEqual((int)SequenceTree.StateImageId.peak, TransitionTreeNode.GetPeakImageIndex(nodeTranDoc, (PeptideDocNode)nodePep.Model, SkylineWindow.SequenceTree)); var name = ((TransitionDocNode)nodeTran.Model).FragmentIonName; if (!(name == "y11" || name == "y13" || name == "y14")) // Not L10N { SkylineWindow.SequenceTree.SelectedNode = nodeTran; } SkylineWindow.SequenceTree.KeysOverride = Keys.Control; } SkylineWindow.SequenceTree.KeysOverride = Keys.None; SkylineWindow.EditDelete(); for (int i = 0; i < 3; i++) { Assert.IsTrue(SkylineWindow.SequenceTree.Nodes[0].Nodes[i].Nodes[0].Nodes.Count == 3); } SkylineWindow.AutoZoomNone(); SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Transitions, 5); SkylineWindow.Size = new Size(722, 449); }); RunUI(SkylineWindow.AutoZoomBestPeak); RestoreViewOnScreen(15); PauseForScreenShot("Targetes view clipped from main window and chromatogram graph metafile", 15); // Automated Refinement, p. 16 RunDlg <RefineDlg>(SkylineWindow.ShowRefineDlg, refineDlg => { refineDlg.MaxTransitionPeakRank = 3; refineDlg.PreferLargerIons = true; refineDlg.RemoveMissingResults = true; refineDlg.RTRegressionThreshold = 0.95; refineDlg.DotProductThreshold = Statistics.AngleToNormalizedContrastAngle(0.95); // Convert from original cos(angle) dot-product refineDlg.OkDialog(); }); WaitForCondition(() => SkylineWindow.Document.PeptideCount < 73); // foreach (var peptideDocNode in SkylineWindow.Document.Peptides) // { // var nodeGroup = ((TransitionGroupDocNode) peptideDocNode.Children[0]); // Console.WriteLine("{0} - {1}", peptideDocNode.Peptide.Sequence, // nodeGroup.GetDisplayText(SkylineWindow.SequenceTree.GetDisplaySettings(peptideDocNode))); // } RunUI(() => { Assert.AreEqual(72, SkylineWindow.Document.PeptideCount); Assert.AreEqual(216, SkylineWindow.Document.PeptideTransitionCount); SkylineWindow.CollapsePeptides(); SkylineWindow.Undo(); }); RunDlg <RefineDlg>(SkylineWindow.ShowRefineDlg, refineDlg => { refineDlg.MaxTransitionPeakRank = 6; refineDlg.RemoveMissingResults = true; refineDlg.RTRegressionThreshold = 0.90; refineDlg.DotProductThreshold = Statistics.AngleToNormalizedContrastAngle(0.90); // Convert from original cos(angle) dot-product refineDlg.OkDialog(); }); WaitForCondition(() => SkylineWindow.Document.PeptideCount < 120); RunUI(() => { Assert.AreEqual(113, SkylineWindow.Document.PeptideCount); // Scheduling for Efficient Acquisition, p. 17 SkylineWindow.Undo(); }); RunDlg <ManageResultsDlg>(SkylineWindow.ManageResults, mResults => { Assert.AreEqual(1, mResults.Chromatograms.Count()); mResults.SelectedChromatograms = SkylineWindow.Document.Settings.MeasuredResults.Chromatograms.Where( set => Equals("Unrefined", set.Name)); // Not L10N mResults.RemoveReplicates(); Assert.AreEqual(0, mResults.Chromatograms.Count()); mResults.OkDialog(); }); var importResultsDlg0 = ShowDialog <ImportResultsDlg>(SkylineWindow.ImportResults); RunUI(() => { SkylineWindow.SequenceTree.SelectedNode = SkylineWindow.SequenceTree.Nodes[0]; importResultsDlg0.RadioCreateMultipleMultiChecked = true; importResultsDlg0.NamedPathSets = DataSourceUtil.GetDataSourcesInSubdirs(Path.Combine(TestFilesDirs[1].FullPath, Path.GetFileName(TestFilesDirs[1].FullPath) ?? string.Empty)).ToArray(); }); var importResultsNameDlg = ShowDialog <ImportResultsNameDlg>(importResultsDlg0.OkDialog); RunUI(importResultsNameDlg.NoDialog); WaitForCondition(15 * 60 * 1000, () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); // 15 minutes var docCurrent = SkylineWindow.Document; RunUI(SkylineWindow.RemoveMissingResults); WaitForDocumentChange(docCurrent); Assert.AreEqual(86, SkylineWindow.Document.PeptideCount); Assert.AreEqual(255, SkylineWindow.Document.PeptideTransitionCount); TestRTResidualsSwitch(); // Measuring Retention Times, p. 17 { var exportDlg = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.List)); RunUI(() => exportDlg.MaxTransitions = 130); PauseForScreenShot <ExportMethodDlg.TransitionListView>("Export Transition List form", 18); OkDialog(exportDlg, () => exportDlg.OkDialog(TestFilesDirs[1].FullPath + "\\unscheduled")); // Not L10N } /////////////////////// // Reviewing Retention Time Runs, p. 18 RunUI(() => { SkylineWindow.ShowGraphSpectrum(false); SkylineWindow.ArrangeGraphsTiled(); SkylineWindow.AutoZoomNone(); SkylineWindow.AutoZoomBestPeak(); }); FindNode("FWEVISDEHGIQPDGTFK"); RunUI(() => SkylineWindow.Size = new Size(1060, 550)); RestoreViewOnScreen(19); PauseForScreenShot("Main window", 19); // Not L10N RunUI(() => SkylineWindow.ShowRTSchedulingGraph()); WaitForCondition(() => SkylineWindow.GraphRetentionTime != null); PauseForScreenShot("Retention Times - Scheduling graph metafile", 19); RestoreViewOnScreen(20); // Creating a Scheduled Transition List, p. 20 { var peptideSettingsUI = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => { peptideSettingsUI.SelectedTab = PeptideSettingsUI.TABS.Prediction; peptideSettingsUI.TimeWindow = 4; }); PauseForScreenShot <PeptideSettingsUI.PredictionTab>("Peptide Settings - Prediction tab", 21); OkDialog(peptideSettingsUI, peptideSettingsUI.OkDialog); // Not L10N } var exportMethodDlg1 = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.List)); RunUI(() => { exportMethodDlg1.ExportStrategy = ExportStrategy.Single; exportMethodDlg1.MethodType = ExportMethodType.Scheduled; }); // TODO: Update tutorial to mention the scheduling options dialog. PauseForScreenShot("Export Transition List form", 22); // Not L10N RunDlg <SchedulingOptionsDlg>(() => exportMethodDlg1.OkDialog(TestFilesDirs[1].FullPath + "\\scheduled"), // Not L10N schedulingOptionsDlg => schedulingOptionsDlg.OkDialog()); WaitForClosedForm(exportMethodDlg1); // Reviewing Multi-Replicate Data, p. 22 RunDlg <ManageResultsDlg>(SkylineWindow.ManageResults, manageResultsDlg => { manageResultsDlg.RemoveAllReplicates(); manageResultsDlg.OkDialog(); }); var importResultsDlg1 = ShowDialog <ImportResultsDlg>(SkylineWindow.ImportResults); RunDlg <OpenDataSourceDialog>(() => importResultsDlg1.NamedPathSets = importResultsDlg1.GetDataSourcePathsFile(null), openDataSourceDialog => { openDataSourceDialog.SelectAllFileType(ExtThermoRaw); openDataSourceDialog.Open(); }); RunDlg <ImportResultsNameDlg>(importResultsDlg1.OkDialog, importResultsNameDlg0 => { importResultsNameDlg0.Prefix = "Scheduled_"; // Not L10N importResultsNameDlg0.YesDialog(); }); WaitForCondition(15 * 60 * 1000, () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); // 15 minutes Assert.AreEqual(5, SkylineWindow.GraphChromatograms.Count(graphChrom => !graphChrom.IsHidden)); RunUI(() => { SkylineWindow.RemoveMissingResults(); SkylineWindow.ArrangeGraphsTiled(); SkylineWindow.ShowGraphRetentionTime(false); }); WaitForCondition(() => SkylineWindow.GraphRetentionTime.IsHidden); RunUI(() => { SkylineWindow.SequenceTree.SelectedNode = SkylineWindow.SequenceTree.Nodes[0].Nodes[0]; SkylineWindow.ShowRTReplicateGraph(); SkylineWindow.ShowPeakAreaReplicateComparison(); SkylineWindow.CollapsePeptides(); SkylineWindow.ShowChromatogramLegends(false); SkylineWindow.Size = new Size(1024, 768); }); RestoreViewOnScreen(24); WaitForGraphs(); PauseForScreenShot("Main window", 24); // Not L10N RunUI(() => SkylineWindow.SaveDocument()); RunUI(SkylineWindow.NewDocument); }
protected override void DoTest() { // Clear all the settings lists that will be defined in this tutorial ClearSettingsLists(); // Open the file RunUI(() => SkylineWindow.OpenFile(GetTestPath(DIA_START_CHECKPOINT))); WaitForDocumentLoaded(); // Specify DIA acquisition scheme and machine settings var transitionSettings = ShowDialog <TransitionSettingsUI>(SkylineWindow.ShowTransitionSettingsUI); RunUI(() => { transitionSettings.SelectedTab = TransitionSettingsUI.TABS.FullScan; transitionSettings.AcquisitionMethod = FullScanAcquisitionMethod.DIA; transitionSettings.PrecursorIsotopesCurrent = FullScanPrecursorIsotopes.Count; transitionSettings.PrecursorMassAnalyzer = FullScanMassAnalyzerType.orbitrap; transitionSettings.PrecursorRes = 35000; transitionSettings.PrecursorResMz = 200; transitionSettings.ProductMassAnalyzer = FullScanMassAnalyzerType.orbitrap; transitionSettings.ProductRes = 17500; transitionSettings.ProductResMz = 200; }); PauseForScreenShot <TransitionSettingsUI.FullScanTab>("Transition Settings - Full-Scan", 4); // Set up isolation scheme var isolationSchemeDlg = ShowDialog <EditIsolationSchemeDlg>(transitionSettings.AddIsolationScheme); PauseForScreenShot <EditIsolationSchemeDlg>("Edit Isolation Scheme form", 5); RunUI(() => { isolationSchemeDlg.UseResults = false; }); var calculateIsolationDlg = ShowDialog <CalculateIsolationSchemeDlg>(isolationSchemeDlg.Calculate); RunUI(() => { calculateIsolationDlg.WindowWidth = 20; calculateIsolationDlg.Start = 500; calculateIsolationDlg.End = 900; calculateIsolationDlg.OptimizeWindowPlacement = true; }); PauseForScreenShot <CalculateIsolationSchemeDlg>("Calculate Isolation Scheme form", 6); OkDialog(calculateIsolationDlg, calculateIsolationDlg.OkDialog); PauseForScreenShot <EditIsolationSchemeDlg>("Edit Isolation Scheme Dialog Filled", 7); var isolationSchemeGraphDlg = ShowDialog <DiaIsolationWindowsGraphForm>(isolationSchemeDlg.OpenGraph); PauseForScreenShot <DiaIsolationWindowsGraphForm>("Graph of Isolation Scheme", 8); OkDialog(isolationSchemeGraphDlg, isolationSchemeGraphDlg.CloseButton); RunUI(() => isolationSchemeDlg.IsolationSchemeName = "500 to 900 by 20"); OkDialog(isolationSchemeDlg, isolationSchemeDlg.OkDialog); OkDialog(transitionSettings, transitionSettings.OkDialog); // Export isolation scheme var exportIsolationDlg = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.IsolationList)); PauseForScreenShot <ExportMethodDlg>("Export Isolation List form", 9); OkDialog(exportIsolationDlg, () => exportIsolationDlg.OkDialog(GetTestPath("DIA_tutorial_isolation_list.csv"))); // Adjust modifications and filter var newPeptideSettings = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => newPeptideSettings.AutoSelectMatchingPeptides = true); OkDialog(newPeptideSettings, newPeptideSettings.OkDialog); // Set up chromatogram retention time restriction var newTransitionSettings = ShowDialog <TransitionSettingsUI>(SkylineWindow.ShowTransitionSettingsUI); RunUI(() => newTransitionSettings.SetRetentionTimeFilter(RetentionTimeFilterType.ms2_ids, 5.0)); PauseForScreenShot <TransitionSettingsUI.FullScanTab>("Retention time filtering options", 16); // Adjust library transition ranking RunUI(() => { newTransitionSettings.SelectedTab = TransitionSettingsUI.TABS.Library; newTransitionSettings.UseLibraryPick = true; newTransitionSettings.Filtered = true; }); PauseForScreenShot <TransitionSettingsUI.LibraryTab>("Transition Settings - Library tab", 22); OkDialog(newTransitionSettings, newTransitionSettings.OkDialog); PauseForScreenShot <SequenceTreeForm>("Targets pane with precursors and best 5 transitions only", 23); // Build spectral library using Import Peptide Search RunUI(() => SkylineWindow.SaveDocument(GetTestPath(DIA_TUTORIAL_CHECKPOINT))); // "Build Spectral Library" page var importPeptideSearchDlg = ShowDialog <ImportPeptideSearchDlg>(() => SkylineWindow.ShowImportPeptideSearchDlg()); RunUI(() => { Assert.IsTrue(importPeptideSearchDlg.CurrentPage == ImportPeptideSearchDlg.Pages.spectra_page); importPeptideSearchDlg.BuildPepSearchLibControl.AddSearchFiles(new[] { GetTestPath("interact-20130311_DDA_Pit01.pep.xml") }); // Not L10N importPeptideSearchDlg.BuildPepSearchLibControl.WorkflowType = ImportPeptideSearchDlg.Workflow.dia; }); PauseForScreenShot <BuildLibraryDlg>("Build Library form - input files", 10); const string prefixKeep = "DIA_Pit0"; if (IsFullImportMode) { SrmDocument doc = SkylineWindow.Document; RunUI(() => Assert.IsTrue(importPeptideSearchDlg.ClickNextButton())); doc = WaitForDocumentChange(doc); // "Extract Chromatograms" page RunUI(() => { Assert.IsTrue(importPeptideSearchDlg.CurrentPage == ImportPeptideSearchDlg.Pages.chromatograms_page); importPeptideSearchDlg.ImportResultsControl.FoundResultsFiles = _importFiles.Select(f => new ImportPeptideSearch.FoundResultsFile(f, GetTestPath(f + ExtensionTestContext.ExtThermoRaw))).ToList(); }); var importResultsNameDlg = ShowDialog <ImportResultsNameDlg>(importPeptideSearchDlg.ClickNextButtonNoCheck); RunUI(() => { string prefix = importResultsNameDlg.Prefix; Assert.IsTrue(prefix.EndsWith(prefixKeep)); importResultsNameDlg.Prefix = prefix.Substring(0, prefix.Length - prefixKeep.Length); importResultsNameDlg.YesDialog(); }); WaitForClosedForm(importResultsNameDlg); // "Add Modifications" page RunUI(() => { const string modCarbamidomethyl = "Carbamidomethyl (C)"; const string modOxidation = "Oxidation (M)"; Assert.IsTrue(importPeptideSearchDlg.CurrentPage == ImportPeptideSearchDlg.Pages.match_modifications_page); // Define expected matched/unmatched modifications var expectedMatched = new[] { modCarbamidomethyl, modOxidation }; // Verify matched/unmatched modifications AssertEx.AreEqualDeep(expectedMatched, importPeptideSearchDlg.MatchModificationsControl.MatchedModifications.ToArray()); Assert.IsFalse(importPeptideSearchDlg.MatchModificationsControl.UnmatchedModifications.Any()); importPeptideSearchDlg.MatchModificationsControl.CheckedModifications = new[] { modCarbamidomethyl }; Assert.IsTrue(importPeptideSearchDlg.ClickNextButton()); }); WaitForDocumentChange(doc); // "Configure Transition Settings" page RunUI(() => { Assert.IsTrue(importPeptideSearchDlg.CurrentPage == ImportPeptideSearchDlg.Pages.transition_settings_page); importPeptideSearchDlg.TransitionSettingsControl.PrecursorCharges = new[] { 1, 2, 3, 4 }; importPeptideSearchDlg.TransitionSettingsControl.IonCharges = new[] { 1, 2 }; importPeptideSearchDlg.TransitionSettingsControl.IonTypes = new[] { IonType.y, IonType.b, IonType.precursor }; importPeptideSearchDlg.TransitionSettingsControl.ExclusionUseDIAWindow = true; importPeptideSearchDlg.TransitionSettingsControl.IonCount = 5; importPeptideSearchDlg.TransitionSettingsControl.IonMatchTolerance = 0.05; Assert.IsTrue(importPeptideSearchDlg.ClickNextButton()); }); // "Configure Full-Scan Settings" page RunUI(() => { Assert.IsTrue(importPeptideSearchDlg.CurrentPage == ImportPeptideSearchDlg.Pages.full_scan_settings_page); Assert.IsTrue(importPeptideSearchDlg.ClickNextButton()); }); // "Import FASTA" page RunUI(() => { importPeptideSearchDlg.ImportFastaControl.SetFastaContent(GetTestPath("pituitary_database.fasta")); Assert.IsTrue(importPeptideSearchDlg.ClickNextButton()); }); WaitForClosedForm(importPeptideSearchDlg); WaitForCondition(10 * 60 * 1000, () => SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); // 10 minutes RunUI(() => { SkylineWindow.SaveDocument(GetTestPath(DIA_IMPORTED_CHECKPOINT)); SkylineWindow.SaveDocument(GetTestPath(DIA_TUTORIAL_CHECKPOINT)); }); } else { OkDialog(importPeptideSearchDlg, importPeptideSearchDlg.CancelDialog); RunUI(() => SkylineWindow.OpenFile(GetTestPath(DIA_IMPORTED_CHECKPOINT))); } WaitForDocumentLoaded(); WaitForGraphs(); RunUI(() => { SkylineWindow.ExpandPrecursors(); SkylineWindow.Size = new Size(750, 788); }); // Generate decoys // var decoysDlg = ShowDialog<GenerateDecoysDlg>(SkylineWindow.ShowGenerateDecoysDlg); // PauseForScreenShot<GenerateDecoysDlg>("Add Decoy Peptides form", 24); // RunUI(() => // { // decoysDlg.NumDecoys = 26; // Assert.AreEqual(decoysDlg.DecoysMethod, DecoyGeneration.SHUFFLE_SEQUENCE); // }); // OkDialog(decoysDlg, decoysDlg.OkDialog); // RunUI(() => SkylineWindow.SequenceTree.TopNode = SkylineWindow.SequenceTree.SelectedNode.PrevNode.Nodes[6]); // PauseForScreenShot<SequenceTreeForm>("Targets pane with decoys added", 25); RunUI(() => { SkylineWindow.CollapsePeptides(); SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 6); var nodePepTree = SkylineWindow.SelectedNode as PeptideTreeNode; Assert.IsNotNull(nodePepTree); Assert.AreEqual("VLQAVLPPLPQVVCTYR", nodePepTree.DocNode.Peptide.Sequence); SkylineWindow.ShowSplitChromatogramGraph(true); SkylineWindow.AutoZoomBestPeak(); var graphChrom = SkylineWindow.GetGraphChrom(prefixKeep + "1"); var labelStrings = graphChrom.GetAnnotationLabelStrings().ToArray(); Assert.IsTrue(labelStrings.Contains(string.Format("{0}\n+{1} ppm\n(idotp {2})", 75.4, 3, 0.59)), string.Format("Missing expected label in {0}", string.Join("|", labelStrings))); SkylineWindow.Width = 1250; }); RunDlg <ChromChartPropertyDlg>(SkylineWindow.ShowChromatogramProperties, dlg => { dlg.FontSize = GraphFontSize.NORMAL; dlg.OkDialog(); }); RestoreViewOnScreen(27); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile", 26); RunUI(() => { SkylineWindow.SelectedNode.Expand(); var nodeTree = SkylineWindow.SelectedNode.Nodes[0].Nodes[0] as SrmTreeNode; Assert.IsNotNull(nodeTree); Assert.AreEqual((int)SequenceTree.StateImageId.no_peak, nodeTree.StateImageIndex); }); PauseForScreenShot <SequenceTreeForm>("Targets view - ", 27); RunUI(() => { SkylineWindow.SetIntegrateAll(true); var nodeTree = SkylineWindow.SelectedNode.Nodes[0].Nodes[0] as SrmTreeNode; Assert.IsNotNull(nodeTree); Assert.AreEqual((int)SequenceTree.StateImageId.peak, nodeTree.StateImageIndex); var nodeGroupTree = SkylineWindow.SelectedNode.Nodes[0] as TransitionGroupTreeNode; Assert.IsNotNull(nodeGroupTree); Assert.AreEqual(0.99, nodeGroupTree.DocNode.GetIsotopeDotProduct(0) ?? 0, 0.005); Assert.AreEqual(0.83, nodeGroupTree.DocNode.GetLibraryDotProduct(0) ?? 0, 0.005); SkylineWindow.ShowOtherRunPeptideIDTimes(true); }); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile - with ID lines", 28); RunUI(() => { SkylineWindow.AutoZoomNone(); SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 1); }); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile - zoomed out and small peak", 30); RunUI(SkylineWindow.AutoZoomBestPeak); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile - zoomed to peak", 31); if (IsFullImportMode) { ClickChromatogram(74.9, 1.775E+7, PaneKey.PRECURSORS); RestoreViewOnScreen(33); PauseForScreenShot <GraphFullScan>("Full Scan graph with precursors - zoom manually", 32); ClickChromatogram(74.8, 1.753E+6, PaneKey.PRODUCTS); PauseForScreenShot <GraphFullScan>("Full Scan graph showing y7", 33); ClickChromatogram(74.9, 9.64E+5, PaneKey.PRODUCTS); PauseForScreenShot <GraphFullScan>("Full Scan graph showing b3 - zoom manually", 34); ClickChromatogram(74.9, 1.25E+5, PaneKey.PRODUCTS); PauseForScreenShot <GraphFullScan>("Full Scan graph showing y3 - zoom manually", 34); } RunUI(() => { SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 2); Assert.AreEqual("CNTDYSDCIHEAIK", ((PeptideTreeNode)SkylineWindow.SelectedNode).DocNode.Peptide.Sequence); }); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile - split between two precursors", 35); RunUI(() => { SkylineWindow.SelectedNode.Expand(); SkylineWindow.SelectedPath = ((SrmTreeNode)SkylineWindow.SelectedNode.Nodes[0]).Path; }); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile - double charged precursor", 36); RunUI(() => { SkylineWindow.SelectedPath = SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.Molecules, 3); Assert.AreEqual("ELVYETVR", ((PeptideTreeNode)SkylineWindow.SelectedNode).DocNode.Peptide.Sequence); }); RunUI(() => { SkylineWindow.SelectedNode.Expand(); var nodeGroupTree = SkylineWindow.SelectedNode.Nodes[0] as TransitionGroupTreeNode; Assert.IsNotNull(nodeGroupTree); Assert.AreEqual(0.99, nodeGroupTree.DocNode.GetIsotopeDotProduct(0) ?? 0, 0.005); Assert.AreEqual(0.99, nodeGroupTree.DocNode.GetIsotopeDotProduct(0) ?? 0, 0.005); }); RestoreViewOnScreen(38); PauseForScreenShot <GraphSpectrum>("Library Match view - zoom manually", 37); RestoreViewOnScreen(39); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile", 38); if (IsFullImportMode) { RestoreViewOnScreen(40); ClickChromatogram(41.9, 1.166E+8, PaneKey.PRECURSORS); PauseForScreenShot <GraphFullScan>("Full Scan graph showing precursor interference - zoom manually", 39); RunUI(() => SkylineWindow.GraphFullScan.ChangeScan(-12)); CheckFullScanSelection(41.7, 1.532E+8, PaneKey.PRECURSORS); PauseForScreenShot <GraphFullScan>("Full Scan graph showing transition between interference and real peak - zoom manually", 39); } // Clear all the settings lists that were defined in this tutorial ClearSettingsLists(); }
private static GraphChromatogram GetGraphChrom(string graphName) { return(graphName != null ? SkylineWindow.GetGraphChrom(graphName) : SkylineWindow.GraphChromatograms.First()); }
protected override void DoTest() { // iRT Retention Time Prediction string standardDocumentFile = GetTestPath("iRT-C18 Standard.sky"); // Not L10N RunUI(() => SkylineWindow.OpenFile(standardDocumentFile)); WaitForDocumentLoaded(); // might have some updating to do for protein metadata RunUI(() => SkylineWindow.SaveDocument(GetTestPath("iRT-C18 Calibrate.sky"))); // Not L10N // Load raw files for iRT calculator calibration p. 2 const string unschedHuman1Fileroot = "A_D110907_SiRT_HELA_11_nsMRM_150selected_1_30min-5-35"; // Not L10N string unschedHuman1Name = unschedHuman1Fileroot.Substring(41); const string unschedHuman2Fileroot = "A_D110907_SiRT_HELA_11_nsMRM_150selected_2_30min-5-35"; // Not L10N string unschedHuman2Name = unschedHuman2Fileroot.Substring(41); ImportNewResults(new[] { unschedHuman1Fileroot, unschedHuman2Fileroot }, 41, false, false); var docCalibrate = WaitForProteinMetadataBackgroundLoaderCompletedUI(); const int pepCount = 11, tranCount = 33; AssertEx.IsDocumentState(docCalibrate, null, 1, pepCount, pepCount, tranCount); AssertResult.IsDocumentResultsState(docCalibrate, unschedHuman1Name, pepCount, pepCount, 0, tranCount, 0); AssertResult.IsDocumentResultsState(docCalibrate, unschedHuman2Name, pepCount, pepCount, 0, tranCount, 0); RunUI(() => { SkylineWindow.ArrangeGraphsTiled(); SkylineWindow.ShowRTPeptideGraph(); using (var enumLabels = SkylineWindow.RTGraphController.GraphSummary.Categories.GetEnumerator()) { foreach (var nodePep in docCalibrate.Peptides) { Assert.IsTrue(enumLabels.MoveNext() && enumLabels.Current != null); Assert.IsTrue(nodePep.Peptide.Sequence.StartsWith(enumLabels.Current.Substring(0, 3))); } } }); // Page 3. PauseForScreenShot <GraphSummary.RTGraphView>("RT graph metafile", 3); // Peptide RT graph RunUI(() => { SkylineWindow.ShowRTReplicateGraph(); SkylineWindow.AutoZoomBestPeak(); SkylineWindow.SelectedPath = docCalibrate.GetPathTo((int)SrmDocument.Level.Molecules, 0); }); // Ensure graphs look like p. 3 and 4 WaitForGraphs(); RestoreViewOnScreen(04); PauseForScreenShot("Main window showing chromatograms and RT graph", 4); // Skyline window with docked RT replicate comparison graph RunUI(() => { Assert.AreEqual(3, SkylineWindow.RTGraphController.GraphSummary.CurveCount); Assert.AreEqual(2, SkylineWindow.RTGraphController.GraphSummary.Categories.Count()); var chromGraphs = SkylineWindow.GraphChromatograms.ToArray(); Assert.AreEqual(2, chromGraphs.Length); Assert.AreEqual(11.3, chromGraphs[0].GraphItems.First().BestPeakTime, 0.05); Assert.AreEqual(11.2, chromGraphs[1].GraphItems.First().BestPeakTime, 0.05); }); var listTimes = new List <double>(); for (int i = 0; i < docCalibrate.PeptideCount; i++) { int iPeptide = i; RunUI(() => { SkylineWindow.SelectedPath = docCalibrate.GetPathTo((int)SrmDocument.Level.Molecules, iPeptide); }); WaitForGraphs(); RunUI(() => { var chromGraphs = SkylineWindow.GraphChromatograms.ToArray(); double time1 = chromGraphs[0].GraphItems.First(g => g.BestPeakTime > 0).BestPeakTime; double time2 = chromGraphs[1].GraphItems.First(g => g.BestPeakTime > 0).BestPeakTime; listTimes.Add((time1 + time2) / 2); Assert.AreEqual(time1, time2, 0.2); }); } // Calibrate a calculator p. 4-5 const string irtCalcName = "iRT-C18"; var peptideSettingsUI1 = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); var editIrtCalc1 = ShowDialog <EditIrtCalcDlg>(peptideSettingsUI1.AddCalculator); RunUI(() => { editIrtCalc1.CalcName = irtCalcName; editIrtCalc1.CreateDatabase(GetTestPath("iRT-C18.irtdb")); // Not L10N }); { var calibrateDlg = ShowDialog <CalibrateIrtDlg>(editIrtCalc1.Calibrate); RunUI(() => { calibrateDlg.UseResults(); Assert.AreEqual(11, calibrateDlg.StandardPeptideCount); calibrateDlg.SetFixedPoints(1, 10); for (int i = 0; i < calibrateDlg.StandardPeptideCount; i++) { Assert.AreEqual(listTimes[i], calibrateDlg.StandardPeptideList[i].RetentionTime, 0.2); } }); PauseForScreenShot <CalibrateIrtDlg>("Calibrate iRT Calculator form", 5); // Calibrate iRT Calculator form RunUI(calibrateDlg.OkDialog); } Assert.IsTrue(WaitForConditionUI(() => editIrtCalc1.StandardPeptideCount == 11)); PauseForScreenShot <EditIrtCalcDlg>("Edit iRT Calculater form", 6); // Edit iRT Caclulator form // Check iRT values and update to defined values p. 6-7 var irtDefinitionPath = GetTestPath("iRT definition.xlsx"); // Not L10N string irtDefText = GetExcelFileText(irtDefinitionPath, "iRT-C18", 2, true); // Not L10N RunUI(() => { var standardPeptidesArray = editIrtCalc1.StandardPeptides.ToArray(); Assert.AreEqual(11, standardPeptidesArray.Length); Assert.AreEqual(0, standardPeptidesArray[1].Irt, 0.00001); Assert.AreEqual(100, standardPeptidesArray[10].Irt, 0.00001); CheckIrtStandardPeptides(standardPeptidesArray, irtDefText, 6); SetClipboardText(irtDefText); editIrtCalc1.DoPasteStandard(); standardPeptidesArray = editIrtCalc1.StandardPeptides.ToArray(); Assert.AreEqual(11, standardPeptidesArray.Length); Assert.AreEqual(0, standardPeptidesArray[1].Irt, 0.001); Assert.AreEqual(100, standardPeptidesArray[10].Irt, 0.005); CheckIrtStandardPeptides(standardPeptidesArray, irtDefText, 0.00001); }); OkDialog(editIrtCalc1, editIrtCalc1.OkDialog); OkDialog(peptideSettingsUI1, peptideSettingsUI1.OkDialog); // Inspect RT regression graph p. 8 RunUI(SkylineWindow.ShowRTRegressionGraphScoreToRun); WaitForRegression(); RestoreViewOnScreen(08); PauseForScreenShot <GraphSummary.RTGraphView>("Retention Times Regression graph metafile", 8); // RT Regression graph RunUI(() => { VerifyRTRegression(0.15, 15.09, 0.9991); SkylineWindow.ShowSingleReplicate(); SkylineWindow.SequenceTree.Focus(); // If the focus is left on the results tab, then the next line does nothing SkylineWindow.SelectedResultsIndex = 0; }); WaitForRegression(); RunUI(() => { VerifyRTRegression(0.15, 15.15, 0.9991); SkylineWindow.SelectedResultsIndex = 1; }); WaitForRegression(); RunUI(() => VerifyRTRegression(0.15, 15.04, 0.9991)); RunUI(() => SkylineWindow.ShowAverageReplicates()); RunUI(() => SkylineWindow.SaveDocument()); // Create a document containing human and standard peptides, p. 9 RunUI(() => SkylineWindow.OpenFile(GetTestPath("iRT Human.sky"))); WaitForProteinMetadataBackgroundLoaderCompletedUI(); // let peptide metadata background loader do its work RunUI(() => { SkylineWindow.SelectedPath = new IdentityPath(SequenceTree.NODE_INSERT_ID); SkylineWindow.ImportFiles(standardDocumentFile); }); WaitForProteinMetadataBackgroundLoaderCompletedUI(); // let peptide metadata background loader do its work RestoreViewOnScreen(09); PauseForScreenShot("Targets tree clipped out of main winodw", 9); // Target tree RunUI(() => { Assert.AreEqual("iRT-C18 Standard Peptides", SkylineWindow.SelectedNode.Text); // Not L10N Assert.AreEqual(1231, SkylineWindow.DocumentUI.PeptideTransitionCount); SkylineWindow.SaveDocument(GetTestPath("iRT Human+Standard.sky")); // Not L10N SkylineWindow.SaveDocument(GetTestPath("iRT Human+Standard Calibrate.sky")); // Not L10N }); // Remove heavy precursors, p. 10 var docHumanAndStandard = SkylineWindow.Document; RunDlg <RefineDlg>(SkylineWindow.ShowRefineDlg, refineDlg => { refineDlg.RefineLabelType = IsotopeLabelType.heavy; refineDlg.OkDialog(); }); var docLightOnly = WaitForDocumentChange(docHumanAndStandard); Assert.AreEqual(632, docLightOnly.PeptideTransitionCount); // Create auto-calculate regression RT predictor, p. 10 const string irtPredictorName = "iRT-C18"; // Not L10N { var docPre = SkylineWindow.Document; var peptideSettingsUI2 = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => peptideSettingsUI2.ChooseRegression(irtPredictorName)); var regressionDlg = ShowDialog <EditRTDlg>(peptideSettingsUI2.EditRegression); RunUI(() => { Assert.AreEqual(irtPredictorName, regressionDlg.Regression.Name); Assert.AreEqual(irtCalcName, regressionDlg.Regression.Calculator.Name); regressionDlg.SetAutoCalcRegression(true); regressionDlg.SetTimeWindow(5); }); PauseForScreenShot("Edit Retention Time Predictor form", 10); // Edit retention time predictor form OkDialog(regressionDlg, regressionDlg.OkDialog); OkDialog(peptideSettingsUI1, peptideSettingsUI2.OkDialog); // Make sure iRT calculator is loaded WaitForDocumentChangeLoaded(docPre); } // Export unscheduled transition list, p. 11 { const string calibrateBasename = "iRT Human+Standard Calibrate"; // Not L10N var exportMethodDlg = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.List)); RunUI(() => { exportMethodDlg.ExportStrategy = ExportStrategy.Buckets; exportMethodDlg.IgnoreProteins = true; exportMethodDlg.MaxTransitions = 335; }); PauseForScreenShot <ExportMethodDlg.TransitionListView>("Export Transition List form", 11); RunUI(() => exportMethodDlg.OkDialog(GetTestPath(calibrateBasename + TextUtil.EXT_CSV))); WaitForClosedForm(exportMethodDlg); Assert.AreEqual(332, File.ReadAllLines(GetTestPath(calibrateBasename + "_0001.csv")).Length); // Not L10N Assert.AreEqual(333 + (TestSmallMolecules ? 2 : 0), File.ReadAllLines(GetTestPath(calibrateBasename + "_0002.csv")).Length); // Not L10N } // Import human peptide calibration results p. 12 ImportNewResults(new[] { unschedHuman1Fileroot, unschedHuman2Fileroot }, -1, true); // Review iRT-C18 graph p. 12-13 RunUI(() => SkylineWindow.ChooseCalculator(irtCalcName)); RunUI(SkylineWindow.ShowRTRegressionGraphScoreToRun); WaitForRegression(); PauseForScreenShot <GraphSummary.RTGraphView>("RT Regression graph metafile", 13); RunUI(() => { VerifyRTRegression(0.15, 15.09, 0.9991); Assert.AreEqual(11, SkylineWindow.DocumentUI.PeptideCount - SkylineWindow.RTGraphController.Outliers.Length); }); // Find all unintegrated transitions, p. 13-14 { var findDlg = ShowDialog <FindNodeDlg>(SkylineWindow.ShowFindNodeDlg); RunUI(() => { findDlg.FindOptions = new FindOptions().ChangeText(string.Empty) .ChangeCustomFinders(Finders.ListAllFinders().Where(f => f is UnintegratedTransitionFinder)); }); PauseForScreenShot <FindNodeDlg>("Find form", 14); RestoreViewOnScreen(15); RunUI(() => { findDlg.FindAll(); findDlg.Close(); }); WaitForClosedForm(findDlg); } PauseForScreenShot <FindResultsForm>("Find Results pane", 14); var findAllForm = WaitForOpenForm <FindResultsForm>(); Assert.IsNotNull(findAllForm); const int expectedItems = 6; RunUI(() => { Assert.AreEqual(expectedItems, findAllForm.ItemCount); SkylineWindow.ShowAllTransitions(); SkylineWindow.AutoZoomBestPeak(); }); // Review peaks with missing transitions, p. 15 for (int i = 0; i < expectedItems; i++) { int iItem = i; RunUI(() => findAllForm.ActivateItem(iItem)); WaitForGraphs(); RunUI(() => Assert.AreEqual((int)SequenceTree.StateImageId.no_peak, SkylineWindow.SelectedNode.StateImageIndex)); if (i == 2) { PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile (1 of 2)", 15); } if (i == 3) { RunUI(() => { var document = SkylineWindow.DocumentUI; var nodeGroup = document.FindNode(SkylineWindow.SelectedPath.Parent) as TransitionGroupDocNode; Assert.IsNotNull(nodeGroup); var nodeTran = document.FindNode(SkylineWindow.SelectedPath) as TransitionDocNode; Assert.IsNotNull(nodeTran); var graph = SkylineWindow.GetGraphChrom(Resources.ImportResultsDlg_DefaultNewName_Default_Name); // New peak picking picks correct peak Assert.AreEqual(19.8, graph.BestPeakTime.Value, 0.05); // TransitionGroupDocNode nodeGroupGraph; // TransitionDocNode nodeTranGraph; // var scaledRT = graph.FindAnnotatedPeakRetentionTime(19.8, out nodeGroupGraph, out nodeTranGraph); // Assert.AreSame(nodeGroup, nodeGroupGraph); // Assert.AreNotSame(nodeTran, nodeTranGraph); // Assert.AreEqual(7, nodeTranGraph.Transition.Ordinal); // y7 // graph.FirePickedPeak(nodeGroupGraph, nodeTranGraph, scaledRT); }); } if (i == 4) { PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile (2 of 2)", 15); // Chromatogram graph } } // New peak picking picks correct peak // RunUI(() => findAllForm.ActivateItem(3)); // PauseForScreenShot<GraphChromatogram>("Chromatogram graph metafile (3 of 3)", 15); RunUI(SkylineWindow.ToggleIntegrateAll); RunUI(findAllForm.Close); WaitForClosedForm(findAllForm); RestoreViewOnScreen(17); // Calculate new iRT values for human peptides, p. 16 { var editIrtCalc2 = ShowDialog <EditIrtCalcDlg>(SkylineWindow.ShowEditCalculatorDlg); RunUI(() => Assert.AreEqual(0, editIrtCalc2.LibraryPeptideCount)); var addPeptidesDlg = ShowDialog <AddIrtPeptidesDlg>(editIrtCalc2.AddResults); PauseForScreenShot <AddIrtPeptidesDlg>("Add Peptides form", 15); RunUI(() => { Assert.AreEqual(148, addPeptidesDlg.PeptidesCount); Assert.AreEqual(2, addPeptidesDlg.RunsConvertedCount); Assert.AreEqual(0, addPeptidesDlg.RunsFailedCount); }); var recalibrateDlg = ShowDialog <MultiButtonMsgDlg>(addPeptidesDlg.OkDialog); OkDialog(recalibrateDlg, recalibrateDlg.Btn1Click); PauseForScreenShot <EditIrtCalcDlg>("Edit iRT Calculator form", 16); RunUI(() => Assert.AreEqual(148, editIrtCalc2.LibraryPeptideCount)); RunUI(editIrtCalc2.OkDialog); WaitForClosedForm(editIrtCalc2); } // Check the RT regression, p. 17 WaitForRegression(); PauseForScreenShot <GraphSummary.RTGraphView>("RT Regression graph metafile", 17); RunUI(() => { VerifyRTRegression(0.15, 15.09, 0.99985); Assert.AreEqual(0, SkylineWindow.RTGraphController.Outliers.Length); SkylineWindow.SaveDocument(); SkylineWindow.HideFindResults(); }); // Recalibrate method to 90-minute gradient, p. 18 RunUI(() => SkylineWindow.OpenFile(GetTestPath("iRT Human+Standard.sky"))); // Not L10N RunDlg <FindNodeDlg>(SkylineWindow.ShowFindNodeDlg, findDlg => { findDlg.FindOptions = new FindOptions().ChangeText("NSAQ"); // Not L10N findDlg.FindNext(); findDlg.Close(); }); RunUI(SkylineWindow.EditDelete); { var peptideSettingsUI = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => { peptideSettingsUI.SelectedTab = PeptideSettingsUI.TABS.Prediction; peptideSettingsUI.ChooseRegression(irtPredictorName); peptideSettingsUI.IsUseMeasuredRT = true; peptideSettingsUI.TimeWindow = 5; }); PauseForScreenShot <PeptideSettingsUI.PredictionTab>("Peptide Settings - Prediction tab", 18); RunUI(peptideSettingsUI.OkDialog); WaitForClosedForm(peptideSettingsUI); } // Import 90-minute standard mix run, p. 19 const string unsched90MinFileroot = "A_D110913_SiRT_HELA_11_nsMRM_150selected_90min-5-40_TRID2215_01"; // Not L10N ImportNewResults(new[] { unsched90MinFileroot }, -1, false); WaitForGraphs(); // Verify regression graph, p. 19 RunUI(SkylineWindow.ShowRTRegressionGraphScoreToRun); WaitForRegression(); PauseForScreenShot <GraphSummary.RTGraphView>("RT Regression graph metafile", 19); RunUI(() => { VerifyRTRegression(0.40, 24.77, 0.9998); Assert.AreEqual(147, SkylineWindow.RTGraphController.Outliers.Length); }); // Check scheduling graph, p. 20 RunUI(SkylineWindow.ShowRTSchedulingGraph); RunDlg <SchedulingGraphPropertyDlg>(() => SkylineWindow.ShowRTPropertyDlg(SkylineWindow.GraphRetentionTime), propertyDlg => { propertyDlg.TimeWindows = new[] { 2.0, 5.0, 10.0 }; propertyDlg.OkDialog(); }); WaitForGraphs(); PauseForScreenShot <GraphSummary.RTGraphView>("RT Scheduling graph metafile", 20); // Export new 90-minute scheduled transition list, p. 22 const string scheduledBasename = "iRT Human+Standard"; // Not L10N { var exportMethodDlg = ShowDialog <ExportMethodDlg>(() => SkylineWindow.ShowExportMethodDialog(ExportFileType.List)); RunUI(() => { exportMethodDlg.ExportStrategy = ExportStrategy.Buckets; exportMethodDlg.MaxTransitions = 265; exportMethodDlg.MethodType = ExportMethodType.Scheduled; }); PauseForScreenShot <ExportMethodDlg.TransitionListView>("Export Transition List form", 21); RunUI(() => exportMethodDlg.OkDialog(GetTestPath(scheduledBasename + TextUtil.EXT_CSV))); WaitForClosedForm(exportMethodDlg); } Assert.AreEqual(1223 + (TestSmallMolecules ? 4 : 0), File.ReadAllLines(GetTestPath(scheduledBasename + "_0001.csv")).Length); // Not L10N Assert.IsFalse(File.Exists(GetTestPath("iRT Human+Standard_0002.csv"))); // Not L10N // Import scheduled data, p. 23 RunDlg <ManageResultsDlg>(SkylineWindow.ManageResults, manageResultsDlg => { manageResultsDlg.RemoveAllReplicates(); manageResultsDlg.OkDialog(); }); RunUI(() => SkylineWindow.SaveDocument()); const string sched90MinFileroot = "A_D110913_SiRT_HELA_11_sMRM_150selected_90min-5-40_SIMPLE"; // Not L10N ImportNewResults(new[] { sched90MinFileroot }, -1, false); RunUI(SkylineWindow.ShowRTRegressionGraphScoreToRun); WaitForRegression(); PauseForScreenShot <GraphSummary.RTGraphView>("RT Regression graph metafile", 23); // Review regression and outliers, p. 24 RunUI(() => { VerifyRTRegression(0.358, 25.920, 0.91606); Assert.AreEqual(0, SkylineWindow.RTGraphController.Outliers.Length); }); RunDlg <RegressionRTThresholdDlg>(SkylineWindow.ShowRegressionRTThresholdDlg, thresholdDlg => { thresholdDlg.Threshold = 0.998; thresholdDlg.OkDialog(); }); PauseForScreenShot <GraphSummary.RTGraphView>("RT Regression graph metafile", 24); // Verify 2 outliers highlighed and removed, p. 25 WaitForConditionUI(() => SkylineWindow.RTGraphController.Outliers.Length == 2); RunUI(() => { VerifyRTRegression(0.393, 24.85, 0.9989); SkylineWindow.RemoveRTOutliers(); }); WaitForRegression(); PauseForScreenShot <GraphSummary.RTGraphView>("RT Regression graph metafile", 25); // Check outlier removal, p. 25 RunUI(() => { VerifyRTRegression(0.393, 24.85, 0.9989); Assert.AreEqual(0, SkylineWindow.RTGraphController.Outliers.Length); }); // Review a peak and its predicted retention time, p. 26 RunDlg <FindNodeDlg>(SkylineWindow.ShowFindNodeDlg, findDlg => { findDlg.FindOptions = new FindOptions().ChangeText("DATNVG"); // Not L10N findDlg.FindNext(); findDlg.Close(); }); WaitForGraphs(); RestoreViewOnScreen(27); PauseForScreenShot <GraphChromatogram>("Chromatogram graph metafile", 26); // Chromatogram graph RunUI(() => { var graphChrom = SkylineWindow.GetGraphChrom(sched90MinFileroot); Assert.IsTrue(graphChrom.BestPeakTime.HasValue); Assert.AreEqual(47.3, graphChrom.BestPeakTime.Value, 0.05); Assert.IsTrue(graphChrom.PredictedRT.HasValue); Assert.AreEqual(47.6, graphChrom.PredictedRT.Value, 0.05); }); // Import retention times from a spectral library, p. 27 RestoreViewOnScreen(17); // get regression graph back { var editIrtCalc = ShowDialog <EditIrtCalcDlg>(SkylineWindow.ShowEditCalculatorDlg); var addLibrayDlg = ShowDialog <AddIrtSpectralLibrary>(editIrtCalc.AddLibrary); RunUI(() => { addLibrayDlg.Source = SpectralLibrarySource.file; addLibrayDlg.FilePath = GetTestPath(Path.Combine("Yeast+Standard", // Not L10N "Yeast_iRT_C18_0_00001.blib")); // Not L10N }); PauseForScreenShot <AddIrtSpectralLibrary>("Add Spectral Library form", 27); // Verify converted peptide iRT values and OK dialogs, p. 28 var addPeptidesDlg = ShowDialog <AddIrtPeptidesDlg>(addLibrayDlg.OkDialog); RunUI(() => { Assert.AreEqual(558, addPeptidesDlg.PeptidesCount); Assert.AreEqual(1, addPeptidesDlg.RunsConvertedCount); // Libraries now convert through internal alignment to single RT scale Assert.AreEqual(3, addPeptidesDlg.KeepPeptidesCount); }); PauseForScreenShot <AddIrtPeptidesDlg>("Add Peptides form", 28); var recalibrateDlg = ShowDialog <MultiButtonMsgDlg>(addPeptidesDlg.OkDialog); OkDialog(recalibrateDlg, recalibrateDlg.Btn1Click); Assert.IsTrue(WaitForConditionUI(() => editIrtCalc.LibraryPeptideCount == 706)); RunUI(editIrtCalc.OkDialog); WaitForClosedForm(editIrtCalc); } // Inspect MS1 filtered Skyline file created from library DDA data, p. 29 RunUI(() => SkylineWindow.OpenFile(GetTestPath(Path.Combine("Yeast+Standard", // Not L10N "Yeast+Standard (refined) - 2min.sky")))); WaitForDocumentLoaded(); RunUI(() => SkylineWindow.SelectedPath = SkylineWindow.DocumentUI.GetPathTo((int)SrmDocument.Level.Molecules, 0)); WaitForRegression(); // Verify numbers that show up in the screenshot RunUI(() => { // If the cache gets rebuilt, then because the chromatograms // were minimized, the peak picking is not exactly the same // using the minimized chromatograms. VerifyRTRegression(0.3, 19.37, 0.9998); var graphChrom = SkylineWindow.GetGraphChrom("Velos_2011_1110_RJ_16"); // Not L10N Assert.AreEqual(37.6, graphChrom.RetentionMsMs[0], 0.05); Assert.IsTrue(graphChrom.BestPeakTime.HasValue); Assert.AreEqual(37.6, graphChrom.BestPeakTime.Value, 0.05); graphChrom = SkylineWindow.GetGraphChrom("Velos_2011_1110_RJ_14"); // Not L10N Assert.AreEqual(37.3, graphChrom.RetentionMsMs[0], 0.05); Assert.AreEqual(37.6, graphChrom.RetentionMsMs[1], 0.05); Assert.IsTrue(graphChrom.BestPeakTime.HasValue); Assert.AreEqual(37.4, graphChrom.BestPeakTime.Value, 0.05); }); PauseForScreenShot("Main window", 29); // Add results and verify add dialog counts, p. 29-30 { var editIrtCalc = ShowDialog <EditIrtCalcDlg>(SkylineWindow.ShowEditCalculatorDlg); var addPeptidesDlg = ShowDialog <AddIrtPeptidesDlg>(editIrtCalc.AddResults); RunUI(() => { Assert.AreEqual(0, addPeptidesDlg.PeptidesCount); Assert.AreEqual(2, addPeptidesDlg.RunsConvertedCount); Assert.AreEqual(558, addPeptidesDlg.OverwritePeptidesCount); Assert.AreEqual(3, addPeptidesDlg.ExistingPeptidesCount); }); PauseForScreenShot <AddIrtPeptidesDlg>("Add Peptides form", 30); var recalibrateDlg = ShowDialog <MultiButtonMsgDlg>(addPeptidesDlg.OkDialog); OkDialog(recalibrateDlg, recalibrateDlg.Btn1Click); RunUI(editIrtCalc.OkDialog); WaitForClosedForm(editIrtCalc); } RunUI(() => SkylineWindow.SaveDocument()); RunUI(SkylineWindow.NewDocument); }
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() { const double peakWidthZoomFactor = 2.0; RunUI(() => { SkylineWindow.OpenFile(TestFilesDir.GetTestPath("NoQuantitativeTransitionsTest.sky")); SkylineWindow.AutoZoomBestPeak(); }); WaitForDocumentLoaded(); RunDlg <ChromChartPropertyDlg>(SkylineWindow.ShowChromatogramProperties, dlg => { dlg.TimeRange = peakWidthZoomFactor; dlg.IsPeakWidthRelative = true; dlg.OkDialog(); }); // Do a rescore so that we can be sure that the way things are in the document and exactly // how the current version of Skyline calculates them var manageResultsDlg = ShowDialog <ManageResultsDlg>(SkylineWindow.ManageResults); RunDlg <RescoreResultsDlg>(manageResultsDlg.Rescore, dlg => dlg.Rescore(false)); WaitForDocumentLoaded(); var document = SkylineWindow.Document; // Make sure that the TransitionGroupChromInfo's have their values set based on the quantitative peaks, unless there // are no quantitative peaks foreach (var transitionGroupDocNode in document.MoleculeTransitionGroups) { for (int iReplicate = 0; iReplicate < transitionGroupDocNode.Results.Count; iReplicate++) { var transitionGroupChromInfo = transitionGroupDocNode.Results[iReplicate][0]; var quanChromInfos = new List <TransitionChromInfo>(); var nonQuanChromInfos = new List <TransitionChromInfo>(); foreach (var t in transitionGroupDocNode.Transitions) { var chromInfo = t.Results[iReplicate][0]; if (chromInfo.IsEmpty) { continue; } if (t.IsQuantitative(document.Settings)) { quanChromInfos.Add(chromInfo); } else { nonQuanChromInfos.Add(chromInfo); } } if (quanChromInfos.Any()) { AssertEx.AreEqual(transitionGroupChromInfo.StartRetentionTime, quanChromInfos.Min(c => c.StartRetentionTime)); AssertEx.AreEqual(transitionGroupChromInfo.EndRetentionTime, quanChromInfos.Max(c => c.EndRetentionTime)); AssertEx.AreEqual(transitionGroupChromInfo.Height, quanChromInfos.Max(c => c.Height)); } else { AssertEx.AreEqual(transitionGroupChromInfo.StartRetentionTime, nonQuanChromInfos.Min(c => c.StartRetentionTime)); AssertEx.AreEqual(transitionGroupChromInfo.EndRetentionTime, nonQuanChromInfos.Max(c => c.EndRetentionTime)); AssertEx.IsNull(transitionGroupChromInfo.Height); } } } // Verify that the chromatogram graph correctly zooms to the best quantitative peak, or, // if there are no quantitative peaks, falls back to the best non-quantitative peak, // or is zoomed out entirely foreach (var displayTypeChrom in new[] { DisplayTypeChrom.all, DisplayTypeChrom.single, DisplayTypeChrom.total }) { RunUI(() => SkylineWindow.SetDisplayTypeChrom(displayTypeChrom)); for (int iReplicate = 0; iReplicate < document.Settings.MeasuredResults.Chromatograms.Count; iReplicate++) { var chromatogramSet = document.Settings.MeasuredResults.Chromatograms[iReplicate]; var graphChrom = SkylineWindow.GetGraphChrom(chromatogramSet.Name); RunUI(() => { graphChrom.Activate(); graphChrom.Focus(); }); foreach (var protein in SkylineWindow.Document.MoleculeGroups) { foreach (var peptide in protein.Molecules) { foreach (var precursor in peptide.TransitionGroups) { foreach (var transition in precursor.Transitions) { RunUI(() => { SkylineWindow.SelectedPath = new IdentityPath(protein.Id, peptide.Id, precursor.Id, transition.Id); SkylineWindow.AutoZoomNone(); SkylineWindow.AutoZoomBestPeak(); }); var transitionChromInfos = new List <TransitionChromInfo>(); if (displayTypeChrom == DisplayTypeChrom.single) { var transitionChromInfo = transition.Results[iReplicate][0]; if (!transitionChromInfo.IsEmpty) { transitionChromInfos.Add(transitionChromInfo); } } else { transitionChromInfos.AddRange(precursor.Transitions.Where(t => t.ExplicitQuantitative) .Select(t => t.Results[iReplicate][0]).Where(t => !t.IsEmpty)); if (!transitionChromInfos.Any()) { if (displayTypeChrom != DisplayTypeChrom.total || precursor.Transitions.All(t => !t.ExplicitQuantitative)) { transitionChromInfos.AddRange(precursor.Transitions .Select(t => t.Results[iReplicate][0]).Where(t => !t.IsEmpty)); } } } var zoomState = graphChrom.ZoomState; if (transitionChromInfos.Any()) { var peakStartTime = transitionChromInfos.Min(t => t.StartRetentionTime); var peakEndTime = transitionChromInfos.Max(t => t.EndRetentionTime); var midPeak = (peakStartTime + peakEndTime) / 2; var halfPeakWidth = (peakEndTime - peakStartTime) / 2; double expectedZoomStart = midPeak - halfPeakWidth * peakWidthZoomFactor; double expectedZoomEnd = midPeak + halfPeakWidth * peakWidthZoomFactor; const double tolerance = .001; AssertEx.AreEqual(expectedZoomStart, zoomState.XAxis.Min, tolerance); AssertEx.AreEqual(expectedZoomEnd, zoomState.XAxis.Max, tolerance); } else { var expectedStart = graphChrom.ChromGroupInfos[0].TimeIntensitiesGroup.MinTime; var expectedEnd = graphChrom.ChromGroupInfos[0].TimeIntensitiesGroup.MaxTime; AssertEx.IsTrue(zoomState.XAxis.Min <= expectedStart); AssertEx.IsTrue(zoomState.XAxis.Max >= expectedEnd); } } } } } } } }
private void TofTest() { // Working wih High-Resolution Mass Spectra. // Import a new Document. High-Resolution Mass Spectra, working with TOF p22. string newDocumentFile = GetTestPath(@"TOF\BSA_Agilent.sky"); WaitForCondition(() => File.Exists(newDocumentFile)); RunUI(() => SkylineWindow.OpenFile(newDocumentFile)); bool asSmallMolecules = AsSmallMoleculesTestMode != RefinementSettings.ConvertToSmallMoleculesMode.none; if (asSmallMolecules) { ConvertDocumentToSmallMolecules(AsSmallMoleculesTestMode); } var docCalibrate1 = WaitForDocumentLoaded(); const int pepCount1 = 5, preCount1 = 5, tranCount1 = 30; AssertEx.IsDocumentState(docCalibrate1, null, 1, pepCount1, preCount1, tranCount1); // Try to import a file to show it fails. ImportResultsDlg importResultsDlg3 = ShowDialog <ImportResultsDlg>(SkylineWindow.ImportResults); RunUI(() => importResultsDlg3.NamedPathSets = importResultsDlg3.GetDataSourcePathsFileReplicates( new[] { MsDataFileUri.Parse(GetTestPath(@"TOF\6-BSA-500fmol" + ExtAgilentRaw)) })); var importProgress = ShowDialog <AllChromatogramsGraph>(importResultsDlg3.OkDialog); WaitForDocumentChangeLoaded(docCalibrate1); WaitForConditionUI(() => importProgress.Finished); string expectedErrorFormat = Resources.NoFullScanFilteringException_NoFullScanFilteringException_To_extract_chromatograms_from__0__full_scan_settings_must_be_enabled_; WaitForConditionUI(() => !string.IsNullOrEmpty(importProgress.Error), "Missing expected error text: " + expectedErrorFormat); RunUI(() => AssertEx.AreComparableStrings(expectedErrorFormat, importProgress.Error, 1)); RunUI(() => { importProgress.ClickClose(); SkylineWindow.Undo(); }); var document = SkylineWindow.Document; // Fill out Transition Settings Menu int tranCount2 = (AsSmallMoleculesTestMode != RefinementSettings.ConvertToSmallMoleculesMode.masses_only) ? (tranCount1 + preCount1 * 3) : (tranCount1 + preCount1); // No iostopes for mass-only document using (new CheckDocumentState(1, pepCount1, preCount1, tranCount2)) { var transitionSettingsUI = ShowDialog <TransitionSettingsUI>(SkylineWindow.ShowTransitionSettingsUI); RunUI(() => { transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.FullScan; transitionSettingsUI.PrecursorIsotopesCurrent = FullScanPrecursorIsotopes.Count; transitionSettingsUI.PrecursorMassAnalyzer = FullScanMassAnalyzerType.tof; transitionSettingsUI.Peaks = 3; transitionSettingsUI.AcquisitionMethod = FullScanAcquisitionMethod.Targeted; transitionSettingsUI.ProductMassAnalyzer = FullScanMassAnalyzerType.tof; }); PauseForScreenShot <TransitionSettingsUI.FullScanTab>("Transition Settings - Full-Scan tab for TOF", 28); RunUI(() => { transitionSettingsUI.RetentionTimeFilterType = RetentionTimeFilterType.none; transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.Filter; transitionSettingsUI.FragmentTypes += ", p"; }); PauseForScreenShot <TransitionSettingsUI.FilterTab>("Transition Settings - Filter tab", 29); OkDialog(transitionSettingsUI, transitionSettingsUI.OkDialog); } var docHighRes = WaitForDocumentChange(document); var tranSettingsHighRes = docHighRes.Settings.TransitionSettings; Assert.AreEqual(FullScanPrecursorIsotopes.Count, tranSettingsHighRes.FullScan.PrecursorIsotopes); Assert.AreEqual(FullScanMassAnalyzerType.tof, tranSettingsHighRes.FullScan.PrecursorMassAnalyzer); Assert.AreEqual(FullScanAcquisitionMethod.Targeted, tranSettingsHighRes.FullScan.AcquisitionMethod); Assert.IsTrue(ArrayUtil.EqualsDeep(new[] { IonType.y, IonType.b, IonType.precursor }, tranSettingsHighRes.Filter.IonTypes)); RunUI(() => SkylineWindow.ExpandPrecursors()); // Assert each peptide contains 3 precursors transitions (unless this is a masses-only small molecule doc). foreach (var nodeGroup in SkylineWindow.Document.MoleculeTransitionGroups) { for (int i = 0; i < nodeGroup.Children.Count; i++) { var nodeTran = (TransitionDocNode)nodeGroup.Children[i]; if (i < ((AsSmallMoleculesTestMode == RefinementSettings.ConvertToSmallMoleculesMode.masses_only) ? 1 : 3)) { Assert.AreEqual(IonType.precursor, nodeTran.Transition.IonType); } else { Assert.AreNotEqual(IonType.precursor, nodeTran.Transition.IonType); } } } RestoreViewOnScreen(30); PauseForScreenShot("Targets View tree clipped from main window", 30); RunDlg <ImportResultsDlg>(SkylineWindow.ImportResults, importResultsDlg2 => { string[] filePaths = { GetTestPath(@"TOF\6-BSA-500fmol" + ExtAgilentRaw) }; importResultsDlg2.NamedPathSets = importResultsDlg2.GetDataSourcePathsFileReplicates(filePaths.Select(MsDataFileUri.Parse)); importResultsDlg2.OkDialog(); }); WaitForDocumentChangeLoaded(docHighRes); if (AsSmallMoleculesTestMode != RefinementSettings.ConvertToSmallMoleculesMode.masses_only) { FindNode(asSmallMolecules ? "LVNELTEFAK" : "K.LVNELTEFAK.T [65, 74]"); } else { FindNode(document.MoleculeTransitionGroups.First().CustomIon.DisplayName); } RunUI(() => { SkylineWindow.CollapsePrecursors(); SkylineWindow.AutoZoomNone(); SkylineWindow.ShowGraphPeakArea(false); SkylineWindow.ShowProductTransitions(); }); RestoreViewOnScreen(31); RunUI(() => SkylineWindow.Width = 1013); PauseForScreenShot("Main window full gradient import of high concentration and Targets tree clipped", 31); { var peptideSettingsUI = ShowDialog <PeptideSettingsUI>(SkylineWindow.ShowPeptideSettingsUI); RunUI(() => { peptideSettingsUI.SelectedTab = PeptideSettingsUI.TABS.Prediction; Assert.IsTrue(peptideSettingsUI.IsUseMeasuredRT); Assert.AreEqual(2.0, peptideSettingsUI.TimeWindow); }); PauseForScreenShot <PeptideSettingsUI.PredictionTab>("Peptide Settings - Prediction tab", 32); OkDialog(peptideSettingsUI, peptideSettingsUI.CancelDialog); } using (new CheckDocumentState(1, pepCount1, preCount1, tranCount2)) { var transitionSettingsUI = ShowDialog <TransitionSettingsUI>(SkylineWindow.ShowTransitionSettingsUI); RunUI(() => { transitionSettingsUI.SelectedTab = TransitionSettingsUI.TABS.FullScan; transitionSettingsUI.SetRetentionTimeFilter(RetentionTimeFilterType.scheduling_windows, 1); }); PauseForScreenShot <TransitionSettingsUI.FullScanTab>("Transition Settings - Full-Scan tab wtih scheduled extraction", 33); OkDialog(transitionSettingsUI, transitionSettingsUI.OkDialog); } var chooseSchedulingReplicateDlg = ShowDialog <ChooseSchedulingReplicatesDlg>(SkylineWindow.ImportResults); RunUI(() => { // Make sure UI is up to date to avoid race condition chooseSchedulingReplicateDlg.UpdateUi(); chooseSchedulingReplicateDlg.SelectOrDeselectAll(true); }); RunDlg <ImportResultsDlg>(chooseSchedulingReplicateDlg.OkDialog, importResultsDlg2 => { string[] filePaths = { GetTestPath(@"TOF\1-BSA-50amol" + ExtAgilentRaw), GetTestPath(@"TOF\2-BSA-100amol" + ExtAgilentRaw), GetTestPath(@"TOF\3-BSA-1fmol" + ExtAgilentRaw), GetTestPath(@"TOF\4-BSA-10fmol" + ExtAgilentRaw), GetTestPath(@"TOF\5-BSA-100fmol" + ExtAgilentRaw), }; importResultsDlg2.NamedPathSets = importResultsDlg2.GetDataSourcePathsFileReplicates(filePaths.Select(MsDataFileUri.Parse)); importResultsDlg2.OkDialog(); }); //Give the Raw files some time to be processed. WaitForCondition(15 * 60 * 1000, () => SkylineWindow.Document.Settings.HasResults && SkylineWindow.Document.Settings.MeasuredResults.IsLoaded); // 15 minutes WaitForClosedAllChromatogramsGraph(); RunUI(() => SkylineWindow.ShowGraphSpectrum(false)); WaitForGraphs(); TryWaitForConditionUI(() => SkylineWindow.GraphChromatograms.Count(graphChrom => !graphChrom.IsHidden) == 6); RunUI(() => { Assert.IsFalse(SkylineWindow.IsGraphSpectrumVisible); var listGraphs = SkylineWindow.GraphChromatograms.Where(graphChrom => !graphChrom.IsHidden).ToList(); if (listGraphs.Count != 6) { string hiddenGraphs = string.Empty; var listHidden = SkylineWindow.GraphChromatograms.Where(graphChrom => graphChrom.IsHidden).ToList(); if (listHidden.Count != 0) { hiddenGraphs = TextUtil.LineSeparate(string.Empty, "Hidden:", TextUtil.LineSeparate(listHidden.Select(g => g.TabText))); } Assert.Fail(TextUtil.LineSeparate(string.Format("Expecting 6 visible graphs but found {0}", listGraphs.Count), TextUtil.LineSeparate(listGraphs.Select(g => g.TabText)), hiddenGraphs)); } var chromGraphs = SkylineWindow.GraphChromatograms.ToArray(); Assert.AreEqual(6, chromGraphs.Length); }); RunDlg <ManageResultsDlg>(SkylineWindow.ManageResults, dlg => { for (int i = 0; i < 5; i++) { dlg.MoveDown(); } dlg.OkDialog(); }); RunDlg <ArrangeGraphsGroupedDlg>(SkylineWindow.ArrangeGraphsGrouped, dlg => { dlg.Groups = 6; dlg.GroupOrder = GroupGraphsOrder.Document; dlg.OkDialog(); }); WaitForGraphs(); RunUI(() => SkylineWindow.Height = 768); PauseForScreenShot("Chromatogram graphs clipped from main window", 34); RunUI(() => { var graphChrom6 = SkylineWindow.GetGraphChrom("6-BSA-500fmol"); var graphChrom5 = SkylineWindow.GetGraphChrom("5-BSA-100fmol"); var graphChrom4 = SkylineWindow.GetGraphChrom("4-BSA-10fmol"); var graphChrom3 = SkylineWindow.GetGraphChrom("3-BSA-1fmol"); var graphChrom2 = SkylineWindow.GetGraphChrom("2-BSA-100amol"); var graphChrom1 = SkylineWindow.GetGraphChrom("1-BSA-50amol"); Assert.AreEqual(13.3, graphChrom6.BestPeakTime ?? 0, 0.05); Assert.AreEqual(13.5, graphChrom5.BestPeakTime ?? 0, 0.05); Assert.AreEqual(13.6, graphChrom4.BestPeakTime ?? 0, 0.05); Assert.AreEqual(13.6, graphChrom3.BestPeakTime ?? 0, 0.05); Assert.AreEqual(13.6, graphChrom2.BestPeakTime ?? 0, 0.05); Assert.AreEqual(13.6, graphChrom1.BestPeakTime ?? 0, 0.05); }); RunUI(SkylineWindow.AutoZoomBestPeak); WaitForGraphs(); PauseForScreenShot("Chromatogram graphs clipped from main window zoomed", 35); RunUI(() => { SkylineWindow.ShowPeakAreaReplicateComparison(); SkylineWindow.ShowPeptideLogScale(true); }); // p. 28 PauseForScreenShot <GraphSummary.AreaGraphView>("Peak Areas Replicate Comparison graph metafile", 36); WaitForDotProducts(); RunUI(() => { Assert.AreEqual((AsSmallMoleculesTestMode == RefinementSettings.ConvertToSmallMoleculesMode.none) ? 7 : 6, SkylineWindow.GraphPeakArea.Categories.Count()); Assert.AreEqual(6, SkylineWindow.GraphPeakArea.CurveCount); }); VerifyDotProducts(0.87, 0.67, 0.91, 0.90, 0.90, 0.90); RunUI(() => { SkylineWindow.ShowAllTransitions(); SkylineWindow.ShowSplitChromatogramGraph(false); SkylineWindow.ArrangeGraphsTabbed(); SkylineWindow.ActivateReplicate("6-BSA-500fmol"); SkylineWindow.Size = new Size(745, 545); SkylineWindow.ShowGraphPeakArea(false); }); PauseForScreenShot("Chromatogram graph metafile for 500 fmol", 37); RunUI(() => { SkylineWindow.ShowGraphPeakArea(true); SkylineWindow.ShowPrecursorTransitions(); SkylineWindow.ArrangeGraphsTiled(); SkylineWindow.ActivateReplicate("4-BSA-10fmol"); }); WaitForDotProducts(); RunUI(() => { Assert.AreEqual(7, SkylineWindow.GraphPeakArea.Categories.Count()); Assert.AreEqual((AsSmallMoleculesTestMode != RefinementSettings.ConvertToSmallMoleculesMode.masses_only) ? 3 : 1, SkylineWindow.GraphPeakArea.CurveCount); }); VerifyDotProducts(0.99, 0.52, 0.98, 1.00, 1.00, 1.00); RunUI(() => { SkylineWindow.ShowGraphPeakArea(false); SkylineWindow.Size = new Size(1013, 768); }); PauseForScreenShot("Main window", 38); RunUI(SkylineWindow.ShowPeakAreaReplicateComparison); PauseForScreenShot <GraphSummary.AreaGraphView>("Peak Areas Replicate Comparison graph metafile", 39); RunUI(() => SkylineWindow.SaveDocument()); WaitForConditionUI(() => !SkylineWindow.Dirty); }