コード例 #1
0
        //Returns an empirical formula string with or without PTMs.
        //Accounts for the PTMs using the Averagine formula.
        //Parses out the PTMs and calculates the empirical formula for the known unmodified sequence.
        //Adds or subtracts the PTM formula from the sequence formula based on the overall mass of the PTMs
        public string GetEmpiricalFormulaFromSequence(string code, bool cysteinesAreModified = false)
        {
            var ptmFormula       = "";
            var sequenceFormula  = "";
            var empiricalFormula = "";

            var ptmMass = PtmMassFromCode(code);

            ptmFormula = IsotopicDistributionCalculator.Instance.GetAveragineFormulaAsString(Math.Abs(ptmMass), false);

            sequenceFormula = SequenceToEmpiricalFormula(code, cysteinesAreModified);

            if (ptmMass < 0)
            {
                empiricalFormula = EmpiricalFormulaUtilities.SubtractFormula(sequenceFormula, ptmFormula);
            }
            else
            {
                empiricalFormula = EmpiricalFormulaUtilities.AddFormula(sequenceFormula, ptmFormula);
            }

            //TEMPORARY HANDLING OF BAD TARGETS WITH PTM > SEQUENCE
            //CHECK THE UPDATEMISSINGTARGETINFO IN IQTARGETUTILITES WHEN CHANGING
            if (String.IsNullOrEmpty(empiricalFormula))
            {
                empiricalFormula = "C0H0N0O0S0";
            }
            return(empiricalFormula);
        }
コード例 #2
0
        public void ProteinSequenceToMassHugePTMTest()
        {
            var parser = new IqCodeParser();

            var proteoform =
                "M.V(HLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVC)[-11849.17]VLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH.";
            var trueMass             = 4008.08; // only one significant decimal really.  could be 4008.07 or .08 Can't tell yet
            var unmodifiedProteoform =
                "M.VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH.";
            var ptm = "[-11849.17]";

            var proteoformComposition = parser.GetEmpiricalFormulaFromSequence(proteoform);

            var unmodifiedProteoformComposition = parser.GetEmpiricalFormulaFromSequence(unmodifiedProteoform);

            var ptmComposition = parser.GetEmpiricalFormulaFromSequence(ptm);

            var difference = EmpiricalFormulaUtilities.SubtractFormula(unmodifiedProteoformComposition, ptmComposition);

            Console.WriteLine(proteoformComposition);
            Console.WriteLine(difference);

            Assert.AreEqual(proteoformComposition, difference);

            var differenceMass = EmpiricalFormulaUtilities.GetMonoisotopicMassFromEmpiricalFormula(difference);
            var proteformMass  = EmpiricalFormulaUtilities.GetMonoisotopicMassFromEmpiricalFormula(proteoformComposition);

            var unmodifiedProteoformMass = EmpiricalFormulaUtilities.GetMonoisotopicMassFromEmpiricalFormula(unmodifiedProteoformComposition);

            Console.WriteLine(unmodifiedProteoformMass);
            var ptmMass = EmpiricalFormulaUtilities.GetMonoisotopicMassFromEmpiricalFormula(ptmComposition);

            Console.WriteLine(ptmMass);

            var conversionFirst = unmodifiedProteoformMass - ptmMass;

            Console.WriteLine(conversionFirst);

            Assert.AreEqual(trueMass, conversionFirst, 0.1);
            Assert.AreEqual(trueMass, differenceMass, .1);
            Assert.AreEqual(trueMass, proteformMass, .1);
        }
コード例 #3
0
        public void MsAlignCodeParserTest()
        {
            var parser     = new IqCodeParser();
            var examplemod =
                "A.AENVVHHKLDGMPISEAVEINAGNNLVF(LSGKVPTKKSADAPEGELASYGNTE)[713.72]EQTINVLEQIKTNLNNLGLDMKDVVKMQVFLVGGEENNGTMDFKGFMNGYSKFYDASKTNQLPARSAFQVA(K)[1.02]LANPAWRVEIEVIAVRPAK.";
            var checkmass    = "[714.74]";
            var examplenomod = "A.AENVVHHKLDGMPISEAVEINAGNNLVLSGKVPTKKSADAPEGELASYGNTEFEQTINVLEQIKTNLNNLGLDMKDVVKMQVFLVGGEENNGTMDFKGFMNGYSKFYDASKTNQLPARSAFQVAKLANPAWRVEIEVIAVRPAK.";

            var examplemodresult   = parser.GetEmpiricalFormulaFromSequence(examplemod);
            var checkmassresult    = parser.GetEmpiricalFormulaFromSequence(checkmass);
            var examplenomodresult = parser.GetEmpiricalFormulaFromSequence(examplenomod);

            Console.WriteLine(examplemodresult);
            Console.WriteLine(checkmassresult);
            Console.WriteLine(examplenomodresult);

            var difference = EmpiricalFormulaUtilities.SubtractFormula(examplemodresult, checkmassresult);

            Assert.AreEqual(examplenomodresult, difference);
        }
