From 5bc56a3dcdbc77319478a6948ab73044b37ab75b Mon Sep 17 00:00:00 2001 From: Nicholas Shulman Date: Tue, 18 Aug 2026 14:53:11 -0700 Subject: [PATCH 1/7] Stop filtering out spectra that have zero m/z intensity pairs. --- pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs b/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs index fbe1eaa4f0d..479fe7b3915 100644 --- a/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs +++ b/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs @@ -1218,9 +1218,6 @@ private SpectrumInfo ReadSpectrum(ref int i) // Assertion for testing ID to spectrum index support // int iFromId = dataFile.GetSpectrumIndex(dataSpectrum.Id); // Assume.IsTrue(i == iFromId); - if (nextSpectrum.Mzs.Length == 0) - continue; - double? rt = nextSpectrum.RetentionTime; if (!rt.HasValue) continue; @@ -1574,7 +1571,7 @@ public MsDataSpectrum[] Lookahead(MsDataSpectrum dataSpectrum, out double? rt) while (_lookAheadIndex++ < _lenSpectra) { _rt = dataSpectrum.RetentionTime; - if (_rt.HasValue && dataSpectrum.Mzs.Length != 0) + if (_rt.HasValue) { spectrumList.Add(dataSpectrum); if (!rtReported.HasValue) From 8c424a822e34de821850e2e05516f27d469e316d Mon Sep 17 00:00:00 2001 From: Nicholas Shulman Date: Tue, 18 Aug 2026 16:56:43 -0700 Subject: [PATCH 2/7] Add ZeroLengthSpectraTest --- .../Model/Results/SpectraChromDataProvider.cs | 4 +- .../TestFunctional/TestFunctional.csproj | 1 + .../TestFunctional/ZeroLengthSpectraTest.cs | 43 + .../ZeroLengthSpectraTest.data/S_1.mzML | 3286 +++++++++++++++++ .../ZeroLengthSpectraTest.sky | 90 + 5 files changed, 3422 insertions(+), 2 deletions(-) create mode 100644 pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs create mode 100644 pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML create mode 100644 pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky diff --git a/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs b/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs index 479fe7b3915..b56fd893ffc 100644 --- a/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs +++ b/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs @@ -1627,7 +1627,7 @@ public MsDataSpectrum[] Lookahead(MsDataSpectrum dataSpectrum, out double? rt) while (_lookAheadIndex++ < _lenSpectra) { _rt = dataSpectrum.RetentionTime; - if (_rt.HasValue && dataSpectrum.Mzs.Length != 0) + if (_rt.HasValue) { spectrumList.Add(dataSpectrum); rtTotal += dataSpectrum.RetentionTime.Value; @@ -1646,7 +1646,7 @@ public MsDataSpectrum[] Lookahead(MsDataSpectrum dataSpectrum, out double? rt) { // No need to search forward, this isn't IMS or Agilent ramped-CE data rtReported = dataSpectrum.RetentionTime; - if (rtReported.HasValue && dataSpectrum.Mzs.Length != 0) + if (rtReported.HasValue) { spectrumList.Add(dataSpectrum); } diff --git a/pwiz_tools/Skyline/TestFunctional/TestFunctional.csproj b/pwiz_tools/Skyline/TestFunctional/TestFunctional.csproj index 3ad6b33f2cd..c6f8cab65b0 100644 --- a/pwiz_tools/Skyline/TestFunctional/TestFunctional.csproj +++ b/pwiz_tools/Skyline/TestFunctional/TestFunctional.csproj @@ -556,6 +556,7 @@ + diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs new file mode 100644 index 00000000000..1be2e95f1e6 --- /dev/null +++ b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using pwiz.CommonMsData; +using pwiz.ProteowizardWrapper; +using pwiz.SkylineTestUtil; + +namespace pwiz.SkylineTestFunctional +{ + [TestClass] + public class ZeroLengthSpectraTest : AbstractFunctionalTest + { + [TestMethod] + public void TestZeroLengthSpectra() + { + TestFilesZip = @"TestFunctional\ZeroLengthSpectraTest.zip"; + RunFunctionalTest(); + } + + protected override void DoTest() + { + RunUI(()=>SkylineWindow.OpenFile(TestFilesDir.GetTestPath("ZeroLengthSpectraTest.sky"))); + var msDataFilePath = new MsDataFilePath(TestFilesDir.GetTestPath("S_1.mzML")); + ImportResultsFile(msDataFilePath.FilePath); + using var dataFile = msDataFilePath.OpenMsDataFile(new OpenMsDataFileParams()); + var ms1Spectra = Enumerable.Range(0, dataFile.SpectrumCount).Select(dataFile.GetSpectrum) + .Where(spectrum => spectrum.Level == 1).ToList(); + var emptyMs1Spectra = ms1Spectra.Where(spectrum => spectrum.Mzs.Length == 0).ToList(); + Assert.AreNotEqual(0, emptyMs1Spectra.Count); + Assert.AreNotEqual(emptyMs1Spectra.Count, ms1Spectra.Count); + var document = SkylineWindow.Document; + var peptideDocNode = document.Molecules.First(); + Assert.IsTrue(document.MeasuredResults.TryLoadChromatogram(0, peptideDocNode, peptideDocNode.TransitionGroups.First(), (float) document.Settings.TransitionSettings.Instrument.MzMatchTolerance, out var chromatogramGroupInfos)); + Assert.AreEqual(1, chromatogramGroupInfos.Length); + var chromatogramInfo = chromatogramGroupInfos[0].GetRawTransitionInfo(0); + Assert.IsNotNull(chromatogramInfo); + Assert.AreEqual(ms1Spectra.Count, chromatogramInfo.Times.Count); + } + } +} diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML new file mode 100644 index 00000000000..ae7b28dbc2f --- /dev/null +++ b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML @@ -0,0 +1,3286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxTOevtrKHY5vD5xuMZKUptDpLTYqfOANJtR8q1JJTbHADiBw0u + + + + + + eJxr++7rJv56j9vXgE1uLTEb3QFH1wgq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxbzhrweaJSm8MEs57HAsptDloOHbWztdocAHyFCZE= + + + + + + eJy7J7Ha/bXfBPcDFlbuACdJBXI= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJyLXVkWOUWpzWGF970GeeU2BwA71Aar + + + + + + eJx7kxDsbq4+1R0AEB8DIQ== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxTUS916VJqc/h0mktVRrnNAQAuFAVo + + + + + + eJw7fiTH/atPpzsAFZgEUA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJy7L77uw3SlNgeup5F7lJXbHABDqQck + + + + + + eJzj1Zjnzskm4g4AB0QBhQ== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxbH9FbNVGpzWHK5SZBWeU2BwA9vQaI + + + + + + eJwrMDd1v8fU4Q4ADH8C0w== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJy7rPLl9BSlNoeXYZwHerXaHABIewe4 + + + + + + eJyzPt/p/rtazh0AEgIDtg== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJwLa/4cOUmpzQEAEbYDoA== + + + + + + eJxz6o53BwADsgF0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzbUe2pOUWpzQEAD6oDIg== + + + + + + eJx7G1DjDgAF5wIB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzr4jf1m6jU5nBh/uRfU7XaHAA3dgcX + + + + + + eJw7d2Ct29vlHO4AFyQEZQ== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJyLmKLoMk2pzQEADPgC0A== + + + + + + eJxbvPaNGwAGtQKD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJwL2Xbjd4dSmwMAFWsETg== + + + + + + eJx7mXPADQAGsgJc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJwLOXmgQUO5zQEAEXwDbw== + + + + + + eJzbniDiDgAEbwFz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzr1bytsFWpzcHzE0u3unKbAwA4VQYp + + + + + + eJw79m2d23FVRXcAFngEBQ== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxrOhPHoaHc5gAADl0Cxg== + + + + + + eJzr73F2BwAEsQGm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJyzcAuPeqfW5gAADPQDCg== + + + + + + eJyreTvTHQAGNAJK + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzjM1066Y1am0O2pGj5J602B8XcBdq62m0OhZvXTqjUa3MQbNt/+iOQBgBB1xCQ + + + + + + eJwLmy/v4XTvrvuVK91uh693uT060OAOAGz0Cu0= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxT/6Xgt0ytzaFZTq3uDZDmdH3M+lGrzYGxsWTFF702BwDOdQzc + + + + + + eJybXPrVTX3LBI/12oYe4hpH3AE+nQaU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzLuiIZLqXa5qBlfpP7jVqbQ51uLTO3RpsDA/f35R+12hyEbu/j6NFrcwi4/lf0E5AGAK0IEtE= + + + + + + eJxb8vywW7zQD49tNczuX3rXe2js2e02P0fKAwCbWQuM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzLiFKpEFJrc+A9KOT1FkhrMjC4bNFqczh/iP/teyDt9EyPfatem8OrByJtn4A0AKlOEy0= + + + + + + eJw79mi325kNOp4P0xe5mZff9xCo3Os2x2m2BwCjeAvt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJwrbGVM3arW5hB353b2WyDNKPDm3TPNNoePkW6l/VptDuUr0ns/AunvTl3zPum1OQAAIp8W1g== + + + + + + eJxj2i7s/vyFn+cf711utcor3T4nSHg2xM72AACI3QrE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJwT8FHf+UatzeHsJO/u91ptDuLXd67eotfm4JPLdukTkAYA7iEOmg== + + + + + + eJyTU1ziudax3bPbS87donu/BwAwBgXv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJyzkVhw+ZFqm8P6wAvMcmptDrxfRb5sAdK6Ri6Rb4G0pFJz5XuNNodrO7d8e6/V5vC7/4zQF702BwCqPxlt + + + + + + eJwBHADj/269okbE2JtG4ZV8RxLjsUnAxshGOLp5SR3Hq0jhXw7Y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxzFa7i3qzW5tDX0MP1Fkhv4fYL+qDV5rAxQk/4k16bAwDGlAxp + + + + + + eJxTPMnprrunxPPcNHVPfplgDwAxqAV7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJyzN1G8xKLc5pDhKbXpjVqbQ0GVtcISrTYHsf7rN94B6fLEuvgqvTaHuw0fxD8DaQDGyxQi + + + + + + eJzbaFXsXvKw2/Pgy/9ufz0UPJv4Rd3jDpV5AACXRQs3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxzPK2ylUu5zeHEemEzHZU2B51WDZk3am0O7bv2JL3XanPoWBpl2K3d5hC8JYqxRq/NIdvxwZ1PQBoAct4XDg== + + + + + + eJzzfd7kPmn5Ybe5jzs9M4+aet7wn+XGm6bufkpujQcAzScNAg== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJx7c7z2CLtym4PD8vLQLWptDlOSzwi9A9K/i06xaWu1OWxmcbnfCqTrYtb8eg+k7f5sZ9TSbnPI5LS68EWvzQEAsbgcXg== + + + + + + eJwBIADf/7HF0UdXDVRHRmQsSdC+p0a+ms1G7O3oSFm/0kZY4GNICPYQrw== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxja30s1qzY5vCy8sdjFuU2h4atZnfZVNoccnUv7upQbXNou67Ht1GtzcH6+USDt0C6b+3q7+vV2xyYBHu+vNNqc7DJ+1lzQrvN4dbPSn92vTYHjxifjYVAeo4KL8cnIA0AHrUp9A== + + + + + + eJwBMADP/5vuLUdtps1Hy4gAR2Z6Bkc9SARHkyAvSdRYE0ePs/NIDligRlDOqEa6HsZG1Y1mSOVMFDY= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzbx9P5gEe5zeF32fPWt2ptDuen2Cu912pzqHGL6v2s1+YAAP8VDxI= + + + + + + eJzjnsTv0RnP6rn28SmPAk1GDwAvUgWv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxbtD3ViVO5zcHscG7TRrU2hweTq3++BtJ966s73mu1OYh053oX6rU5aBYssf8MpAEYHxV0 + + + + + + eJxbUXnPfcuiGW5dbnc8Zsit8ogVWOC2oULaAwCYJgr1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxLKVLTZ1duc3hT9lXyjVqbwyke/bp69TaHpvat799ptTl8qbgf26Pd5vDruZhqmV6bw6rtD/d/AtIAwDgacA== + + + + + + eJxb+zfFXfHOWg+5iLluk3l9PQ4bbnLbpHjb7aP8CXcAvGkM1Q== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJwzeLs2hFu5zSH/wczw6WptDhf+JfW+BdL9PbODPmu1ORxjrI/o0Gtz+DAle8pHIA0AK/EW2A== + + + + + + eJy7Oa3FfbmZuLur2iqP9c52HgLqn9zmrGD2AAB7UAlJ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJy7Nkf5PI9ym0OBSIPdR7U2B8fLE6+kabU5qLpx9b8H0lJ7GH7k67U5HO248u47kAYA8ocVVg== + + + + + + eJxruWjh/nyhmsfior9uh16fdl/31su96YmeOwCjlgzp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzbsjZwGrtym4NSlknrG7U2h96zR31rtNocgvfEbnoNpNk2ThO9odfm8FmpIp9fv80BAPyKFFU= + + + + + + eJx7fyfVfXnGZ/d306+65drecPecY+JuIq/tDgCn3gtP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJybLDfBhEe5zWH1cus1JWptDvs8RGVfAumGugpFZq02h3My+962AWn5kM1N14H00hVSKSzabQ5FMov12fTbHAAjCxgw + + + + + + eJw7opTnnvxd1d3dgd1D8MZ+t4lRiu67bx10O5k63/3+8fVuAN0XDsQ= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJz7+Nwokku5zeGt/oeEF2ptDn8vOJfv0WtzAACV6QvO + + + + + + eJwzubPX/f79QveNwZzuACsBBd8= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzzzFDczq7c5rA3gfH8N602BwAxXQZN + + + + + + eJyLkhV25zxd5A4ACSgCXw== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJwzt7676LNSm0PErNJtwWptDmcO7L3/CkgDAJL+DCc= + + + + + + eJw7bSHo7pol4L5JeL07ABqYBB0= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzrc3y9iEm5zYHx0On93WptDhKFtjqfgDQAgKwJ3A== + + + + + + eJzLjr7gljnNxz3lvK47ACK6BRY= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzr3KM19YNamwMAEtcD4Q== + + + + + + eJxjbLvhBgADkAGm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzjNW98x6nc5gAAC3YCpg== + + + + + + eJyzStRwBwACpgEL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzTX7CI1US/zQEADG4CoA== + + + + + + eJw7NNPWHQAFmAHg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJxb2nHs3VetNgcAF9AExw== + + + + + + eJzrP3DAHQAGRwJX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky new file mode 100644 index 00000000000..36aadc6708f --- /dev/null +++ b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.98 + 0.995 + 0.995 + 0.99 + 0.99 + + + + + + + + MAVSKVYARS VYDSRGNPTV EVELTTEKGV FRSIVPSGAS TGVHEALEMR + DGDKSKWMGK GVLHAVKNVN DVIAPAFVKA NIDVKDQKAV DDFLISLDGT + ANKSKLGANA ILGVSLAASR AAAAEKNVPL YKHLADLSKS KTSPYVLPVP + FLNVLNGGSH AGGALALQEF MIAPTGAKTF AEALRIGSEV YHNLKSLTKK + RYGASAGNVG DEGGVAPNIQ TAEEALDLIV DAIKAAGHDG KVKIGLDCAS + SEFFKDGKYD LDFKNPNSDK SKWLTGPQLA DLYHSLMKRY PIVSIEDPFA + EDDWEAWSHF FKTAGIQIVA DDLTVTNPKR IATAIEKKAA DALLLKVNQI + GTLSESIKAA QDSFAAGWGV MVSHRSGETE DTFIADLVVG LRTGQIKTGA + PARSERLAKL NQLLRIEEEL GDNAVFAGEN FHHGDKL + + + + 708.864471 + 708.864471 + 24.170934 + + + 708.864471 + 709.365946 + 24.170934 + + + 708.864471 + 709.86729 + 24.170934 + + + + + 472.912073 + 472.912073 + 20.251659 + + + 472.912073 + 473.246389 + 20.251659 + + + 472.912073 + 473.580618 + 20.251659 + + + + + \ No newline at end of file From 8c680b7b8db4f81bb317e477518f39196bbd0c06 Mon Sep 17 00:00:00 2001 From: Nicholas Shulman Date: Tue, 18 Aug 2026 18:39:17 -0700 Subject: [PATCH 3/7] Update expected values in SettingsChangeReimportTest. Add ZeroLengthSpectraTest.zip --- .../SettingsChangeReimportTest.cs | 4 +- .../TestFunctional/ZeroLengthSpectraTest.cs | 23 +- .../ZeroLengthSpectraTest.data/S_1.mzML | 3286 ----------------- .../ZeroLengthSpectraTest.sky | 90 - .../TestFunctional/ZeroLengthSpectraTest.zip | Bin 0 -> 15406 bytes 5 files changed, 20 insertions(+), 3383 deletions(-) delete mode 100644 pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML delete mode 100644 pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky create mode 100644 pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.zip diff --git a/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs b/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs index f2a235bb598..68d381a4325 100644 --- a/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs +++ b/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs @@ -57,7 +57,7 @@ protected override void DoTest() Assert.AreEqual(1, transitionGroup.Results.Count); var transitionGroupChromInfo = transitionGroup.Results[0].First(); // Verify the peak area is what we expect - Assert.AreEqual(1.460189E+08f, transitionGroupChromInfo.Area.Value); + Assert.AreEqual(147639168, transitionGroupChromInfo.Area.Value); // Reimport the file with "UseSelectiveExtraction" set to "true" RunUI(() => SkylineWindow.ModifyDocument("Change selective extraction", @@ -87,7 +87,7 @@ protected override void DoTest() Assert.AreEqual(1, transitionGroup.Results.Count); transitionGroupChromInfo = transitionGroup.Results[0].First(); // Verify that the peak area is a smaller number because the chromatogram extraction was more selective - Assert.AreEqual(119880880f, transitionGroupChromInfo.Area.Value); + Assert.AreEqual(121269248f, transitionGroupChromInfo.Area.Value); } } } diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs index 1be2e95f1e6..ceb6be67825 100644 --- a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs +++ b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs @@ -1,11 +1,24 @@ -using System; -using System.Collections.Generic; +/* + * Original author: Nicholas Shulman , + * MacCoss Lab, Department of Genome Sciences, UW + * + * Copyright 2026 University of Washington - Seattle, WA + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ using System.Linq; -using System.Text; -using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using pwiz.CommonMsData; -using pwiz.ProteowizardWrapper; using pwiz.SkylineTestUtil; namespace pwiz.SkylineTestFunctional diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML deleted file mode 100644 index ae7b28dbc2f..00000000000 --- a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/S_1.mzML +++ /dev/null @@ -1,3286 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxTOevtrKHY5vD5xuMZKUptDpLTYqfOANJtR8q1JJTbHADiBw0u - - - - - - eJxr++7rJv56j9vXgE1uLTEb3QFH1wgq - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxbzhrweaJSm8MEs57HAsptDloOHbWztdocAHyFCZE= - - - - - - eJy7J7Ha/bXfBPcDFlbuACdJBXI= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJyLXVkWOUWpzWGF970GeeU2BwA71Aar - - - - - - eJx7kxDsbq4+1R0AEB8DIQ== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxTUS916VJqc/h0mktVRrnNAQAuFAVo - - - - - - eJw7fiTH/atPpzsAFZgEUA== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJy7L77uw3SlNgeup5F7lJXbHABDqQck - - - - - - eJzj1Zjnzskm4g4AB0QBhQ== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxbH9FbNVGpzWHK5SZBWeU2BwA9vQaI - - - - - - eJwrMDd1v8fU4Q4ADH8C0w== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJy7rPLl9BSlNoeXYZwHerXaHABIewe4 - - - - - - eJyzPt/p/rtazh0AEgIDtg== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJwLa/4cOUmpzQEAEbYDoA== - - - - - - eJxz6o53BwADsgF0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzbUe2pOUWpzQEAD6oDIg== - - - - - - eJx7G1DjDgAF5wIB - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzr4jf1m6jU5nBh/uRfU7XaHAA3dgcX - - - - - - eJw7d2Ct29vlHO4AFyQEZQ== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJyLmKLoMk2pzQEADPgC0A== - - - - - - eJxbvPaNGwAGtQKD - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJwL2Xbjd4dSmwMAFWsETg== - - - - - - eJx7mXPADQAGsgJc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJwLOXmgQUO5zQEAEXwDbw== - - - - - - eJzbniDiDgAEbwFz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzr1bytsFWpzcHzE0u3unKbAwA4VQYp - - - - - - eJw79m2d23FVRXcAFngEBQ== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxrOhPHoaHc5gAADl0Cxg== - - - - - - eJzr73F2BwAEsQGm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJyzcAuPeqfW5gAADPQDCg== - - - - - - eJyreTvTHQAGNAJK - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzjM1066Y1am0O2pGj5J602B8XcBdq62m0OhZvXTqjUa3MQbNt/+iOQBgBB1xCQ - - - - - - eJwLmy/v4XTvrvuVK91uh693uT060OAOAGz0Cu0= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxT/6Xgt0ytzaFZTq3uDZDmdH3M+lGrzYGxsWTFF702BwDOdQzc - - - - - - eJybXPrVTX3LBI/12oYe4hpH3AE+nQaU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzLuiIZLqXa5qBlfpP7jVqbQ51uLTO3RpsDA/f35R+12hyEbu/j6NFrcwi4/lf0E5AGAK0IEtE= - - - - - - eJxb8vywW7zQD49tNczuX3rXe2js2e02P0fKAwCbWQuM - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzLiFKpEFJrc+A9KOT1FkhrMjC4bNFqczh/iP/teyDt9EyPfatem8OrByJtn4A0AKlOEy0= - - - - - - eJw79mi325kNOp4P0xe5mZff9xCo3Os2x2m2BwCjeAvt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJwrbGVM3arW5hB353b2WyDNKPDm3TPNNoePkW6l/VptDuUr0ns/AunvTl3zPum1OQAAIp8W1g== - - - - - - eJxj2i7s/vyFn+cf711utcor3T4nSHg2xM72AACI3QrE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJwT8FHf+UatzeHsJO/u91ptDuLXd67eotfm4JPLdukTkAYA7iEOmg== - - - - - - eJyTU1ziudax3bPbS87donu/BwAwBgXv - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJyzkVhw+ZFqm8P6wAvMcmptDrxfRb5sAdK6Ri6Rb4G0pFJz5XuNNodrO7d8e6/V5vC7/4zQF702BwCqPxlt - - - - - - eJwBHADj/269okbE2JtG4ZV8RxLjsUnAxshGOLp5SR3Hq0jhXw7Y - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxzFa7i3qzW5tDX0MP1Fkhv4fYL+qDV5rAxQk/4k16bAwDGlAxp - - - - - - eJxTPMnprrunxPPcNHVPfplgDwAxqAV7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJyzN1G8xKLc5pDhKbXpjVqbQ0GVtcISrTYHsf7rN94B6fLEuvgqvTaHuw0fxD8DaQDGyxQi - - - - - - eJzbaFXsXvKw2/Pgy/9ufz0UPJv4Rd3jDpV5AACXRQs3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxzPK2ylUu5zeHEemEzHZU2B51WDZk3am0O7bv2JL3XanPoWBpl2K3d5hC8JYqxRq/NIdvxwZ1PQBoAct4XDg== - - - - - - eJzzfd7kPmn5Ybe5jzs9M4+aet7wn+XGm6bufkpujQcAzScNAg== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJx7c7z2CLtym4PD8vLQLWptDlOSzwi9A9K/i06xaWu1OWxmcbnfCqTrYtb8eg+k7f5sZ9TSbnPI5LS68EWvzQEAsbgcXg== - - - - - - eJwBIADf/7HF0UdXDVRHRmQsSdC+p0a+ms1G7O3oSFm/0kZY4GNICPYQrw== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxja30s1qzY5vCy8sdjFuU2h4atZnfZVNoccnUv7upQbXNou67Ht1GtzcH6+USDt0C6b+3q7+vV2xyYBHu+vNNqc7DJ+1lzQrvN4dbPSn92vTYHjxifjYVAeo4KL8cnIA0AHrUp9A== - - - - - - eJwBMADP/5vuLUdtps1Hy4gAR2Z6Bkc9SARHkyAvSdRYE0ePs/NIDligRlDOqEa6HsZG1Y1mSOVMFDY= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzbx9P5gEe5zeF32fPWt2ptDuen2Cu912pzqHGL6v2s1+YAAP8VDxI= - - - - - - eJzjnsTv0RnP6rn28SmPAk1GDwAvUgWv - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxbtD3ViVO5zcHscG7TRrU2hweTq3++BtJ966s73mu1OYh053oX6rU5aBYssf8MpAEYHxV0 - - - - - - eJxbUXnPfcuiGW5dbnc8Zsit8ogVWOC2oULaAwCYJgr1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxLKVLTZ1duc3hT9lXyjVqbwyke/bp69TaHpvat799ptTl8qbgf26Pd5vDruZhqmV6bw6rtD/d/AtIAwDgacA== - - - - - - eJxb+zfFXfHOWg+5iLluk3l9PQ4bbnLbpHjb7aP8CXcAvGkM1Q== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJwzeLs2hFu5zSH/wczw6WptDhf+JfW+BdL9PbODPmu1ORxjrI/o0Gtz+DAle8pHIA0AK/EW2A== - - - - - - eJy7Oa3FfbmZuLur2iqP9c52HgLqn9zmrGD2AAB7UAlJ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJy7Nkf5PI9ym0OBSIPdR7U2B8fLE6+kabU5qLpx9b8H0lJ7GH7k67U5HO248u47kAYA8ocVVg== - - - - - - eJxruWjh/nyhmsfior9uh16fdl/31su96YmeOwCjlgzp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzbsjZwGrtym4NSlknrG7U2h96zR31rtNocgvfEbnoNpNk2ThO9odfm8FmpIp9fv80BAPyKFFU= - - - - - - eJx7fyfVfXnGZ/d306+65drecPecY+JuIq/tDgCn3gtP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJybLDfBhEe5zWH1cus1JWptDvs8RGVfAumGugpFZq02h3My+962AWn5kM1N14H00hVSKSzabQ5FMov12fTbHAAjCxgw - - - - - - eJw7opTnnvxd1d3dgd1D8MZ+t4lRiu67bx10O5k63/3+8fVuAN0XDsQ= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJz7+Nwokku5zeGt/oeEF2ptDn8vOJfv0WtzAACV6QvO - - - - - - eJwzubPX/f79QveNwZzuACsBBd8= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzzzFDczq7c5rA3gfH8N602BwAxXQZN - - - - - - eJyLkhV25zxd5A4ACSgCXw== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJwzt7676LNSm0PErNJtwWptDmcO7L3/CkgDAJL+DCc= - - - - - - eJw7bSHo7pol4L5JeL07ABqYBB0= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzrc3y9iEm5zYHx0On93WptDhKFtjqfgDQAgKwJ3A== - - - - - - eJzLjr7gljnNxz3lvK47ACK6BRY= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzr3KM19YNamwMAEtcD4Q== - - - - - - eJxjbLvhBgADkAGm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzjNW98x6nc5gAAC3YCpg== - - - - - - eJyzStRwBwACpgEL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJzTX7CI1US/zQEADG4CoA== - - - - - - eJw7NNPWHQAFmAHg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eJxb2nHs3VetNgcAF9AExw== - - - - - - eJzrP3DAHQAGRwJX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky deleted file mode 100644 index 36aadc6708f..00000000000 --- a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.data/ZeroLengthSpectraTest.sky +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0.98 - 0.995 - 0.995 - 0.99 - 0.99 - - - - - - - - MAVSKVYARS VYDSRGNPTV EVELTTEKGV FRSIVPSGAS TGVHEALEMR - DGDKSKWMGK GVLHAVKNVN DVIAPAFVKA NIDVKDQKAV DDFLISLDGT - ANKSKLGANA ILGVSLAASR AAAAEKNVPL YKHLADLSKS KTSPYVLPVP - FLNVLNGGSH AGGALALQEF MIAPTGAKTF AEALRIGSEV YHNLKSLTKK - RYGASAGNVG DEGGVAPNIQ TAEEALDLIV DAIKAAGHDG KVKIGLDCAS - SEFFKDGKYD LDFKNPNSDK SKWLTGPQLA DLYHSLMKRY PIVSIEDPFA - EDDWEAWSHF FKTAGIQIVA DDLTVTNPKR IATAIEKKAA DALLLKVNQI - GTLSESIKAA QDSFAAGWGV MVSHRSGETE DTFIADLVVG LRTGQIKTGA - PARSERLAKL NQLLRIEEEL GDNAVFAGEN FHHGDKL - - - - 708.864471 - 708.864471 - 24.170934 - - - 708.864471 - 709.365946 - 24.170934 - - - 708.864471 - 709.86729 - 24.170934 - - - - - 472.912073 - 472.912073 - 20.251659 - - - 472.912073 - 473.246389 - 20.251659 - - - 472.912073 - 473.580618 - 20.251659 - - - - - \ No newline at end of file diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.zip b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.zip new file mode 100644 index 0000000000000000000000000000000000000000..739aa70a70fa3678ca3b20879ff4942578e2d2ee GIT binary patch literal 15406 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 bu2B{?|G%oBp#SNG`1}ogURC-3{ri6aH1g^I literal 0 HcmV?d00001 From 9885e0f0884cc9859d8b41d7c5525295ed7ff1ca Mon Sep 17 00:00:00 2001 From: Nicholas Shulman Date: Wed, 19 Aug 2026 07:38:56 -0700 Subject: [PATCH 4/7] Restricted the zero length spectrum change to spectra with no scan window * Added IsEmptySpectrum, which treats a spectrum with no m/z values as empty only when it also declares no scan window limits * Called it from all four sites that previously tested Mzs.Length, including the Agilent ramped-CE and non-IMS Lookahead branches that had been missed * Noted that the "No further overlap" break skips the remaining coverage checks Co-Authored-By: Claude --- .../Model/Results/SpectraChromDataProvider.cs | 23 ++++++++++++++++--- .../Model/Results/SpectrumFilterPair.cs | 4 ++++ .../TestFunctional/ZeroLengthSpectraTest.cs | 3 +++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs b/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs index b56fd893ffc..85d67bc99f3 100644 --- a/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs +++ b/pwiz_tools/Skyline/Model/Results/SpectraChromDataProvider.cs @@ -839,6 +839,20 @@ public static bool HasSpectrumData(MsDataFileImpl dataFile) return dataFile.SpectrumCount > 0; } + /// + /// Returns true if a spectrum has no m/z values and should be ignored. + /// A spectrum which measured no ions is a valid measurement of zero intensity, but only if + /// we know which m/z values it was measuring. That range comes from the scan window limits, + /// so a spectrum which declares them is not considered empty. + /// + public static bool IsEmptySpectrum(MsDataSpectrum spectrum) + { + if (spectrum.Mzs != null && spectrum.Mzs.Length != 0) + return false; + return spectrum.Metadata?.ScanWindowLowerLimit == null && + spectrum.Metadata?.ScanWindowUpperLimit == null; + } + private class Spectra : IDisposable { private bool _runningAsync; @@ -1218,6 +1232,9 @@ private SpectrumInfo ReadSpectrum(ref int i) // Assertion for testing ID to spectrum index support // int iFromId = dataFile.GetSpectrumIndex(dataSpectrum.Id); // Assume.IsTrue(i == iFromId); + if (IsEmptySpectrum(nextSpectrum)) + continue; + double? rt = nextSpectrum.RetentionTime; if (!rt.HasValue) continue; @@ -1571,7 +1588,7 @@ public MsDataSpectrum[] Lookahead(MsDataSpectrum dataSpectrum, out double? rt) while (_lookAheadIndex++ < _lenSpectra) { _rt = dataSpectrum.RetentionTime; - if (_rt.HasValue) + if (_rt.HasValue && !IsEmptySpectrum(dataSpectrum)) { spectrumList.Add(dataSpectrum); if (!rtReported.HasValue) @@ -1627,7 +1644,7 @@ public MsDataSpectrum[] Lookahead(MsDataSpectrum dataSpectrum, out double? rt) while (_lookAheadIndex++ < _lenSpectra) { _rt = dataSpectrum.RetentionTime; - if (_rt.HasValue) + if (_rt.HasValue && !IsEmptySpectrum(dataSpectrum)) { spectrumList.Add(dataSpectrum); rtTotal += dataSpectrum.RetentionTime.Value; @@ -1646,7 +1663,7 @@ public MsDataSpectrum[] Lookahead(MsDataSpectrum dataSpectrum, out double? rt) { // No need to search forward, this isn't IMS or Agilent ramped-CE data rtReported = dataSpectrum.RetentionTime; - if (rtReported.HasValue) + if (rtReported.HasValue && !IsEmptySpectrum(dataSpectrum)) { spectrumList.Add(dataSpectrum); } diff --git a/pwiz_tools/Skyline/Model/Results/SpectrumFilterPair.cs b/pwiz_tools/Skyline/Model/Results/SpectrumFilterPair.cs index dcb573390ce..1c2ffc1a961 100644 --- a/pwiz_tools/Skyline/Model/Results/SpectrumFilterPair.cs +++ b/pwiz_tools/Skyline/Model/Results/SpectrumFilterPair.cs @@ -344,7 +344,11 @@ private ExtractedSpectrum FilterSpectrumList(MsDataSpectrum[] spectra, iPeak = ~iPeak; } if (iPeak >= mzArray.Length) + { + // The extracted intensities for the remaining targets will be zero so we can stop extracting + // Consider: we probably still need to keep checking "hasScanWindowCoverage" break; // No further overlap + } } // TODO:(bspratt) for full frame diaPASEF MS2, try not sorting - make IM the initial binary search range (and deal with mz that rolls over) diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs index ceb6be67825..14c9f8332a7 100644 --- a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs +++ b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs @@ -23,6 +23,9 @@ namespace pwiz.SkylineTestFunctional { + /// + /// Verifies that spectra with no m/z's and intensities are still included in the extracted chromatogram. + /// [TestClass] public class ZeroLengthSpectraTest : AbstractFunctionalTest { From d17f952d9ff0b8a4305c747a8a72782e2f98d684 Mon Sep 17 00:00:00 2001 From: Nicholas Shulman Date: Wed, 19 Aug 2026 07:59:27 -0700 Subject: [PATCH 5/7] Change data type of expected value to float --- pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs b/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs index 68d381a4325..07d1388d65c 100644 --- a/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs +++ b/pwiz_tools/Skyline/TestFunctional/SettingsChangeReimportTest.cs @@ -57,7 +57,7 @@ protected override void DoTest() Assert.AreEqual(1, transitionGroup.Results.Count); var transitionGroupChromInfo = transitionGroup.Results[0].First(); // Verify the peak area is what we expect - Assert.AreEqual(147639168, transitionGroupChromInfo.Area.Value); + Assert.AreEqual(147639168f, transitionGroupChromInfo.Area.Value); // Reimport the file with "UseSelectiveExtraction" set to "true" RunUI(() => SkylineWindow.ModifyDocument("Change selective extraction", From 9afe67328fbfc7efa57d3c2cda3e20bc60bf4e0e Mon Sep 17 00:00:00 2001 From: Nicholas Shulman Date: Wed, 19 Aug 2026 14:19:48 -0700 Subject: [PATCH 6/7] Fixed the Full Scan graph being blank for a scan which measured no ions * Gave the intensity axis a nonzero maximum, since ZedGraph draws nothing at all, not even the axes, when an axis scale's minimum equals its maximum * Used the spectrum's scan window for the m/z axis when no scan has any peaks, so the axis shows the range the instrument was measuring * Asserted in ZeroLengthSpectraTest that none of the graph's axes are left with a degenerate range Co-Authored-By: Claude --- .../Skyline/Controls/Graphs/GraphFullScan.cs | 49 ++++++++++++++++--- .../TestFunctional/ZeroLengthSpectraTest.cs | 45 ++++++++++++++++- 2 files changed, 86 insertions(+), 8 deletions(-) diff --git a/pwiz_tools/Skyline/Controls/Graphs/GraphFullScan.cs b/pwiz_tools/Skyline/Controls/Graphs/GraphFullScan.cs index 3f41f33efe7..0e29cd826e6 100644 --- a/pwiz_tools/Skyline/Controls/Graphs/GraphFullScan.cs +++ b/pwiz_tools/Skyline/Controls/Graphs/GraphFullScan.cs @@ -2145,6 +2145,29 @@ private void GetMaxMzIntensity(out double maxMz, out double maxIntensity) double intensity = SumIntensities(fullScans, minMz, indices, minIonMobilityVal, maxIonMobilityVal); maxIntensity = Math.Max(maxIntensity, intensity); } + + if (maxMz <= 0) + { + // None of the scans have any peaks in them because they measured no ions. Show the + // m/z range that the instrument was scanning so that the axes still get drawn. + maxMz = GetMaxScanWindow(fullScans); + } + } + + /// + /// The highest scan window upper limit declared by any of the spectra, or zero if none of + /// them says what m/z range it was measuring. + /// + private static double GetMaxScanWindow(IEnumerable spectra) + { + double maxScanWindow = 0; + foreach (var spectrum in spectra) + { + var upperLimit = spectrum.Metadata?.ScanWindowUpperLimit; + if (upperLimit.HasValue) + maxScanWindow = Math.Max(maxScanWindow, upperLimit.Value); + } + return maxScanWindow; } private void GetIonMobilityRange(out double minIonMobility, out double maxIonMobility) @@ -2247,21 +2270,28 @@ private void ZoomXAxis() private void ApplyXZoomToPane(GraphPane pane) { var xScale = pane.XAxis.Scale; - xScale.MinAuto = xScale.MaxAuto = false; if (magnifyBtn.Checked) { double mz = _msDataFileScanHelper.Source == ChromSource.ms1 ? _msDataFileScanHelper.ScanProvider.Transitions[_msDataFileScanHelper.TransitionIndex].PrecursorMz : _msDataFileScanHelper.ScanProvider.Transitions[_msDataFileScanHelper.TransitionIndex].ProductMz; + xScale.MinAuto = xScale.MaxAuto = false; xScale.Min = mz - 1.5; xScale.Max = mz + 3.5; } - else if (_requestedRange != null) + else if (_requestedRange != null && _requestedRange.Max > _requestedRange.Min) { + xScale.MinAuto = xScale.MaxAuto = false; xScale.Min = _requestedRange.Min; xScale.Max = _requestedRange.Max; } + else + { + // There is no m/z range to show. Leave the axis auto-scaled, since collapsing it to + // a single value makes ZedGraph skip drawing the axis entirely. + xScale.MinAuto = xScale.MaxAuto = true; + } } public void SetMzScale(MzRange range) @@ -2434,6 +2464,13 @@ public bool ShowPropertiesSheet public bool HasChromatogramData => false; + /// + /// The maximum for an intensity axis, which is never zero. ZedGraph draws nothing at all -- + /// not even the axes -- when the minimum of any of a pane's axis scales equals its maximum, + /// so a scan which measured no ions would otherwise produce a completely blank graph. + /// + private double IntensityAxisMax => _maxIntensity > 0 ? _maxIntensity * 1.1 : 1; + private void ZoomYAxis() { if (_msDataFileScanHelper.ScanProvider == null || _msDataFileScanHelper.ScanProvider.Transitions.Length == 0) @@ -2455,7 +2492,7 @@ private void ZoomYAxis() if (isSpectrum) { yScale.Min = 0; - yScale.Max = _maxIntensity * 1.1; + yScale.Max = IntensityAxisMax; if (magnifyBtn.Checked) { yScale.MaxAuto = true; @@ -2516,11 +2553,11 @@ private void ZoomStickYAxis() maxY = pt.Y; } } - yScale.Max = maxY > 0 ? maxY * 1.1 : _maxIntensity * 1.1; + yScale.Max = maxY > 0 ? maxY * 1.1 : IntensityAxisMax; } else { - yScale.Max = _maxIntensity * 1.1; + yScale.Max = IntensityAxisMax; } _stickSpectrumPane.AxisChange(); } @@ -2542,7 +2579,7 @@ private void ResetStickYAxis() yScale.MinAuto = false; _heatMapPane.LockYAxisMinAtZero = true; yScale.Min = 0; - yScale.Max = _maxIntensity * 1.1; + yScale.Max = IntensityAxisMax; // Magnify on → auto-fit Y to data in the zoomed X range during next paint. yScale.MaxAuto = magnifyBtn.Checked; } diff --git a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs index 14c9f8332a7..28f394486ec 100644 --- a/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs +++ b/pwiz_tools/Skyline/TestFunctional/ZeroLengthSpectraTest.cs @@ -16,10 +16,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using pwiz.CommonMsData; +using pwiz.Skyline.Controls.Graphs; +using pwiz.Skyline.Model; +using pwiz.Skyline.Model.Results; using pwiz.SkylineTestUtil; +using System.Linq; +using ZedGraph; namespace pwiz.SkylineTestFunctional { @@ -27,7 +31,7 @@ namespace pwiz.SkylineTestFunctional /// Verifies that spectra with no m/z's and intensities are still included in the extracted chromatogram. /// [TestClass] - public class ZeroLengthSpectraTest : AbstractFunctionalTest + public class ZeroLengthSpectraTest : AbstractFunctionalTestEx { [TestMethod] public void TestZeroLengthSpectra() @@ -54,6 +58,43 @@ protected override void DoTest() var chromatogramInfo = chromatogramGroupInfos[0].GetRawTransitionInfo(0); Assert.IsNotNull(chromatogramInfo); Assert.AreEqual(ms1Spectra.Count, chromatogramInfo.Times.Count); + RunUI(() => + { + SkylineWindow.SelectedPath = + SkylineWindow.Document.GetPathTo((int)SrmDocument.Level.TransitionGroups, 0); + SkylineWindow.SetTransformChrom(TransformChrom.raw); + }); + + // Click on a point in the chromatogram which came from one of the empty spectra + ClickChromatogram(22.3, 1e4); + var graphFullScan = WaitForOpenForm(); + RunUI(() => + { + graphFullScan.SetZoom(false); + AssertAxesNotDegenerate(graphFullScan.ZedGraphControl.GraphPane); + + // The empty spectrum still says which m/z values it was measuring, and the x-axis + // is supposed to show that range instead of collapsing to nothing + var scanWindowUpperLimit = emptyMs1Spectra.Max(spectrum => spectrum.Metadata.ScanWindowUpperLimit); + Assert.IsNotNull(scanWindowUpperLimit); + AssertEx.IsGreaterThanOrEqual(graphFullScan.ZedGraphControl.GraphPane.XAxis.Scale.Max, + scanWindowUpperLimit.Value); + }); + } + + /// + /// Asserts that the graph will actually be drawn. ZedGraph skips the axes, the grid and the + /// curves when the minimum of any of a pane's axis scales is not less than its maximum, + /// which leaves nothing but the title, so a degenerate range means a blank graph. + /// + private static void AssertAxesNotDegenerate(GraphPane graphPane) + { + AssertEx.IsGreaterThan(graphPane.XAxis.Scale.Max, graphPane.XAxis.Scale.Min); + AssertEx.IsGreaterThan(graphPane.X2Axis.Scale.Max, graphPane.X2Axis.Scale.Min); + foreach (var yAxis in graphPane.YAxisList) + AssertEx.IsGreaterThan(yAxis.Scale.Max, yAxis.Scale.Min); + foreach (var y2Axis in graphPane.Y2AxisList) + AssertEx.IsGreaterThan(y2Axis.Scale.Max, y2Axis.Scale.Min); } } } From 0b41b4b11ea489cdc197281809880acbf6c3457a Mon Sep 17 00:00:00 2001 From: Nicholas Shulman Date: Sun, 23 Aug 2026 20:08:34 -0700 Subject: [PATCH 7/7] Update expected values. --- .../TestQeDataDiaNN.json | 16 +++---- .../TestTtofData.json | 32 +++++++------- .../TestTtofData_full.json | 44 +++++++++---------- .../TestDiaTtofDiaUmpireTutorial.json | 28 ++++++------ ...stDiaTtofDiaUmpireTutorialFullFileset.json | 44 +++++++++---------- .../TestPerf/PerfImportPrmPasefTest.cs | 18 ++++---- 6 files changed, 91 insertions(+), 91 deletions(-) diff --git a/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestQeDataDiaNN.json b/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestQeDataDiaNN.json index 617129ceaa7..6f7debcfbc2 100644 --- a/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestQeDataDiaNN.json +++ b/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestQeDataDiaNN.json @@ -18,24 +18,24 @@ 3.01 ], [ - 1.77, - 3.02 + 1.76, + 2.99 ], [ - 2.05, + 2.04, 3.16 ], [ - 2.06, - 3.66 + 2.08, + 3.68 ], [ - 1.94, + 1.95, 3.17 ], [ - 1.63, - 3.36 + 1.64, + 3.38 ] ], "DiffPeptideCounts": [ diff --git a/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData.json b/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData.json index 23aade8281a..bbc6ccdb128 100644 --- a/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData.json +++ b/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData.json @@ -11,30 +11,30 @@ "MassErrorStats": [ [ 3.03, - 4.37 + 4.38 ], [ - 2.78, - 4.1 + 2.79, + 4.12 ], [ - 3.88, + 3.89, 4.25 ], [ 5.87, - 3.58 + 3.55 ], [ 4.69, 4.17 ], [ - -0.07, - 3.42 + -0.08, + 3.43 ], [ - 1.01, + 1.02, 3.63 ] ], @@ -47,13 +47,13 @@ "UnpolishedProteins": 9, "PolishedProteins": 11, "ScoringModelCoefficients": [ - 0.2332, - -0.667, - 3.4044, - -0.0138, - -0.4653, - 0.9273, - 0.112, - -0.0497 + 0.2442, + -0.6843, + 3.403, + 0.0632, + -0.4762, + 0.9162, + 0.0914, + -0.0489 ] } \ No newline at end of file diff --git a/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData_full.json b/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData_full.json index 7c3efe33043..6139d88ddd2 100644 --- a/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData_full.json +++ b/pwiz_tools/Skyline/TestPerf/DiaSwathTutorialTest.data/TestTtofData_full.json @@ -11,49 +11,49 @@ "MassErrorStats": [ [ 2.78, - 4.56 + 4.57 ], [ - 2.43, - 4.29 + 2.44, + 4.3 ], [ 3.92, - 4.19 + 4.18 ], [ - 5.16, + 5.17, 4.08 ], [ - 4.48, - 4.2 + 4.49, + 4.19 ], [ - -0.35, - 3.93 + -0.36, + 3.94 ], [ 1.03, - 4.06 + 4.07 ] ], "DiffPeptideCounts": [ - 12808, - 7963, + 12811, + 7965, 2692, - 2142 + 2143 ], - "UnpolishedProteins": 2207, + "UnpolishedProteins": 2214, "PolishedProteins": 2394, "ScoringModelCoefficients": [ - -0.0842, - -0.7447, - 4.2691, - -0.2084, - -0.2644, - 0.7594, - 0.3124, - -0.0659 + -0.0923, + -0.745, + 4.2841, + -0.2199, + -0.2654, + 0.7632, + 0.3208, + -0.0656 ] } \ No newline at end of file diff --git a/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorial.json b/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorial.json index ae9eefe99dc..684af7a03bf 100644 --- a/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorial.json +++ b/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorial.json @@ -4,16 +4,16 @@ "IrtIntercept": -67.652, "MassErrorStats": [ [ - 3.3368965539182054, - 3.7476706541186697 + 3.3541379343332913, + 3.7538169894050677 ], [ - 3.1641379264408145, - 3.3541366574610119 + 3.1606896514008787, + 3.3617599596622205 ], [ - 3.5096551813955963, - 4.1081951397141436 + 3.5475862172657044, + 4.1113677622617537 ] ], "FinalTargetCounts": [ @@ -23,13 +23,13 @@ 1673 ], "ScoringModelCoefficients": [ - -0.1511, - -0.5825, - 5.5994, - -0.5757, - -0.45, - 0.7592, - 0.4174, - -0.0851 + -0.1537, + -0.6123, + 5.803, + -0.7115, + -0.4474, + 0.7195, + 0.41, + -0.0804 ] } \ No newline at end of file diff --git a/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorialFullFileset.json b/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorialFullFileset.json index 11d71d13f5a..7c063d36d23 100644 --- a/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorialFullFileset.json +++ b/pwiz_tools/Skyline/TestPerf/DiaUmpireTutorialTest.data/TestDiaTtofDiaUmpireTutorialFullFileset.json @@ -4,32 +4,32 @@ "IrtIntercept": -67.902, "MassErrorStats": [ [ - 2.5616557448280792, - 5.1752202623151184 + 2.5674782416585793, + 5.1743837532072243 ], [ - 2.494663161693043, - 4.8081199020993743 + 2.4993947910688985, + 4.8055985915421049 ], [ - 3.445711318811381, - 5.1170898217156626 + 3.4524790636975107, + 5.1140550552054487 ], [ - 4.7230924447835783, - 4.8368748712095391 + 4.7303558342453975, + 4.8307178400682451 ], [ - 3.8795328064295034, - 5.1547860040369944 + 3.8875810190246205, + 5.1506054517655011 ], [ - -0.17098470950345382, - 4.5474199723221851 + -0.17103541060360802, + 4.5533590952038292 ], [ - 0.99605995570347916, - 4.8624508158506785 + 1.0044169814970718, + 4.8638563788733586 ] ], "FinalTargetCounts": [ @@ -39,13 +39,13 @@ 196278 ], "ScoringModelCoefficients": [ - 0.1985, - -0.6148, - 4.3467, - -0.0062, - -0.1611, - 0.5597, - 0.0893, - -0.0411 + 0.1964, + -0.6123, + 4.3547, + -0.0126, + -0.1618, + 0.5599, + 0.0914, + -0.041 ] } \ No newline at end of file diff --git a/pwiz_tools/Skyline/TestPerf/PerfImportPrmPasefTest.cs b/pwiz_tools/Skyline/TestPerf/PerfImportPrmPasefTest.cs index 417d13bd844..4340651659b 100644 --- a/pwiz_tools/Skyline/TestPerf/PerfImportPrmPasefTest.cs +++ b/pwiz_tools/Skyline/TestPerf/PerfImportPrmPasefTest.cs @@ -115,18 +115,18 @@ private void TestReports(string msg = null) Resources.ReportSpecList_GetDefaults_Peptide_RT_Results, 210); var rts = new double?[] { - 12.45, 21.48, 16.93, 22.93, 13.63, 19.12, 28.97, 14.88, 14.24, 27.25, 14.97, 14.26, 25.7, 15.06, 11.93, 26.37, 12.89, - 15.87, 18.34, 11.16, 10.46, 10.98, 28, 24.01, 11.15, 18.97, 23.33, 26.56, 11.94, 19, 24.2, 23.42, 26.1, 27.86, 27.76, - 20.99, 26.15, 21.16, 25.99, 14.29, 26.04, 15.04, 24.07, 28.15, 20.1, 26.03, 15.07, 19.78, 27.2, 21.26, 25.39, 24.96, 11.71, - 21.1, 20.51, 14.71, 25.24, 24.9, 28.57, 20.98, 17.19, 15.39, 18.08, 16.06, 26.11, 10.26, 13.11, 9.46, 10.78, 14.41, 25.16, - 26.36, 17.21, 24.79, 13.9, 20.63, 19.7, 22.5, 13.97, 19.34, 19.05, 18.45, 13.96, 6.59, 26.12, 17.76, 28.31, 24.27, 29.25, - 27.56, 23.72, 12.09, 8.92, 18.39, 20.23, 26.41, 28.45, 22.17, 15.16, 24.73, 28.22, 17.16, 9.59, 13.84, 22.91, 17.14, 19.92, + 12.45, 21.48, 16.94, 22.93, 13.63, 19.12, 28.97, 14.88, 14.22, 27.25, 14.97, 14.26, 25.7, 15.06, 11.93, 26.37, 12.89, + 15.88, 18.34, 11.16, 10.46, 10.98, 27.9, 24.01, 11.15, 18.96, 23.33, 26.56, 11.94, 19, 24.2, 23.42, 26.1, 27.86, 27.76, + 20.99, 26.15, 21.16, 25.99, 14.29, 26.04, 15.04, 24.07, 28.15, 20.1, 26.03, 15.07, 19.78, 27.2, 21.26, 25.34, 24.96, 11.71, + 21.1, 20.51, 14.71, 25.24, 24.9, 28.57, 20.98, 17.19, 15.39, 18.08, 16.06, 26.11, 10.26, 13.11, 9.46, 10.78, 14.4, 25.16, + 26.35, 17.21, 24.79, 13.9, 20.63, 19.7, 22.5, 13.97, 19.34, 19.05, 18.44, 13.96, 6.59, 26.12, 17.76, 28.31, 24.27, 29.25, + 27.56, 23.72, 12.09, 8.92, 18.39, 20.23, 26.41, 28.45, 22.17, 15.17, 24.73, 28.22, 17.16, 9.59, 13.84, 22.91, 17.14, 19.92, 24.24, 27.82, 24.67, 10.41, 12.27, 21.21, 18.69, 12.68, 21.09, 22.11, 21.43, 14.51, 17.31, 21.92, 22.43, 19.53, 25.24, 25.31, 11.61, 24.37, 10.07, 24.29, 23.28, 15.83, 14.87, 28.53, 14.85, 28.5, 22.49, 19.35, 24.81, 24.57, 24.63, 24.36, 15.46, 22.7, - 19.85, 22.56, 21.91, 15.97, 20.82, 13.62, 19.52, 15.55, 23.71, 30.35, 19.57, 13.57, 29.08, 15.56, 21.73, 16.05, 13.95, 25.39, - 14.3, 25.25, 15.72, 10.48, 9.88, 21.3, 9.92, 26.56, 27.89, 29.85, 22.12, 25.06, 21.53, 15.25, 21.13, 22.81, 20.44, 18.23, + 19.85, 22.56, 21.91, 15.98, 20.82, 13.62, 19.52, 15.55, 23.71, 30.35, 19.57, 13.56, 29.06, 15.56, 21.73, 16.05, 13.95, 25.39, + 14.3, 25.3, 15.72, 10.48, 9.88, 21.3, 9.94, 26.56, 27.89, 29.85, 22.12, 25.06, 21.53, 15.25, 21.13, 22.81, 20.44, 18.23, 11.49, 25.59, 20.13, 16.32, 13.19, 9.63, 12.11, 21.84, 10.83, 12.49, 16.99, 18.83, 11.71, 12.84, 17.31, 11.13, 12.88, 24.35, - 16.83, 15.26, 22.72, 8.45, 11.17, 18.41, 18.85, 22.16, 16.56, 10.02, 10.13, 25.91, 29.07 + 16.83, 15.26, 22.72, 8.45, 11.17, 18.41, 18.85, 22.16, 16.56, 10.02, 10.13, 25.91, 29.06 }; for (row = 0; row < rts.Length; row++) {