Esempio n. 1
0
        /// <summary>
        /// This will take the input of a peptide sequence and a bool for the fragmentation mode (false = CID, true = ETD).
        /// </summary>
        /// <param name="peptide">This is the peptide sequence.</param>
        /// <param name="fragmentationModeETD">True when the fragmentation mode is CID</param>
        /// <returns>List of theoretical ions as key/value pairs (key is ion abbreviation, value is m/z value)</returns>
        public List <KeyValuePair <string, double> > GetTheoreticalDataByPeptideSequence(string peptide, bool fragmentationModeETD)
        {
            // Set the element mode
            m_mMwtWin.SetElementMode(MwtWinDll.MWElementAndMassRoutines.emElementModeConstants.emIsotopicMass);

            // Initialize the options
            MwtWinDll.MWPeptideClass.udtFragmentationSpectrumOptionsType udtFragSpectrumOptions = default(MwtWinDll.MWPeptideClass.udtFragmentationSpectrumOptionsType);
            udtFragSpectrumOptions.Initialize();

            // Initialize udtFragSpectrumOptions with the defaults
            udtFragSpectrumOptions = m_mMwtWin.Peptide.GetFragmentationSpectrumOptions();

            // The entire list of value will be retirved without any filtering
            udtFragSpectrumOptions.DoubleChargeIonsShow      = true;
            udtFragSpectrumOptions.TripleChargeIonsShow      = true;
            udtFragSpectrumOptions.DoubleChargeIonsThreshold = 1;
            udtFragSpectrumOptions.TripleChargeIonsThreshold = 1;

            // Each label begins with "b", "y", "c", or "z"
            char modeString1;

            if (fragmentationModeETD)
            {
                modeString1 = 'c';
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itBIon].ShowIon = false;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].ShowIon = false;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itCIon].ShowIon = true;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itZIon].ShowIon = true;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itAIon].ShowIon = false;
            }
            else
            {
                modeString1 = 'b';
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itBIon].ShowIon = true;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].ShowIon = true;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itCIon].ShowIon = false;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itZIon].ShowIon = false;
                udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itAIon].ShowIon = false;
            }

            // MolecularWeightTool allowed modification symbols.
            // 33	!
            // 35	#
            // 36	$
            // 37	%
            // 38	&
            // 39	'
            // 42	*
            // 43	+
            // 63	?
            // 64	@
            // 94	^
            // 95	_
            // 96	`
            // 126	~
            string allowedSymbols   = "!#$%&'*+?@^_`~";
            string usedSymbols      = new string(m_modificationList.Keys.ToArray());
            string availableSymbols = "";

            foreach (char c in allowedSymbols)
            {
                if (!usedSymbols.Contains(c))
                {
                    availableSymbols += c;
                }
            }
            Dictionary <char, char> badSymbolMap = new Dictionary <char, char>();

            //Add the modifications if needed.
            if (m_modificationList != null)
            {
                m_mMwtWin.Peptide.RemoveAllModificationSymbols(); // Remove the default MWT modification symbols
                foreach (KeyValuePair <char, double> modPair in m_modificationList)
                {
                    // Key is symbol, value is mzValue
                    string modComment       = string.Empty;
                    bool   indicatesPhospho = Math.Abs(modPair.Value - 79.9663326) < 0.005;
                    int    modResult        = m_mMwtWin.Peptide.SetModificationSymbol(modPair.Key.ToString(), modPair.Value, indicatesPhospho,
                                                                                      modComment);

                    if (modResult != 0) // A symbol that is not allowed, most likely
                    {
                        modResult = m_mMwtWin.Peptide.SetModificationSymbol(availableSymbols[0].ToString(), modPair.Value, indicatesPhospho,
                                                                            modComment);
                        badSymbolMap.Add(modPair.Key, availableSymbols[0]); // Add it to the dictionary
                        availableSymbols = availableSymbols.Substring(1);   // Remove it from the available symbols.
                    }

                    //if modresult = 0 symbol add is successful, useful spot for breakpoint
                    //modResult = modResult + 0;
                }
            }

            string peptideFix = peptide;

            foreach (KeyValuePair <char, char> symfix in badSymbolMap)
            {
                peptideFix = peptideFix.Replace(symfix.Key, symfix.Value);
            }

            // Obtain the fragmentation spectrum for a peptide
            // First define the peptide sequence
            // Need to pass "false" to parameter blnIs3LetterCode since "peptide" is in one-letter notation
            m_mMwtWin.Peptide.SetSequence(peptideFix,
                                          MwtWinDll.MWPeptideClass.ntgNTerminusGroupConstants.ntgHydrogen,
                                          MwtWinDll.MWPeptideClass.ctgCTerminusGroupConstants.ctgHydroxyl,
                                          false);

            // Update the options
            m_mMwtWin.Peptide.SetFragmentationSpectrumOptions(udtFragSpectrumOptions);

            // Get the fragmentation masses
            MwtWinDll.MWPeptideClass.udtFragmentationSpectrumDataType[] udtFragSpectrum = null;
            m_mMwtWin.Peptide.GetFragmentationMasses(ref udtFragSpectrum);


            var cleanPeptide = m_mMwtWin.Peptide.GetSequence(false, false, false, false, false);

            if (string.IsNullOrWhiteSpace(cleanPeptide))
            {
                // No valid residues
                return(new List <KeyValuePair <string, double> >());
            }

            // Obtain the list of ions
            List <KeyValuePair <string, double> > theoryList = GetTheoryList(cleanPeptide, fragmentationModeETD, modeString1, udtFragSpectrum);

            return(theoryList);
        }
