Esempio n. 1
0
        public static CometParams FileContentsToCometParams(string fileContents)
        {
            var config    = CometParams.GetIonTrapParams();
            var fileLines = fileContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            var rx        = new Regex(@"^([\w]+)\s*=\s*([\w\s\.]+)");

            foreach (var nextLine in fileLines)
            {
                if (!rx.IsMatch(nextLine))
                {
                    continue;
                }
                var match = rx.Match(nextLine);
                if (match.Groups.Count < 3)
                {
                    continue;
                }
                double nextNumber;
                var    validNumber = double.TryParse(match.Groups[2].Value, out nextNumber);
                switch (match.Groups[1].Value)
                {
                case "peptide_mass_tolerance":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.PrecursorTolerance = nextNumber;
                    break;

                case "peptide_mass_units":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.PrecursorUnit = (int)nextNumber;
                    break;

                case "search_enzyme_number":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.CleavageAgent = (int)nextNumber;
                    break;

                case "num_enzyme_termini":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.Specificity = (int)nextNumber;
                    break;

                case "allowed_missed_cleavage":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.MaxMissedCleavages = (int)nextNumber;
                    break;

                case "max_variable_mods_in_peptide":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.MaxMods = (int)nextNumber;
                    break;

                case "fragment_bin_tol":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.FragmentBinTolerance = nextNumber;
                    break;

                case "fragment_bin_offset":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.FragmentBinOffset = nextNumber;
                    break;

                case "add_C_cysteine":
                    if (!validNumber)
                    {
                        break;
                    }
                    config.StaticCysteineMod = nextNumber;
                    break;
                }
                if (match.Groups[1].Value.StartsWith("variable_mod"))
                {
                    var splitValue = match.Groups[2].Value.Split(" ".ToCharArray(),
                                                                 StringSplitOptions.RemoveEmptyEntries);
                    if (splitValue.Length < 4)
                    {
                        continue;
                    }
                    double massShift;
                    if (!double.TryParse(splitValue[0], out massShift))
                    {
                        continue;
                    }
                    config.DynamicModifications.Add(new CometParams.Modification(splitValue[1], massShift));
                }
            }

            return(config);
        }