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);
        }
コード例 #2
0
        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");
        }