Ejemplo n.º 1
0
        public void SettingsChangeTranGroups()
        {
            SrmDocument docFasta = CreateMixedDoc();
            SrmSettings settings = docFasta.Settings;

            // Add heavy mod
            SrmDocument docFasta2 = docFasta.ChangeSettings(settings.ChangePeptideModifications(
                                                                m => m.ChangeModifications(IsotopeLabelType.heavy, new[] { new StaticMod("N-Terminal K", "K", ModTerminus.C, "H7", LabelAtoms.None, null, null) })));

            CheckNTerminalKGroups(docFasta2);
            Assert.AreEqual(docFasta.PeptideCount, docFasta2.PeptideCount);

            // Add multiple charges with heavy mod
            var newCharges = Adduct.ProtonatedFromCharges(2, 3, 4);

            settings = docFasta2.Settings;
            SrmDocument docFasta3 = docFasta2.ChangeSettings(settings.ChangeTransitionFilter(
                                                                 f => f.ChangePeptidePrecursorCharges(newCharges)));

            CheckNTerminalKGroups(docFasta3);
            Assert.AreEqual(docFasta.PeptideCount, docFasta3.PeptideCount);

            // Use charge that will cause filtering on instrument maximum m/z
            docFasta2 = docFasta.ChangeSettings(settings.ChangeTransitionFilter(
                                                    f => f.ChangePeptidePrecursorCharges(Adduct.ProtonatedFromCharges(1))));
            Assert.IsTrue(docFasta.PeptideTransitionGroupCount < docFasta2.PeptideTransitionGroupCount);
            Assert.AreEqual(docFasta.PeptideCount, docFasta2.PeptideCount);
        }
Ejemplo n.º 2
0
        public void SettingsChangeTrans()
        {
            SrmDocument docFasta    = CreateMixedDoc();
            SrmSettings settings    = docFasta.Settings;
            SrmDocument docFastaNoP = docFasta.ChangeSettings(settings.ChangeTransitionFilter(
                                                                  f => f.ChangeMeasuredIons(new MeasuredIon[0])));

            // Fixed start and end positions
            SrmDocument docFasta2 = CheckTranstions(docFastaNoP, "ion 1", "last ion", 1);

            CheckTranstions(docFasta2, "ion 2", "last ion - 1", 3);
            docFasta2 = CheckTranstions(docFastaNoP, "ion 3", "last ion - 2", 5);
            CheckTranstions(docFasta2, "ion 4", "last ion - 3", 7);

            // Check ion types including precursor
            var docPrec = docFasta2.ChangeSettings(docFasta2.Settings.ChangeTransitionFilter(f =>
                                                                                             f.ChangePeptideIonTypes(new[] { IonType.y, IonType.precursor })));

            Assert.AreEqual(docFasta2.PeptideTransitionCount + docFasta2.PeptideTransitionGroupCount, docPrec.PeptideTransitionCount);
            docPrec = docFasta2.ChangeSettings(docFasta2.Settings.ChangeTransitionFilter(f =>
                                                                                         f.ChangePeptideIonTypes(new[] { IonType.precursor })));
            Assert.AreEqual(docFasta2.PeptideTransitionGroupCount, docPrec.PeptideTransitionCount);
            AssertEx.Serializable(docPrec, AssertEx.DocumentCloned);

            // TODO: Finish this test
        }
Ejemplo n.º 3
0
        private static SrmDocument CheckTranstions(SrmDocument document, string startName, string endName, int ionDiff)
        {
            SrmSettings settings = document.Settings;
            SrmDocument docNew   = document.ChangeSettings(settings.ChangeTransitionFilter(
                                                               f => f.ChangeFragmentRangeFirstName(startName).ChangeFragmentRangeLastName(endName)).
                                                           ChangeTransitionInstrument(i => i.ChangeMaxMz(5000)));

            // length-n ions
            foreach (PeptideDocNode nodePeptide in docNew.Peptides)
            {
                Assert.AreEqual(Math.Max(0, nodePeptide.Peptide.Sequence.Length - ionDiff),
                                nodePeptide.TransitionCount);
            }

            return(docNew);
        }
