コード例 #1
0
        /// <summary>
        /// Resolve MS-GF+, MSPathFinder, or TopPIC mods with mod definitions
        /// </summary>
        /// <param name="modList"></param>
        /// <param name="peptideMods"></param>
        public void ResolveMSGFPlusModsWithModDefinitions(List <ModInfo> modList, PeptideModificationContainer peptideMods)
        {
            if (modList == null)
            {
                return;
            }

            for (var index = 0; index <= modList.Count - 1; index++)
            {
                var udtModInfo = modList[index];
                int resIndexStart;
                int resIndexEnd;

                if (udtModInfo.Residues.Length > 0)
                {
                    resIndexStart = 0;
                    resIndexEnd   = udtModInfo.Residues.Length - 1;
                }
                else
                {
                    resIndexStart = -1;
                    resIndexEnd   = -1;
                }

                for (var residueIndex = resIndexStart; residueIndex <= resIndexEnd; residueIndex++)
                {
                    char chTargetResidue;
                    if (residueIndex >= 0)
                    {
                        chTargetResidue = udtModInfo.Residues[residueIndex];
                        if (chTargetResidue == '*')
                        {
                            // This is a terminal mod, and MSGFDB lists the target residue as * for terminal mods
                            // This program requires that chTargetResidue be Nothing
                            chTargetResidue = default;
                        }
                    }
                    else
                    {
                        chTargetResidue = default;
                    }

                    var modType = ModificationDefinition.ResidueModificationType.DynamicMod;
                    AminoAcidModInfo.ResidueTerminusState residueTerminusState;

                    if (udtModInfo.ModType == MSGFPlusModType.DynNTermPeptide)
                    {
                        residueTerminusState = AminoAcidModInfo.ResidueTerminusState.PeptideNTerminus;
                    }
                    else if (udtModInfo.ModType == MSGFPlusModType.DynCTermPeptide)
                    {
                        residueTerminusState = AminoAcidModInfo.ResidueTerminusState.PeptideCTerminus;
                    }
                    else if (udtModInfo.ModType == MSGFPlusModType.DynNTermProtein)
                    {
                        residueTerminusState = AminoAcidModInfo.ResidueTerminusState.ProteinNTerminus;
                    }
                    else if (udtModInfo.ModType == MSGFPlusModType.DynCTermProtein)
                    {
                        residueTerminusState = AminoAcidModInfo.ResidueTerminusState.ProteinCTerminus;
                    }
                    else
                    {
                        switch (chTargetResidue)
                        {
                        case AminoAcidModInfo.N_TERMINAL_PEPTIDE_SYMBOL_DMS:
                            residueTerminusState = AminoAcidModInfo.ResidueTerminusState.PeptideNTerminus;
                            if (udtModInfo.ModType == MSGFPlusModType.StaticMod)
                            {
                                modType = ModificationDefinition.ResidueModificationType.TerminalPeptideStaticMod;
                            }
                            break;

                        case AminoAcidModInfo.C_TERMINAL_PEPTIDE_SYMBOL_DMS:
                            residueTerminusState = AminoAcidModInfo.ResidueTerminusState.PeptideCTerminus;
                            if (udtModInfo.ModType == MSGFPlusModType.StaticMod)
                            {
                                modType = ModificationDefinition.ResidueModificationType.TerminalPeptideStaticMod;
                            }
                            break;

                        case AminoAcidModInfo.N_TERMINAL_PROTEIN_SYMBOL_DMS:
                            residueTerminusState = AminoAcidModInfo.ResidueTerminusState.ProteinNTerminus;
                            if (udtModInfo.ModType == MSGFPlusModType.StaticMod)
                            {
                                modType = ModificationDefinition.ResidueModificationType.ProteinTerminusStaticMod;
                            }
                            break;

                        case AminoAcidModInfo.C_TERMINAL_PROTEIN_SYMBOL_DMS:
                            residueTerminusState = AminoAcidModInfo.ResidueTerminusState.ProteinCTerminus;
                            if (udtModInfo.ModType == MSGFPlusModType.StaticMod)
                            {
                                modType = ModificationDefinition.ResidueModificationType.ProteinTerminusStaticMod;
                            }
                            break;

                        default:
                            residueTerminusState = AminoAcidModInfo.ResidueTerminusState.None;
                            if (udtModInfo.ModType == MSGFPlusModType.StaticMod)
                            {
                                modType = ModificationDefinition.ResidueModificationType.StaticMod;
                            }
                            break;
                        }
                    }

                    var modificationDefinition = peptideMods.LookupModificationDefinitionByMassAndModType(
                        udtModInfo.ModMassVal, modType, chTargetResidue, residueTerminusState, out _, true);

                    if (residueIndex == resIndexStart)
                    {
                        // Update the Mod Symbol
                        udtModInfo.ModSymbol = modificationDefinition.ModificationSymbol;
                    }
                }

                modList[index] = udtModInfo;
            }
        }
コード例 #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <remarks>
 /// The base class constructor calls InitializeLocalVariables,
 /// which calls both the base class's Clear method and this class's Clear method
 /// </remarks>
 /// <param name="peptideMods"></param>
 /// <param name="peptideSeqMassCalculator"></param>
 public MODaResults(PeptideModificationContainer peptideMods, PeptideMassCalculator peptideSeqMassCalculator)
     : base(peptideMods, peptideSeqMassCalculator)
 {
 }