Esempio n. 2
0
        private void TestAccessFunctions(string sequence)//public or private
        {
            string strNewSeq = sequence;

            // Set the element mode (average, monoisotopic, or integer)
            mMwtWin.SetElementMode(MwtWinDll.MWElementAndMassRoutines.emElementModeConstants.emIsotopicMass);

            MwtWinDll.MWPeptideClass.udtFragmentationSpectrumOptionsType udtFragSpectrumOptions = default(MwtWinDll.MWPeptideClass.udtFragmentationSpectrumOptionsType);
            udtFragSpectrumOptions.Initialize();

            // Initialize udtFragSpectrumOptions with the defaults
            udtFragSpectrumOptions = mMwtWin.Peptide.GetFragmentationSpectrumOptions();

            // Customize the options
            udtFragSpectrumOptions.DoubleChargeIonsShow = false; //false
            udtFragSpectrumOptions.TripleChargeIonsShow = false;

            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itAIon].ShowIon              = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itBIon].ShowIon              = true;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].ShowIon              = true;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itBIon].NeutralLossAmmonia   = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].NeutralLossAmmonia   = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itBIon].NeutralLossPhosphate = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].NeutralLossPhosphate = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itBIon].NeutralLossWater     = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].NeutralLossWater     = false;

            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itCIon].ShowIon = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itZIon].ShowIon = false;

            // Obtain the fragmentation spectrum for a peptide

            // First define the peptide sequence
            // Need to pass "false" to parameter blnIs3LetterCode since strNewSeq is in one-letter notation
            mMwtWin.Peptide.SetSequence(strNewSeq,
                                        MwtWinDll.MWPeptideClass.ntgNTerminusGroupConstants.ntgHydrogen,
                                        MwtWinDll.MWPeptideClass.ctgCTerminusGroupConstants.ctgHydroxyl,
                                        false);

            // Update the options
            mMwtWin.Peptide.SetFragmentationSpectrumOptions(ref udtFragSpectrumOptions);

            // Get the fragmentation masses
            MwtWinDll.MWPeptideClass.udtFragmentationSpectrumDataType[] udtFragSpectrum = null;
            mMwtWin.Peptide.GetFragmentationMasses(ref udtFragSpectrum);
            //store b and y ions in separate lists
            List <double> bList = new List <double>();
            List <double> yList = new List <double>();

            for (int i = 0; i < udtFragSpectrum.Length; i++)
            {
                if (udtFragSpectrum[i].Symbol != null && udtFragSpectrum[i].Symbol.Contains("y"))
                {
                    yList.Add(Convert.ToDouble(udtFragSpectrum[i].Mass.ToString("0.0000")));
                }
                else
                {
                    bList.Add(Convert.ToDouble(udtFragSpectrum[i].Mass.ToString("0.0000")));
                }
                //byPeakList.Add(Convert.ToDouble(udtFragSpectrum[i].Mass.ToString("0.0000")));
            }
            bPeakHolder = bList.ToArray();
            yPeakHolder = yList.ToArray();
        }
