private void FillInformation(List<Guid> r)
        {
            Debug.Assert(r.Count() != 0);

            // TODO optimize
            StatisticResult st = new StatisticResult(r);
            researchInfoTable.Rows.Add("Research ID", r[0].ToString());
            researchInfoTable.Rows.Add("Research Name", StatSessionManager.GetResearchName(r[0]));
            researchInfoTable.Rows.Add("Research Type", StatSessionManager.GetResearchType(r[0]));
            researchInfoTable.Rows.Add("Model Type", StatSessionManager.GetResearchModelType(r[0]));
            researchInfoTable.Rows.Add("Realization Count", st.RealizationCountSum);
            researchInfoTable.Rows.Add("Date", StatSessionManager.GetResearchDate(r[0]));
            researchInfoTable.Rows.Add("Size", StatSessionManager.GetResearchNetworkSize(r[0]));
            researchInfoTable.Rows.Add("Edges", st.EdgesCountAvg);

            int i = researchInfoTable.Rows.Add("Parameters", "");
            researchInfoTable.Rows[i].DefaultCellStyle.BackColor = Color.LightGray;

            Dictionary<ResearchParameter, object> rValues = StatSessionManager.GetResearchParameterValues(r[0]);
            Dictionary<GenerationParameter, object> gValues = StatSessionManager.GetGenerationParameterValues(r[0]);
            foreach (ResearchParameter rr in rValues.Keys)
                researchInfoTable.Rows.Add(rr.ToString(), rValues[rr].ToString());
            foreach (GenerationParameter g in gValues.Keys)
                researchInfoTable.Rows.Add(g.ToString(), gValues[g].ToString());
        }
        private void GlobalOptionsWindow_Load(object sender, EventArgs e)
        {
            Debug.Assert(researches.Count() != 0);
            Debug.Assert(options.Count() != 0);

            if (researches.Count() == 1)
                Text = StatSessionManager.GetResearchName(researches[0]);
            else
                Text = "Group Values";

            researchInfo.Researches = researches;
            foreach (Guid id in researches)
                StatSessionManager.LoadResearchResult(id);

            // TODO optimize
            StatisticResult st = new StatisticResult(researches);
            foreach (AnalyzeOption o in options)
            {
                st.CalculateGlobalOption(o);
                valuesGrd.Rows.Add(o.ToString(), st.EnsembleResultsAvg[0].Result[o].ToString());
            }
        }
        private void DistributedOptionsWindow_Load(object sender, EventArgs e)
        {
            Debug.Assert(researches.Count() != 0);
            Debug.Assert(options.Count() != 0);

            if (researches.Count() == 1)
                Text = StatSessionManager.GetResearchName(researches[0]);
            else
                Text = "Group Graphics";

            researchInfo.Researches = researches;
            foreach (Guid id in researches)
                StatSessionManager.LoadResearchResult(id);

            // TODO optimize
            StatisticResult st = new StatisticResult(researches);
            foreach (AnalyzeOption o in options)
            {
                st.CalculateDistributedOption(o);

                TabPage optTab = new TabPage(o.ToString());
                GraphicsTab t = new GraphicsTab(o, (SortedDictionary<Double, Double>)st.EnsembleResultsAvg[0].Result[o]);
                t.Dock = DockStyle.Fill;
                optTab.Controls.Add(t);
                graphicsTab.TabPages.Add(optTab);
            }
        }