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); }
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 }
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); }
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)); }