Esempio n. 3
0
        public void TestAccessFunctions()
        {
            // Set the element mode (average, monoisotopic, or integer)
            mMwtWin.SetElementMode(MwtWinDll.MWElementAndMassRoutines.emElementModeConstants.emIsotopicMass);

            MwtWinDll.MWPeptideClass.udtFragmentationSpectrumOptionsType udtFragSpectrumOptions = default(MwtWinDll.MWPeptideClass.udtFragmentationSpectrumOptionsType);
            udtFragSpectrumOptions.Initialize();

            // Initialize udtFragSpectrumOptions with the defaults
            udtFragSpectrumOptions = mMwtWin.Peptide.GetFragmentationSpectrumOptions();

            // Customize the options
            udtFragSpectrumOptions.DoubleChargeIonsShow      = true;
            udtFragSpectrumOptions.TripleChargeIonsShow      = true;
            udtFragSpectrumOptions.DoubleChargeIonsThreshold = 400;
            udtFragSpectrumOptions.TripleChargeIonsThreshold = 400;

            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itAIon].ShowIon = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itBIon].ShowIon = false;

            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].ShowIon              = true;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].NeutralLossAmmonia   = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].NeutralLossPhosphate = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itYIon].NeutralLossWater     = false;

            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itCIon].ShowIon = false;
            udtFragSpectrumOptions.IonTypeOptions[(int)MwtWinDll.MWPeptideClass.itIonTypeConstants.itZIon].ShowIon = false;

            udtFragSpectrumOptions.IntensityOptions.BYIonShoulder = 0;

            // Customize the modification symbols
            mMwtWin.Peptide.SetModificationSymbol("!", 57.02146, false, "Carbamidomethylation");
            mMwtWin.Peptide.SetModificationSymbol("+", 10.0, false, "Heavy Arg");

            string strNewSeq = "C!ETQNPVSAR+";

            // Obtain the fragmentation spectrum for a peptide

            // First define the peptide sequence
            // Need to pass "false" to parameter blnIs3LetterCode since strNewSeq is in one-letter notation
            mMwtWin.Peptide.SetSequence1LetterSymbol(strNewSeq);

            // Update the options
            mMwtWin.Peptide.SetFragmentationSpectrumOptions(udtFragSpectrumOptions);

            // Get the fragmentation masses
            MwtWinDll.MWPeptideClass.udtFragmentationSpectrumDataType[] udtFragSpectrum = null;
            mMwtWin.Peptide.GetFragmentationMasses(ref udtFragSpectrum);

            // Print the results to the console
            Console.WriteLine("Fragmentation spectrum for " + mMwtWin.Peptide.GetSequence(false, true, false, false));
            Console.WriteLine();

            Console.WriteLine("Mass     Intensity    \tSymbol");

            for (int i = 0; i < udtFragSpectrum.Length; i++)
            {
                Console.WriteLine(udtFragSpectrum[i].Mass.ToString("0.000") + "  " + udtFragSpectrum[i].Intensity.ToString("###0") + "        \t" + udtFragSpectrum[i].Symbol);

                // For debugging purposes, stop after displaying 20 ions
                if (i >= 30)
                {
                    Console.WriteLine("...");
                    break;
                }
            }

            Console.WriteLine();

            short  intSuccess = 0;
            string strResults = null;

            double[,] ConvolutedMSData2D = null;
            int ConvolutedMSDataCount = 0;

            // Compute the Isotopic distribution for the peptide
            // Need to first convert to an empirical formula
            // To do this, first obtain the peptide sequence in 3-letter notation
            string strSeq3Letter = mMwtWin.Peptide.GetSequence(true, false, false, true, false);

            // Now assing to the Compound class
            mMwtWin.Compound.SetFormula(strSeq3Letter);

            // Now convert to an empirical formula
            string s = mMwtWin.Compound.ConvertToEmpirical();

            bool  blnAddProtonChargeCarrier = true;
            short intChargeState            = 1;

            Console.WriteLine("Isotopic abundance test with Charge=" + intChargeState);
            intSuccess = mMwtWin.ComputeIsotopicAbundances(ref s, intChargeState, ref strResults, ref ConvolutedMSData2D, ref ConvolutedMSDataCount);
            Console.WriteLine(strResults);

            blnAddProtonChargeCarrier = false;
            intChargeState            = 1;
            Console.WriteLine("Isotopic abundance test with Charge=" + intChargeState + "; do not add a proton charge carrier");
            intSuccess = mMwtWin.ComputeIsotopicAbundances(ref s, intChargeState, ref strResults, ref ConvolutedMSData2D, ref ConvolutedMSDataCount, blnAddProtonChargeCarrier);
            Console.WriteLine(strResults);
        }