Coon.Compass.ProteinHoarder.ProteinHoarder.GroupExperiments C# (CSharp) Method

GroupExperiments() private method

Maps the peptide to all the protein groups that it is apart of
private GroupExperiments ( IEnumerable csvFiles, bool useQuant ) : ExperimentGroup>.Dictionary
csvFiles IEnumerable
useQuant bool
return ExperimentGroup>.Dictionary
        private Dictionary<string, ExperimentGroup> GroupExperiments(IEnumerable<CsvFile> csvFiles, bool useQuant)
        {
            Dictionary<string, ExperimentGroup> uniqueNames = new Dictionary<string, ExperimentGroup>();
            foreach (CsvFile file in csvFiles)
            {
                ExperimentGroup experiment;
                if (string.IsNullOrEmpty(file.ExperimentName))
                {
                    file.ExperimentName = "";
                }
                if(uniqueNames.TryGetValue(file.ExperimentName, out experiment))
                {
                    experiment.CsvFiles.Add(file);
                }
                else
                {
                    experiment = new ExperimentGroup(file.ExperimentName);
                    experiment.CsvFiles.Add(file);
                    uniqueNames.Add(file.ExperimentName, experiment);
                    using (CsvReader reader = new CsvReader(new StreamReader(file.FilePath), true))
                    {
                        // write the header only once to the two outputs
                        string[] headers = reader.GetFieldHeaders();
                        experiment.Header = string.Join(",", headers);

                        if (!useQuant) continue;

                        int headerCount = headers.Length;

                        experiment.TQStart = -1;
                        experiment.TQStop = headerCount - 2;
                        for (int i = 0; i < headerCount; i++)
                        {
                            string header = headers[i];
                            if (!header.Contains("NL)"))
                                continue;
                            experiment.TQStart = i;
                            break;
                        }

                        if (experiment.TQStart < 0)
                        {
                            Log("[WARNING] No quantification data found in {0} for experiment {1}", file, experiment.Name);
                            experiment.UseQuant = false;
                            break;
                        }
                        experiment.UseQuant = true;

                        // Get the experimental Quant headers
                        StringBuilder sb = new StringBuilder();
                        for (int i = experiment.TQStart; i <= experiment.TQStop; i++)
                        {
                            sb.Append(headers[i]);
                            sb.Append(',');
                        }
                        sb.Remove(sb.Length - 1, 1);
                        experiment.QuantHeader = sb.ToString();
                    }
                }

            }

            return uniqueNames;

            //Dictionary<char, ExperimentGroup> expgroups = new Dictionary<char, ExperimentGroup>();
            //foreach (CsvFile csvfile in csvFiles)
            //{
            //    ExperimentGroup exp;
            //    if (expgroups.TryGetValue(csvfile.ExperimentGroup, out exp))
            //    {
            //        exp.CsvFiles.Add(csvfile);
            //    }
            //    else
            //    {
            //        exp = new ExperimentGroup(csvfile.ExperimentGroup, csvfile.ExperimentName);
            //        exp.CsvFiles.Add(csvfile);
            //        expgroups.Add(csvfile.ExperimentGroup, exp);
            //        using (CsvReader reader = new CsvReader(new StreamReader(csvfile.FilePath), true))
            //        {
            //            // write the header only once to the two outputs
            //            string[] headers = reader.GetFieldHeaders();
            //            exp.Header = string.Join(",", headers);

            //            if (!useQuant) continue;

            //            int headerCount = headers.Length;

            //            exp.TQStart = -1;
            //            exp.TQStop = headerCount - 2;
            //            for (int i = 0; i < headerCount; i++)
            //            {
            //                string header = headers[i];
            //                if (!header.Contains("NL)"))
            //                    continue;
            //                exp.TQStart = i;
            //                break;
            //            }

            //            if (exp.TQStart < 0)
            //            {
            //                Log("[WARNING] No quantification data found in {0} for experiment {1}", csvfile, exp.Name);
            //                exp.UseQuant = false;
            //                break;
            //            }
            //            exp.UseQuant = true;

            //            // Get the experimental Quant headers
            //            StringBuilder sb = new StringBuilder();
            //            for (int i = exp.TQStart; i <= exp.TQStop; i++)
            //            {
            //                sb.Append(headers[i]);
            //                sb.Append(',');
            //            }
            //            sb.Remove(sb.Length - 1, 1);
            //            exp.QuantHeader = sb.ToString();
            //        }
            //    }
            //}
            //return expgroups;
        }