protected override void DoRealGo()
        {
            Aminoacids aas = Aminoacids.ParseModificationFromOutFileLine(modification.Text);

            IPeptideMassCalculator calc;

            if (isMonoisotopic.Checked)
            {
                calc = new MonoisotopicPeptideMassCalculator(aas);
            }
            else
            {
                calc = new AveragePeptideMassCalculator(aas);
            }

            string seq = PeptideUtils.GetMatchedSequence(sequence.Text);
            double value;

            if (isMH.Checked)
            {
                value = calc.GetMz(seq, 1);
            }
            else
            {
                value = calc.GetMass(seq);
            }
            txtResult.Text = value.ToString();
        }
        public IPeptideMassCalculator GetPeptideMassCalculator()
        {
            bool isMono = IsPrecursorMonoisotopic();

            var aas = new Aminoacids();
            Dictionary <char, double> staticModifications = GetStaticAminoacidModification();

            foreach (char aa in staticModifications.Keys)
            {
                aas[aa].ResetMass(aas[aa].MonoMass + staticModifications[aa], aas[aa].AverageMass + staticModifications[aa]);
            }

            var diff = new[] { '*', '#', '@', '^', '~', '$' };
            int i    = 0;

            foreach (double mod in Diff_search_options.Values)
            {
                aas[diff[i++]].ResetMass(mod, mod);
            }

            double nterm = isMono ? Atom.H.MonoMass : Atom.H.AverageMass;
            double cterm = isMono ? Atom.H.MonoMass + Atom.O.MonoMass : Atom.H.AverageMass + Atom.O.AverageMass;

            if (this.term_diff_search_options.First != 0.0 || this.term_diff_search_options.Second != 0.0)
            {
                throw new Exception(
                          "Term dynamic modification has not been implemented into this function, call author to fix it.");
            }

            IPeptideMassCalculator result;

            if (isMono)
            {
                result = new MonoisotopicPeptideMassCalculator(aas, nterm, cterm);
            }
            else
            {
                result = new AveragePeptideMassCalculator(aas, nterm, cterm);
            }

            return(result);
        }