Example #1
0
        /// <summary>
        /// Makes the call to generate the ion masses adjusts for etd fragmentation
        /// </summary>
        /// <param name="charge">charge, do i need this?</param>
        /// <param name="aParams">ascore parameters</param>
        private void Calculate(int charge, AScoreParameters aParams)
        {
            chargeState = charge;

            // First thing to do is generate the base ion masses
            GenerateIonMasses(aParams.StaticMods, aParams.TerminiMods);
            // If the fragment type is ETD, we need to convert the B and Y ions
            // into C and Z ions
            if (aParams.FragmentType == FragmentType.ETD)
            {
                for (int i = 0; i < yIonsMonoisotopicMass.Count; ++i)
                {
                    MolecularWeights.MassType = MassType.Monoisotopic;
                    if (i < bIonsMonoisotopicMass.Count)
                    {
                        bIonsMonoisotopicMass[i] += MolecularWeights.Ammonia;
                    }
                    yIonsMonoisotopicMass[i] -= MolecularWeights.NH2;
                }
            }
        }
Example #2
0
 public TheoreticalSpectra(string fht, AScoreParameters aparam, int chargeS, List <Mod.DynamicModification> moveMod)
 {
     chargeState = chargeS;
     this.fht    = fht;
     Calculate(chargeState, aparam);
 }
Example #3
0
        /// <summary>
        /// Parses the parameter file for ascore
        /// </summary>
        /// <param name="inputFile">name of the xml file</param>
        /// <returns>ascore parameters object</returns>
        public static AScoreParameters ParseXml(string inputFile)
        {
            XmlDocument parameterFile = new XmlDocument();

            parameterFile.Load(new XmlTextReader(inputFile));

            XmlNodeList staticMod  = parameterFile.SelectNodes("/Run/Modifications/StaticSeqModifications");
            XmlNodeList terminiMod = parameterFile.SelectNodes("/Run/Modifications/TerminiModifications");
            XmlNodeList dynamicMod = parameterFile.SelectNodes("/Run/Modifications/DynamicModifications");

            XmlNode massTolerance = parameterFile.SelectSingleNode("/Run/MassTolerance");

            XmlNode fragmentType = parameterFile.SelectSingleNode("/Run/FragmentType");



            FragmentType f       = GetFragmentType(fragmentType);
            double       massTol = double.Parse(massTolerance.InnerText);

            List <Modification>        stat    = new List <Modification>();
            List <TerminiModification> termMod = new List <TerminiModification>();
            List <DynamicModification> dynam   = new List <DynamicModification>();


            foreach (XmlNode mod in staticMod)
            {
                foreach (XmlNode mod2 in mod.ChildNodes)
                {
                    double      massMonoIsotopic = 0.0;
                    char        modSymbol        = ' ';
                    List <char> possibleModSites = new List <char>();
                    int         uniqueID         = 0;
                    foreach (XmlNode item in mod2.ChildNodes)
                    {
                        if (item.Name == "MassMonoIsotopic")
                        {
                            massMonoIsotopic = double.Parse(item.InnerText);
                        }
                        else if (item.Name == "PossibleModSites")
                        {
                            foreach (XmlNode item2 in item.ChildNodes)
                            {
                                possibleModSites.Add(item2.InnerText[0]);
                            }
                        }
                        else if (item.Name == "UniqueID")
                        {
                            uniqueID = int.Parse(item.InnerText);
                        }
                    }
                    Modification m = new Modification();
                    m.MassMonoisotopic = massMonoIsotopic;
                    m.ModSymbol        = modSymbol;
                    m.PossibleModSites = possibleModSites;
                    m.UniqueID         = uniqueID;
                    stat.Add(m);
                }
            }


            foreach (XmlNode mod in terminiMod)
            {
                foreach (XmlNode mod2 in mod.ChildNodes)
                {
                    double      massMonoIsotopic = 0.0;
                    char        modSymbol        = ' ';
                    List <char> possibleModSites = new List <char>();
                    int         uniqueID         = 0;
                    bool        nTerm            = false;
                    bool        cTerm            = false;
                    foreach (XmlNode item in mod2.ChildNodes)
                    {
                        if (item.Name == "MassMonoIsotopic")
                        {
                            massMonoIsotopic = double.Parse(item.InnerText);
                        }
                        else if (item.Name == "UniqueID")
                        {
                            uniqueID = int.Parse(item.InnerText);
                        }

                        else if (item.Name == "Nterm")
                        {
                            nTerm = bool.Parse(item.InnerText);
                        }
                        else if (item.Name == "Cterm")
                        {
                            cTerm = bool.Parse(item.InnerText);
                        }
                    }

                    TerminiModification m = new TerminiModification();
                    m.MassMonoisotopic = massMonoIsotopic;
                    m.ModSymbol        = modSymbol;
                    m.PossibleModSites = possibleModSites;
                    m.UniqueID         = uniqueID;
                    m.nTerminus        = nTerm;
                    m.cTerminus        = cTerm;
                    termMod.Add(m);
                }
            }


            foreach (XmlNode mod in dynamicMod)
            {
                foreach (XmlNode mod2 in mod.ChildNodes)
                {
                    double      massMonoIsotopic = 0.0;
                    char        modSymbol        = ' ';
                    List <char> possibleModSites = new List <char>();
                    int         uniqueID         = 0;
                    foreach (XmlNode item in mod2.ChildNodes)
                    {
                        if (item.Name == "MassMonoIsotopic")
                        {
                            massMonoIsotopic = double.Parse(item.InnerText);
                        }
                        else if (item.Name == "ModificationSymbol")
                        {
                            modSymbol = item.InnerText[0];
                        }
                        else if (item.Name == "PossibleModSites")
                        {
                            foreach (XmlNode item2 in item.ChildNodes)
                            {
                                possibleModSites.Add(item2.InnerText[0]);
                            }
                        }
                        else if (item.Name == "UniqueID")
                        {
                            uniqueID = int.Parse(item.InnerText);
                        }
                        else if (item.Name == "MaxPerSite")
                        {
                        }
                    }
                    DynamicModification m = new DynamicModification();
                    m.MassMonoisotopic = massMonoIsotopic;
                    m.ModSymbol        = modSymbol;
                    m.PossibleModSites = possibleModSites;
                    m.UniqueID         = uniqueID;
                    dynam.Add(m);
                }
            }



            AScoreParameters aParams = new AScoreParameters(stat, termMod, dynam, f, massTol);

            return(aParams);
        }