private void WriteSummary(Dictionary<string, ExperimentGroup> expgroups, string outputDirectory)
{
string filePath = Path.Combine(outputDirectory, "Protein_summary.csv");
Log("Writing file " + filePath);
List<ExperimentGroup> experiments = expgroups.Values.ToList();
using (StreamWriter writer = new StreamWriter(filePath))
{
// Header info
writer.Write("Protein Group,Representative Protein Description");
if (AnnotationType == AnnotationType.SGD)
{
writer.Write(",SGD Ids,Gene Names");
} else if (AnnotationType == AnnotationType.UniProt)
{
writer.Write(",UniProt Ids,Gene Names");
}
foreach (ExperimentGroup exp in experiments)
{
writer.Write("," + exp.Name + " (log2)");
}
writer.WriteLine();
// Iterate over all protein groups
foreach(ProteinGroup pg in _proteinGroups.Where(pg => pg.PassesFDR))
{
writer.Write(pg.Name);
writer.Write(',');
writer.Write(pg.RepresentativeProtein.Description);
if (AnnotationType != AnnotationType.None)
{
writer.Write(',');
writer.Write(pg.ProteinIdsString());
writer.Write(',');
writer.Write(pg.GeneNamesString());
}
foreach (ExperimentGroup exp in experiments)
{
writer.Write(',');
double log2Ratio = 0;
if (exp.ProteinGroups.Contains(pg) && pg.TryGetLog2Ratio(exp, out log2Ratio, UseOnlyCompleteSets))
{
log2Ratio -= exp.MeidanLog2Ratio;
writer.Write(log2Ratio.ToString("G4"));
}
else
{
writer.Write("n/a");
}
}
writer.WriteLine();
}
}
}