public static void ParseMsm(string msmName, string[] silacMsmNames, string isoMsmName, string peakMsmName, string polyMsmName, IPeakList peakList, out int silacCount, out int isoCount, out int peakCount, out int polyCount, SilacType silacType, double isotopeCorrelationThreshold) { HashSet <int> scanNumbers = new HashSet <int>(); StreamReader reader = new StreamReader(msmName); StreamWriter[] silacWriters = new StreamWriter[silacMsmNames.GetLength(0)]; for (int i = 0; i < silacWriters.GetLength(0); i++) { silacWriters[i] = new StreamWriter(silacMsmNames[i]); } StreamWriter isoWriter = new StreamWriter(isoMsmName); StreamWriter peakWriter = new StreamWriter(peakMsmName); StreamWriter polyWriter = new StreamWriter(polyMsmName); string line; List <string> buffer = new List <string>(); string title = null; string mass = null; silacCount = 0; isoCount = 0; peakCount = 0; polyCount = 0; while ((line = reader.ReadLine()) != null) { if (line.IndexOf("BEGIN IONS") != -1) { buffer = new List <string>(); } else if (line.IndexOf("PEPMASS") != -1) { mass = line; } else if (line.IndexOf("CHARGE") != -1) { } else if (line.IndexOf("TITLE") != -1) { title = line; } else if (line.IndexOf("END IONS") != -1) { ProcessMsm(buffer.ToArray(), title, mass, scanNumbers, silacWriters, isoWriter, peakWriter, polyWriter, peakList, isotopeCorrelationThreshold, silacType, ref silacCount, ref isoCount, ref peakCount, ref polyCount); } else { if (line.Length > 0) { buffer.Add(line); } } } reader.Close(); for (int i = 0; i < silacWriters.GetLength(0); i++) { silacWriters[i].Close(); } isoWriter.Close(); peakWriter.Close(); polyWriter.Close(); }