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); }