From fe674a9f1907a745d1db92e2484c6d6eeba5182b Mon Sep 17 00:00:00 2001 From: Brian Pratt Date: Tue, 24 Sep 2024 12:54:05 -0700 Subject: [PATCH 1/2] Deal with a case where a mass-only molecule had very small differences in iRT library and document (mass serialized as "344.300548579909" vs "344.300548580"), this was causing ambiguity in TargetResolver --- pwiz_tools/Skyline/Model/TargetResolver.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pwiz_tools/Skyline/Model/TargetResolver.cs b/pwiz_tools/Skyline/Model/TargetResolver.cs index 2ef2feafbd4..5e9ee5c0b45 100644 --- a/pwiz_tools/Skyline/Model/TargetResolver.cs +++ b/pwiz_tools/Skyline/Model/TargetResolver.cs @@ -102,7 +102,9 @@ public static TargetResolver MakeTargetResolver(SrmDocument document, params IEn { if (others != null) { - allTargets = allTargets.Concat(others); + var existing = allTargets as Target[] ?? allTargets.ToArray(); + var distinct = others.Where(t => existing.All(a => a.CompareTo(t) != 0)); + allTargets = existing.Concat(distinct); } } return new TargetResolver(allTargets); From 50eb47faf6adc147e269ea17862445ba6f7f1436 Mon Sep 17 00:00:00 2001 From: Brian Pratt Date: Tue, 24 Sep 2024 13:47:58 -0700 Subject: [PATCH 2/2] more consistent normalization per Nick suggestion --- pwiz_tools/Skyline/Model/TargetResolver.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pwiz_tools/Skyline/Model/TargetResolver.cs b/pwiz_tools/Skyline/Model/TargetResolver.cs index 5e9ee5c0b45..541664ed654 100644 --- a/pwiz_tools/Skyline/Model/TargetResolver.cs +++ b/pwiz_tools/Skyline/Model/TargetResolver.cs @@ -35,7 +35,9 @@ public class TargetResolver public TargetResolver(IEnumerable targetsEnum) { - var targets = targetsEnum.ToArray(); + var targets = targetsEnum.Select(t => t.ToSerializableString()) + .Distinct() + .Select(Target.FromSerializableString).ToArray(); // Normalizes masses (e.g. "344.300548579909" vs "344.300548580") // For molecules allow lookup by formula, InChIKey etc in addition to display name var accessions = new HashSet>(); @@ -82,9 +84,7 @@ public TargetResolver(IEnumerable targetsEnum) } else { - _targetsByName = targets.Select(t => t.ToSerializableString()) - .Distinct() - .Select(Target.FromSerializableString).ToLookup(GetTargetDisplayName); + _targetsByName = targets.ToLookup(GetTargetDisplayName); } } @@ -102,9 +102,7 @@ public static TargetResolver MakeTargetResolver(SrmDocument document, params IEn { if (others != null) { - var existing = allTargets as Target[] ?? allTargets.ToArray(); - var distinct = others.Where(t => existing.All(a => a.CompareTo(t) != 0)); - allTargets = existing.Concat(distinct); + allTargets = allTargets.Concat(others); } } return new TargetResolver(allTargets);