Beispiel #1
0
        public static CensusProteinItem Parse(string line)
        {
            Match m = proteinRegex.Match(line);

            if (!m.Success)
            {
                throw new Exception(
                          "Cannot recognize protein line format, contact with author please. And, provide this line to author :" + line);
            }

            var result = new CensusProteinItem();

            result.Locus = m.Groups[1].Value;

            result.AverageRatio = MyConvert.ToDouble(m.Groups[2].Value);

            if (m.Groups[3].Length == 0 || m.Groups[3].Value.Equals("NA"))
            {
                result.StandardDeviation = 0;
            }
            else
            {
                result.StandardDeviation = MyConvert.ToDouble(m.Groups[3].Value);
            }

            result.WeightedAverage = MyConvert.ToDouble(m.Groups[4].Value);

            result.PeptideNumber = int.Parse(m.Groups[5].Value);

            result.SpectraCount = int.Parse(m.Groups[6].Value);

            result.Description = m.Groups[7].Value;

            return(result);
        }
        private List <CensusProteinItem> ReadProteins(string filename)
        {
            var result     = new List <CensusProteinItem>();
            var peptideMap = new Dictionary <string, CensusPeptideItem>();

            var lastItem = new CensusProteinItem();

            using (var sr = new StreamReader(filename))
            {
                string lastLine = sr.ReadLine();
                while (lastLine != null)
                {
                    lastLine = lastLine.Trim();

                    if (lastLine.StartsWith("S") || (lastLine.StartsWith("&S") && this.readSingleton))
                    {
                        CensusPeptideItem pepItem = this.peptideFormat.ParseString(lastLine);
                        if (pepItem.Ratio != 0.0)
                        {
                            string longFilename = pepItem.Filename.LongFileName;
                            if (peptideMap.ContainsKey(longFilename))
                            {
                                lastItem.Peptides.Add(peptideMap[longFilename]);
                            }
                            else
                            {
                                peptideMap[longFilename] = pepItem;
                                lastItem.Peptides.Add(pepItem);
                            }
                        }
                    }
                    else if (lastLine.StartsWith("P"))
                    {
                        lastItem = this.proteinFormat.ParseString(lastLine);
                        result.Add(lastItem);
                    }

                    lastLine = sr.ReadLine();
                }
            }

            result.ForEach(m => m.ValidatePeptides());

            result.RemoveAll(m => m.Peptides.Count == 0);

            return(result);
        }