示例#1
0
        /// <summary>
        /// Combine isotope pattern
        /// </summary>
        /// <param name="argNumberPermethlationSite"></param>
        /// <param name="argStartPurity"></param>
        /// <param name="argIntensities"></param>
        /// <returns></returns>
        public static float Estimater3(COL.GlycoLib.GlycanCompound argCompond, int argTheoreticalMonoIdx, float[] argIntensities)
        {
            double[] isotopeRatio = new double[argIntensities.Length];
            for (int i = 0; i < isotopeRatio.Length; i++)
            {
                isotopeRatio[i] = 0;
            }
            ChemicalFormula MonoChemFormula = new ChemicalFormula();

            MonoChemFormula.Add("C", argCompond.Carbon);
            MonoChemFormula.Add("H", argCompond.Hydrogen);
            MonoChemFormula.Add("O", argCompond.Oxygen);
            if (argCompond.Carbon13 != 0)
            {
                MonoChemFormula.Add("C{13}", argCompond.Carbon13);
            }
            if (argCompond.Deuterium != 0)
            {
                MonoChemFormula.Add("D", argCompond.Deuterium);
            }
            if (argCompond.Sodium != 0)
            {
                MonoChemFormula.Add("Na", argCompond.Sodium);
            }
            if (argCompond.Nitrogen != 0)
            {
                MonoChemFormula.Add("N", argCompond.Nitrogen);
            }
            double[] IsotopeDist = MonoChemFormula.GetIsotopicDistribution(10);


            return(0.0f);
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="argCompond"></param>
        /// <param name="argTheoreticalMonoIdx"></param>
        /// <param name="argIntensities"></param>
        /// <returns></returns>
        public static double IntensityNormalizationFactorByIsotope(COL.GlycoLib.GlycanCompound argCompond, int argNumOfLabelingSite, double[] argIntensities, float argPurity)
        {
            ChemicalFormula MonoChemFormula = new ChemicalFormula();

            MonoChemFormula.Add("C", argCompond.Carbon + argCompond.Carbon13);
            MonoChemFormula.Add("H", argCompond.Hydrogen + argCompond.Deuterium);
            MonoChemFormula.Add("O", argCompond.Oxygen);
            //if (argCompond.Carbon13 != 0)
            //{
            //    MonoChemFormula.Add("C{13}", argCompond.Carbon13);
            //}
            //if (argCompond.Deuterium != 0)
            //{
            //    MonoChemFormula.Add("D", argCompond.Deuterium);
            //}
            if (argCompond.Sodium != 0)
            {
                MonoChemFormula.Add("Na", argCompond.Sodium);
            }
            if (argCompond.Nitrogen != 0)
            {
                MonoChemFormula.Add("N", argCompond.Nitrogen);
            }
            IsotopicDistribution ID = new IsotopicDistribution();

            MZPeak[] Peaks        = ID.CalculateDistribuition(MonoChemFormula, 7, IsotopicDistribution.Normalization.BasePeak).GetPeaks().ToArray();
            double[] isotopeRatio = new double[7];
            for (int i = 0; i < 7; i++)
            {
                isotopeRatio[i] = Peaks[i].Intensity;
            }
            double[] CorrectedIntensities = (double[] )argIntensities.Clone();

            //Isotope Correction
            for (int i = 0; i <= 2; i++)
            {
                double Ratio = CorrectedIntensities[i] / isotopeRatio[0];
                for (int j = i; j < 7; j++)
                {
                    CorrectedIntensities[j] = CorrectedIntensities[j] - (isotopeRatio[j - i] * Ratio);
                }
            }


            double isotopeCorrectionFactor = CorrectedIntensities[3] / argIntensities[3];

            // Purity Correction
            //double PurityCorrection = Math.Pow(argPurity, argNumOfLabelingSite);

            return(isotopeCorrectionFactor);
        }