private bool Check(AnalyzeOption o, RealizationResult rn, ResearchResult rr)
        {
            Debug.Assert(rn.Result.ContainsKey(o));
            Debug.Assert(rn.Result[o] != null);
            Debug.Assert(rr.EnsembleResults.Count() > 0);
            if (!rr.EnsembleResults[0].Result.ContainsKey(o))
                return true;
            Debug.Assert(rr.EnsembleResults[0].Result[o] != null);

            AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])o.GetType().GetField(o.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
            OptionType ot = info[0].OptionType;
            switch (ot)
            {
                case OptionType.Global:
                    Double v1 = Convert.ToDouble(rn.Result[o]);
                    Double v2 = Convert.ToDouble(rr.EnsembleResults[0].Result[o]);
                    return Math.Round(v1, 4) == v2;
                case OptionType.Distribution:
                case OptionType.Trajectory:
                    Debug.Assert(rn.Result[o] is SortedDictionary<Double, Double>);
                    Debug.Assert(rr.EnsembleResults[0].Result[o] is SortedDictionary<Double, Double>);
                    SortedDictionary<Double, Double> d1 = rn.Result[o] as SortedDictionary<Double, Double>;
                    SortedDictionary<Double, Double> d2 = rr.EnsembleResults[0].Result[o] as SortedDictionary<Double, Double>;
                    return CheckDictionary(d1, d2);
                default:
                    Debug.Assert(false);
                    break;
            }

            return true;
        }
Exemplo n.º 2
0
        private void GraphicsTab_Load(object sender, EventArgs e)
        {
            /*ChartArea chArea = new ChartArea("my chart area");
             * chArea.AxisX.Title = "X axis";
             * chArea.AxisY.Title = "Y axis";
             * graphic.ChartAreas.Add(chArea);*/

            Series s = new Series(option.ToString());

            InitializeDrawingOptions(s);
            InitializeValues(s);
            graphic.Series.Add(s);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Calculates the average value of specified global analyze option.
        /// </summary>
        /// <param name="opt">Analyze option.</param>
        public void CalculateGlobalOption(AnalyzeOption opt)
        {
            if (EnsembleResultsAvg.Count != 0 && EnsembleResultsAvg[0].Result.ContainsKey(opt))
            {
                return;
            }

            ResearchResult tr = null;

            AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
            Debug.Assert(info[0].OptionType == OptionType.Global);

            double avg = 0;

            foreach (Guid id in researches)
            {
                tr = StatSessionManager.GetResearchResult(id);
                Debug.Assert(tr.EnsembleResults.Count == 1);
                // TODO fix it
                if (!tr.EnsembleResults[0].Result.ContainsKey(opt))
                {
                    continue;
                }
                Debug.Assert(tr.EnsembleResults[0].Result[opt] != null);
                avg += Convert.ToDouble(tr.EnsembleResults[0].Result[opt]) * tr.RealizationCount;
            }
            avg /= RealizationCountSum;
            EnsembleResult er = null;

            if (EnsembleResultsAvg.Count == 0)
            {
                er = new EnsembleResult(0);
                EnsembleResultsAvg.Add(er);
            }
            else
            {
                er = EnsembleResultsAvg[0];
            }
            er.Result.Add(opt, Math.Round(avg, 4));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Calculates the average distribution of specified distributed analyze option.
        /// </summary>
        /// <param name="opt">Analyze option.</param>
        public void CalculateDistributedOption(AnalyzeOption opt)
        {
            if (EnsembleResultsAvg.Count != 0 && EnsembleResultsAvg[0].Result.ContainsKey(opt))
            {
                return;
            }

            AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
            Debug.Assert(info[0].OptionType == OptionType.Distribution);
            EnsembleResult er = null;

            if (EnsembleResultsAvg.Count == 0)
            {
                er = new EnsembleResult(0);
                EnsembleResultsAvg.Add(er);
            }
            else
            {
                er = EnsembleResultsAvg[0];
            }
            er.Result.Add(opt, CalculateDoubleAverage(opt));
        }
Exemplo n.º 5
0
        private bool Check(AnalyzeOption o, RealizationResult rn, ResearchResult rr)
        {
            Debug.Assert(rn.Result.ContainsKey(o));
            Debug.Assert(rn.Result[o] != null);
            Debug.Assert(rr.EnsembleResults.Count() > 0);
            if (!rr.EnsembleResults[0].Result.ContainsKey(o))
            {
                return(true);
            }
            Debug.Assert(rr.EnsembleResults[0].Result[o] != null);

            AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])o.GetType().GetField(o.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
            OptionType          ot   = info[0].OptionType;

            switch (ot)
            {
            case OptionType.Global:
                Double v1 = Convert.ToDouble(rn.Result[o]);
                Double v2 = Convert.ToDouble(rr.EnsembleResults[0].Result[o]);
                return(Math.Round(v1, 4) == v2);

            case OptionType.Distribution:
            case OptionType.Trajectory:
                Debug.Assert(rn.Result[o] is SortedDictionary <Double, Double>);
                Debug.Assert(rr.EnsembleResults[0].Result[o] is SortedDictionary <Double, Double>);
                SortedDictionary <Double, Double> d1 = rn.Result[o] as SortedDictionary <Double, Double>;
                SortedDictionary <Double, Double> d2 = rr.EnsembleResults[0].Result[o] as SortedDictionary <Double, Double>;
                return(CheckDictionary(d1, d2));

            default:
                Debug.Assert(false);
                break;
            }

            return(true);
        }
 /// <summary>
 /// Checks if specified option has specified option type/
 /// </summary>
 /// <param name="opt">Analyze option.</param>
 /// <param name="ot">Analyze option type.</param>
 /// <returns></returns>
 public static bool HasOptionType(AnalyzeOption opt, OptionType ot)
 {
     AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
     return(info[0].OptionType == ot);
 }
 /// <summary>
 /// Checks if specified option has specified option type/
 /// </summary>
 /// <param name="opt">Analyze option.</param>
 /// <param name="ot">Analyze option type.</param>
 /// <returns></returns>
 public static bool HasOptionType(AnalyzeOption opt, OptionType ot)
 {
     AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
     return (info[0].OptionType == ot);
 }
        private void LoadEnsembleResults(ResearchResult r)
        {
            while (reader.Read())
            {
                if (reader.Name == "Ensemble" && !reader.IsEmptyElement)
                {
                    EnsembleResult e = new EnsembleResult(r.Size);
                    //e.NetworkSize = r.Size;
                    e.EdgesCount = r.Edges;
                    e.Result     = new Dictionary <AnalyzeOption, Object>();

                    reader.Read();
                    while (reader.NodeType != XmlNodeType.EndElement)
                    {
                        AnalyzeOption     opt     = (AnalyzeOption)Enum.Parse(typeof(AnalyzeOption), reader.Name);
                        AnalyzeOptionInfo optInfo = (AnalyzeOptionInfo)(opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false)[0]);
                        switch (optInfo.OptionType)
                        {
                        case OptionType.Global:
                            e.Result.Add(opt, reader.ReadElementContentAsDouble());
                            break;

                        case OptionType.ValueList:
                        case OptionType.Centrality:
                            e.Result.Add(opt, LoadValueList());
                            reader.Read();
                            break;

                        case OptionType.Distribution:
                        case OptionType.Trajectory:
                            e.Result.Add(opt, LoadDistribution());
                            reader.Read();
                            break;

                        default:
                            break;
                        }
                    }

                    r.EnsembleResults.Add(e);
                }
            }
        }