コード例 #4
0
        public void MsgfCodeParserTest()
        {
            var parser     = new IqCodeParser();
            var examplemod =
                "+144.102PRYRK+144.102RTPVSLY+79.966QK+144.102T+79.966PNGEK+144.102PYEC+57.021GEC+57.021GK+144.102-202";
            var checkmass    = "+792.484";
            var examplenomod = "PRYRKRTPVSLYQKTPNGEKPYECGECGK";

            var examplemodresult   = parser.GetEmpiricalFormulaFromSequence(examplemod);
            var checkmassresult    = parser.GetEmpiricalFormulaFromSequence(checkmass);
            var examplenomodresult = parser.GetEmpiricalFormulaFromSequence(examplenomod);

            Console.WriteLine(examplemodresult);
            Console.WriteLine(checkmassresult);
            Console.WriteLine(examplenomodresult);

            var difference = EmpiricalFormulaUtilities.SubtractFormula(examplemodresult, checkmassresult);

            Assert.AreEqual(examplenomodresult, difference);
        }
コード例 #5
0
        public void PyroglutamateTest1()
        {
            const string testPeptide  = "SAMPLER";
            var          peptideUtils = new PeptideUtils();
            var          formula      = peptideUtils.GetEmpiricalFormulaForPeptideSequence(testPeptide);

            const string pyroglutamateMod = "H3N1";

            var empiricalFormula = EmpiricalFormulaUtilities.SubtractFormula(formula, pyroglutamateMod);

            var massUnmodified = EmpiricalFormulaUtilities.GetMonoisotopicMassFromEmpiricalFormula(formula);
            var massModified   = EmpiricalFormulaUtilities.GetMonoisotopicMassFromEmpiricalFormula(empiricalFormula);
            var diff           = Math.Round(massModified - massUnmodified, 1, MidpointRounding.AwayFromZero);

            Console.WriteLine(formula + "\t" + massUnmodified);
            Console.WriteLine(empiricalFormula + "\t" + massModified);
            Console.WriteLine("diff= " + diff);

            Assert.AreEqual(-17.0, diff);
        }
コード例 #6
0
ファイル: IqCodeParser.cs プロジェクト: trishorts/DeconTools
        //Returns an empirical formula string with or without PTMs.
        //Accounts for the PTMs using the Averagine formula.
        //Parses out the PTMs and calculates the empirical formula for the known unmodified sequence.
        //Adds or subtracts the PTM formula from the sequence formula based on the overall mass of the PTMs
        public string GetEmpiricalFormulaFromSequence(string code)
        {
            string PTM_Formula      = "";
            string SequenceFormula  = "";
            string EmpiricalFormula = "";

            double ptm_mass = PTMMassFromCode(code);

            PTM_Formula = IsotopicDistributionCalculator.Instance.GetAveragineFormulaAsString(Math.Abs(ptm_mass), false);

            SequenceFormula = SequenceToEmpiricalFormula(code);

            if (ptm_mass < 0)
            {
                EmpiricalFormula = EmpiricalFormulaUtilities.SubtractFormula(SequenceFormula, PTM_Formula);
            }
            else
            {
                EmpiricalFormula = EmpiricalFormulaUtilities.AddFormula(SequenceFormula, PTM_Formula);
            }
            return(EmpiricalFormula);
        }
コード例 #7
0
        public string GetEmpiricalFormulaForSequenceWithMods(string code)
        {
            // Check for pyroglutamate modification
            var containsPyroglutamateMod = false;

            if (_modPyroglutamate.IsMatch(code))
            {
                containsPyroglutamateMod = true;
                // Remove the modification from the string
                var pieces = _modPyroglutamate.Match(code).Groups;
                code = pieces["prefix"].Value + pieces["modified"].Value + pieces["suffix"].Value;
            }

            // Check for acetylation modification
            var containsAcetylationMod = false;

            if (_modAcetylation.IsMatch(code))
            {
                containsAcetylationMod = true;
                // Remove the modification from the string
                var pieces = _modAcetylation.Match(code).Groups;
                code = pieces["prefix"].Value + pieces["modified"].Value + pieces["suffix"].Value;
            }

            // Check for phosphorylation modification
            // TODO: this function does not account for the fact that phosphorylation could occur multiple times
            var containsPhosphorylationMod = false;

            if (_modPhosphorylation.IsMatch(code))
            {
                containsPhosphorylationMod = true;
                // Remove the modification from the string
                var pieces = _modPhosphorylation.Match(code).Groups;
                code = pieces["prefix"].Value + pieces["modified"].Value + pieces["suffix"].Value;
            }

            // If the peptide sequence still has modifications, we can't get the empirical formula
            if (code.Contains("("))
            {
                return(String.Empty);
            }

            // Get the empirical formula as if the peptide sequence was unmodified
            var empiricalFormula = _peptideUtils.GetEmpiricalFormulaForPeptideSequence(code);

            // Apply modifications to empirical formula
            if (containsPyroglutamateMod)
            {
                empiricalFormula = EmpiricalFormulaUtilities.SubtractFormula(empiricalFormula, "H3N1");
            }
            if (containsAcetylationMod)
            {
                empiricalFormula = EmpiricalFormulaUtilities.AddFormula(empiricalFormula, "C2H2O");
            }
            if (containsPhosphorylationMod)
            {
                empiricalFormula = EmpiricalFormulaUtilities.AddFormula(empiricalFormula, "HPO3");
            }

            return(empiricalFormula);
        }