public List <MatchedPeak> GetNeutralLossPeaks(IonType targetPeakType, MatchedPeak sourcePeak, List <INeutralLossType> nlCandidates, Func <INeutralLossType, bool> filter) { List <INeutralLossType> nlTypes = new NeutralLossGenerator().GetTotalCombinationValues(nlCandidates, NeutralLossLevel); nlTypes.RemoveAll(m => !filter(m)); List <MatchedPeak> result = new List <MatchedPeak>(); foreach (INeutralLossType nlType in nlTypes) { double nlMass = sourcePeak.Mz - nlType.Mass / sourcePeak.Charge; MatchedPeak nlPeak = new MatchedPeak(nlMass, 1.0, sourcePeak.Charge) { PeakType = targetPeakType, PeakIndex = sourcePeak.PeakIndex }; nlPeak.DisplayName = GetDisplayName(nlType, sourcePeak, nlPeak); result.Add(nlPeak); } result.Sort(); return(result); }
public void TestGetCombinationValues() { List <INeutralLossType> types = new List <INeutralLossType>(); types.Add(new CombinedNeutralLossType(new[] { NeutralLossConstants.NL_H3PO4, NeutralLossConstants.NL_HPO3 })); types.Add(NeutralLossConstants.NL_H3PO4); types.Add(NeutralLossConstants.NL_H3PO4); types.Add(NeutralLossConstants.NL_HPO3); types.Add(NeutralLossConstants.NL_WATER); types.Add(NeutralLossConstants.NL_AMMONIA); NeutralLossGenerator generator = new NeutralLossGenerator(); List <INeutralLossType> actual = generator.GetCombinationValues(types, 1); Assert.AreEqual(5, actual.Count); AssertContain(actual, "H3PO4-HPO3"); AssertContain(actual, "H3PO4"); AssertContain(actual, "HPO3"); AssertContain(actual, "NH3"); AssertContain(actual, "H2O"); actual = generator.GetCombinationValues(types, 2); Assert.AreEqual(10, actual.Count); AssertContain(actual, "H3PO4-HPO3-H3PO4"); AssertContain(actual, "H3PO4-HPO3-HPO3"); AssertContain(actual, "H3PO4-HPO3-NH3"); AssertContain(actual, "H3PO4-H3PO4"); AssertContain(actual, "H3PO4-HPO3"); AssertContain(actual, "H3PO4-H2O"); AssertContain(actual, "H3PO4-NH3"); AssertContain(actual, "HPO3-H2O"); AssertContain(actual, "HPO3-NH3"); AssertContain(actual, "H2O-NH3"); actual = generator.GetTotalCombinationValues(types, 2); //actual.ForEach(m => Console.WriteLine(m.Name)); Assert.AreEqual(13, actual.Count); //两个冗余删除 AssertContain(actual, "H3PO4-HPO3"); AssertContain(actual, "H3PO4"); AssertContain(actual, "HPO3"); AssertContain(actual, "NH3"); AssertContain(actual, "H2O"); AssertContain(actual, "H3PO4-HPO3-H3PO4"); AssertContain(actual, "H3PO4-HPO3-HPO3"); AssertContain(actual, "H3PO4-HPO3-NH3"); AssertContain(actual, "H3PO4-H3PO4"); AssertContain(actual, "H3PO4-H2O"); AssertContain(actual, "H3PO4-NH3"); AssertContain(actual, "HPO3-NH3"); AssertContain(actual, "H2O-NH3"); }