Exemplo n.º 9
0
        public void SaveChartToPng(string location)
        {
            string fileName = location + "\\" + researchName + "_" + option.ToString() + ".png";

            graphic.SaveImage(fileName, ChartImageFormat.Png);
        }
        /// <summary>
        /// Calculates the average value of specified global analyze option.
        /// </summary>
        /// <param name="opt">Analyze option.</param>
        public void CalculateGlobalOption(AnalyzeOption opt)
        {
            if (EnsembleResultsAvg.Count != 0 && EnsembleResultsAvg[0].Result.ContainsKey(opt))
                return;

            ResearchResult tr = null;
            AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
            Debug.Assert(info[0].OptionType == OptionType.Global);

            double avg = 0;
            foreach (Guid id in researches)
            {
                tr = StatSessionManager.GetResearchResult(id);
                Debug.Assert(tr.EnsembleResults.Count == 1);
                Debug.Assert(tr.EnsembleResults[0].Result[opt] != null);
                avg += Convert.ToDouble(tr.EnsembleResults[0].Result[opt]) * tr.RealizationCount;
            }
            avg /= RealizationCountSum;
            EnsembleResult er = null;
            if (EnsembleResultsAvg.Count == 0)
            {
                er = new EnsembleResult();
                EnsembleResultsAvg.Add(er);
            }
            else
                er = EnsembleResultsAvg[0];
            er.Result.Add(opt, Math.Round(avg, 4));
        }
        /// <summary>
        /// Calculates the average distribution of specified distributed analyze option.
        /// </summary>
        /// <param name="opt">Analyze option.</param>
        public void CalculateDistributedOption(AnalyzeOption opt)
        {
            if (EnsembleResultsAvg.Count != 0 && EnsembleResultsAvg[0].Result.ContainsKey(opt))
                return;

            AnalyzeOptionInfo[] info = (AnalyzeOptionInfo[])opt.GetType().GetField(opt.ToString()).GetCustomAttributes(typeof(AnalyzeOptionInfo), false);
            Debug.Assert(info[0].OptionType == OptionType.Distribution);
            EnsembleResult er = null;
            if (EnsembleResultsAvg.Count == 0)
            {
                er = new EnsembleResult();
                EnsembleResultsAvg.Add(er);
            }
            else
                er = EnsembleResultsAvg[0];
            er.Result.Add(opt, CalculateDoubleAverage(opt));
        }