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

WriteProteinsPerMinute() private method

private WriteProteinsPerMinute ( List allPeptides, List proteins, string outputDirectory ) : void
allPeptides List
proteins List
outputDirectory string
return void
        private void WriteProteinsPerMinute(List<Peptide> allPeptides, List<Protein> proteins, string outputDirectory)
        {
            string fileName = Path.Combine(outputDirectory, "proteins_per_minute.csv");
            Log("Writing file " + fileName);
            double maxPeptides = allPeptides.Count;
            List<ProteinGroup> groups = null;

            using (StreamWriter writer = new StreamWriter(fileName))
            {
                writer.WriteLine("Time (min),Unique Peptides,Protein Groups");

                double i = 0;
                while(i < 1000)
                {
                    HashSet<Peptide> currentPeptides = new HashSet<Peptide>(allPeptides.Where(pep => pep.PSMs.Any(psm => psm.RetentionTime <= i)));
                    List<Protein> currentProteins = new List<Protein>();

                    foreach (Peptide peptide in allPeptides)
                    {
                        peptide.ProteinGroups.Clear();
                    }

                    if (currentPeptides.Count > 0)
                    {
                        foreach (Protein protein in proteins)
                        {
                            Protein protein2 = null;
                            bool first = true;
                            foreach (Peptide peptide in protein.Peptides)
                            {
                                if (currentPeptides.Contains(peptide))
                                {
                                    if (first)
                                    {
                                        protein2 = new Protein(protein.Description, protein.Sequence);
                                        currentProteins.Add(protein2);
                                        first = false;
                                    }
                                    protein2.AddPeptide(peptide);
                                }
                            }
                        }
                    }

                    groups = GroupProteins(currentProteins, false);

                    int fdrGroups = groups.Count(g => g.PassesFDR);

                    writer.WriteLine(i + "," + currentPeptides.Count + "," + fdrGroups);
                    ProgressUpdate(currentPeptides.Count / maxPeptides);
                    if (currentPeptides.Count >= maxPeptides)
                        break;
                    i++;
                }
            }
            return;
        }