convertDistributionArrayToMap() public static method

We switch the Array to a Map structure in order to be more easily manipulated
public static convertDistributionArrayToMap ( JsonArray distribution ) : double>.Dictionary
distribution JsonArray current distribution as an JsonArray instance
return double>.Dictionary
Example #1
0
        /// <summary>
        /// Returns a distribution formed by grouping the distributions of each predicted node.
        /// </summary>
        protected internal Dictionary <string, object> getGroupedDistribution(MultiVote multiVoteInstance)
        {
            Dictionary <object, double> joinedDist = new Dictionary <object, double>();
            string distributionUnit = "counts";
            Dictionary <object, double> predictionDist;
            object distribution;

            foreach (Dictionary <object, object> prediction in multiVoteInstance.Predictions)
            {
                // Equivalent to:
                //  JSONArray predictionDist = (JSONArray) prediction.get("distribution");
                predictionDist = null;
                distribution   = prediction["distribution"];

                if (distribution is IDictionary)
                {
                    predictionDist = (Dictionary <object, double>)distribution;
                }
                else if ((distribution == null) || (!(distribution is JsonArray)))
                {
                    predictionDist = new Dictionary <object, double>();
                }
                else
                {
                    predictionDist = Utils.convertDistributionArrayToMap((JsonArray)distribution);
                }

                // Equivalent to:
                //  joinedDist = Utils.mergeDistributions(joinedDist, Utils.convertDistributionArrayToMap(predictionDist));
                joinedDist = Utils.mergeDistributions(joinedDist, predictionDist);

                if ("counts".Equals(distributionUnit) && joinedDist.Count > BINS_LIMIT)
                {
                    distributionUnit = "bins";
                }

                joinedDist = Utils.mergeBins(joinedDist, BINS_LIMIT);
            }

            Dictionary <string, object> distributionInfo = new Dictionary <string, object>();

            distributionInfo["distribution"]     = Utils.convertDistributionMapToSortedArray(joinedDist);
            distributionInfo["distributionUnit"] = distributionUnit;

            return(distributionInfo);
        }