Ejemplo n.º 4
0
        public void LibraryTransitionTest()
        {
            LibraryManager        libraryManager;
            TestDocumentContainer docContainer;
            int         startRev;
            SrmDocument docLoaded = CreateNISTLibraryDocument(out libraryManager, out docContainer, out startRev);

            // Test tolerance range
            SrmSettings settings = docLoaded.Settings.ChangeTransitionLibraries(l =>
                                                                                l.ChangeIonMatchTolerance(TransitionLibraries.MIN_MATCH_TOLERANCE));
            SrmDocument docLowTol = docLoaded.ChangeSettings(settings);

            // Use the original low tolerance for transition testing, since
            // the new low tolerance is for high accuracy data.
            docLowTol = docLowTol.ChangeSettings(settings.ChangeTransitionLibraries(l =>
                                                                                    l.ChangeIonMatchTolerance(0.1)));
            settings = docLowTol.Settings.ChangeTransitionLibraries(l =>
                                                                    l.ChangeIonMatchTolerance(TransitionLibraries.MAX_MATCH_TOLERANCE));
            SrmDocument docHighTol = docLoaded.ChangeSettings(settings);

            Assert.AreEqual(docLowTol.PeptideTransitionCount, docHighTol.PeptideTransitionCount);

            var transLow  = docLowTol.PeptideTransitions.ToArray();
            var transHigh = docHighTol.PeptideTransitions.ToArray();
            int diffCount = 0;

            for (int i = 0; i < transLow.Length; i++)
            {
                if (!Equals(transLow[i], transHigh[i]))
                {
                    diffCount++;
                }
            }
            Assert.AreEqual(2, diffCount);

            Assert.IsTrue(ArrayUtil.ReferencesEqual(docLoaded.PeptideTransitionGroups.ToArray(), docHighTol.PeptideTransitionGroups.ToArray()));
            Assert.IsTrue(HasMaxTransitionRank(docHighTol, 3));

            SrmSettings setThrow = settings;

            AssertEx.ThrowsException <InvalidDataException>(() =>
                                                            setThrow.ChangeTransitionLibraries(l => l.ChangeIonMatchTolerance(TransitionLibraries.MAX_MATCH_TOLERANCE * 2)));
            AssertEx.ThrowsException <InvalidDataException>(() =>
                                                            setThrow.ChangeTransitionLibraries(l => l.ChangeIonMatchTolerance(TransitionLibraries.MIN_MATCH_TOLERANCE / 2)));

            // Picked transition count
            settings = docLoaded.Settings.ChangeTransitionLibraries(l => l.ChangeIonCount(5));
            SrmDocument docHighIons = docLoaded.ChangeSettings(settings);

            AssertEx.IsDocumentState(docHighIons, ++startRev, 2, 4, 20);
            Assert.IsTrue(HasMaxTransitionRank(docHighIons, 5));
            Assert.IsFalse(HasMinTransitionOrdinal(docHighIons, 4));

            settings = settings.ChangeTransitionLibraries(l => l.ChangePick(TransitionLibraryPick.none));
            SrmDocument docFilteredIons = docHighIons.ChangeSettings(settings);

            AssertEx.IsDocumentState(docFilteredIons, ++startRev, 2, 4, 15); // Proline ions
            Assert.IsFalse(HasMaxTransitionRank(docFilteredIons, 5));

            settings = settings.ChangeTransitionFilter(f => f.ChangeFragmentRangeFirstName("ion 4")
                                                       .ChangeFragmentRangeLastName("last ion").ChangeMeasuredIons(new MeasuredIon[0]));
            settings = settings.ChangeTransitionLibraries(l => l.ChangePick(TransitionLibraryPick.filter));
            SrmDocument docRankedFiltered = docFilteredIons.ChangeSettings(settings);

            AssertEx.IsDocumentState(docRankedFiltered, ++startRev, 2, 4, 20);
            Assert.IsTrue(HasMaxTransitionRank(docRankedFiltered, 5));
            Assert.IsTrue(HasMinTransitionOrdinal(docRankedFiltered, 4));
            AssertEx.Serializable(docRankedFiltered, (doc1, doc2) => ValidateLibraryDocs(doc1, doc2, libraryManager));
        }