Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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 });
        }