private void LoadPeaks(ZedGraphControl zgcScan, List <ZedGraphSmallMoleculeFilePeak> zgcPeaks, string[] fileNames, Color color) { var sigPeaks = from p in significantPeaks select p.Peak; List <FileData2> datas = FileData2.ReadFiles(fileNames, sigPeaks); SmallMoleculeZedGraphUtils.LoadPeaks(zgcScan, zgcPeaks, datas, color); zgcScan.MasterPane.SetLayout(zgcScan.CreateGraphics(), PaneLayout.SquareRowPreferred); zgcScan.AxisChange(); }
private void AddGraphPane(ZedGraphControl zgcScan, FileData2 data, Color color) { var items = data[peakName]; GraphPane myPane = new GraphPane(); var points = new PointPairList(); items.ConvertAll(m => new PointPair(m.Scan, m.Intensity)).ForEach(m => points.Add(m)); myPane.AddCurve(data.FileName, points, color, SymbolType.None); zgcScan.MasterPane.PaneList.Add(myPane); }
public override IEnumerable <string> Process(string fileName) { var result = new List <string>(); var peakNames = GetPeakInfos(fileName); var peaks = from p in peakNames select p.Substring(1); string[] positiveSampleFiles = GetFiles(dir1); string[] positiveReferencesFiles = GetFiles(dir2); List <FileData2> sampleDatas = FileData2.ReadFiles(positiveSampleFiles, peaks); List <FileData2> referencesDatas = FileData2.ReadFiles(positiveReferencesFiles, peaks); foreach (var peakName in peakNames) { var file = targetDir + "\\" + peakName + ".png"; if (File.Exists(file)) { continue; } Console.WriteLine(file); var peak = peakName.Substring(1); var maxIntensity = (from m in sampleDatas from p in m[peak] select p.Intensity).Union(from m in referencesDatas from p in m[peak] select p.Intensity).Max(); SmallMoleculeSignificantPeakImageBuilder2 builder2 = new SmallMoleculeSignificantPeakImageBuilder2(peak, sampleDatas, referencesDatas, Color.Red, Color.Blue); result.AddRange(builder2.Process(file)); } sampleDatas.Clear(); referencesDatas.Clear(); GC.Collect(); GC.WaitForFullGCComplete(); return(result); }
public override IEnumerable <string> Process(string rootDirectory) { string[] files = Directory.GetFiles(rootDirectory, "*.d.100.400.txt"); List <Item> items = new List <Item>(); Progress.SetRange(1, files.Length); int count = 0; double totalIntensity = 0.0; foreach (var file in files) { Progress.SetPosition(count++); var pureName = new FileInfo(file).Name; Match m = nameReg.Match(pureName); if (!m.Success || m.Groups.Count < 2) { throw new ArgumentException("Regex pattern doesn't match to file : " + file); } string name = ""; for (int i = 1; i < m.Groups.Count; i++) { name = name + m.Groups[i].Value; } if (name.StartsWith("_")) { name = name.Substring(1); } Progress.SetMessage("Parsing " + file + " for " + name + "..."); string mode = pureName.Contains("neg") ? "N" : "P"; FileData2 data = new FileData2(); data.Read(file); if (totalIntensity == 0.0) { totalIntensity = data.TotalIntensity; } double ratio = 1; if (normalizeByTotalIntensity) { ratio = totalIntensity / data.TotalIntensity; } var map = data.MaxIntensityMap; foreach (var entry in map) { items.Add(new Item() { FileName = name, MZ = mode + entry.Key, Intensity = entry.Value * ratio }); } } var dic = items.ToDoubleDictionary(m => m.MZ, m => m.FileName); dic.Remove("P400"); dic.Remove("N400"); var peaks = dic.Keys.ToList(); peaks.Sort(); var fileNames = dic.Values.FirstOrDefault().Keys.ToList(); fileNames.Sort(); var resultFile = new DirectoryInfo(rootDirectory).FullName; if (resultFile.EndsWith(@"\")) { resultFile = resultFile.Substring(0, resultFile.Length - 1); } resultFile = resultFile + ".data"; using (StreamWriter sw = new StreamWriter(resultFile)) { sw.Write("Peak/File"); foreach (var file in fileNames) { sw.Write("\t" + file); } sw.WriteLine(); foreach (var peak in peaks) { sw.Write(peak); var dic2 = dic[peak]; foreach (var file in fileNames) { if (!dic2.ContainsKey(file)) { throw new Exception(MyConvert.Format("Cannot find peak {0} of file {1}", peak, file)); } sw.Write("\t{0:0.0}", dic2[file].Intensity); } sw.WriteLine(); } } return(new string[] { resultFile }); }