コード例 #1
0
 internal static descriptive_stats get_stat_values(
     double[] data,
     descriptive_stats_encoding_options dse_options,
     string group_id_name,
     string member_id_name,
     bool presorted
     )
 {
     return(new descriptive_stats(data, dse_options, group_id_name, member_id_name, presorted));
 }
        internal descriptive_stats_encoding_options(descriptive_stats_encoding_options dse_options, string name = null, bool?enable = null)
        {
            if (dse_options != null)
            {
                this.options_name = dse_options.options_name != null ? /*program.string_debug*/ (dse_options.options_name) : null;

                this.intervals     = dse_options.intervals != null ? new descriptive_stats_encoding_options(dse_options.intervals) : null;
                this.distances     = dse_options.distances != null ? new descriptive_stats_encoding_options(dse_options.distances) : null;
                this.interquartile = dse_options.interquartile != null ? new descriptive_stats_encoding_options(dse_options.interquartile) : null;
                this.abs           = dse_options.abs != null ? new descriptive_stats_encoding_options(dse_options.abs) : null;
                this.rescale       = dse_options.rescale != null ? new descriptive_stats_encoding_options(dse_options.rescale) : null;

                this.count                 = dse_options.count;
                this.count_zero_values     = dse_options.count_zero_values;
                this.count_non_zero_values = dse_options.count_non_zero_values;
                this.count_distinct_values = dse_options.count_distinct_values;
                this.sum                      = dse_options.sum;
                this.mean_arithmetic          = dse_options.mean_arithmetic;
                this.mean_geometric_corrected = dse_options.mean_geometric_corrected;
                //this.mean_geometric_nonzero = dse_options.mean_geometric_nonzero;
                this.mean_harmonic_corrected = dse_options.mean_harmonic_corrected;
                //this.mean_harmonic_nonzero = dse_options.mean_harmonic_nonzero;
                this.min                          = dse_options.min;
                this.max                          = dse_options.max;
                this.range                        = dse_options.range;
                this.mid_range                    = dse_options.mid_range;
                this.variance                     = dse_options.variance;
                this.dev_standard                 = dse_options.dev_standard;
                this.root_mean_square             = dse_options.root_mean_square;
                this.skewness                     = dse_options.skewness;
                this.kurtosis                     = dse_options.kurtosis;
                this.interquartile_range          = dse_options.interquartile_range;
                this.median_q1                    = dse_options.median_q1;
                this.median_q2                    = dse_options.median_q2;
                this.median_q3                    = dse_options.median_q3;
                this.mad_mean_arithmetic          = dse_options.mad_mean_arithmetic;
                this.mad_mean_harmonic_corrected  = dse_options.mad_mean_harmonic_corrected;
                this.mad_mean_geometric_corrected = dse_options.mad_mean_geometric_corrected;
                this.mad_median_q1                = dse_options.mad_median_q1;
                this.mad_median_q2                = dse_options.mad_median_q2;
                this.mad_median_q3                = dse_options.mad_median_q3;
                this.mad_mid_range                = dse_options.mad_mid_range;
            }

            if (name != null)
            {
                this.options_name = /*program.string_debug*/ (name);
            }

            if (enable != null)
            {
                set_enable(enable.Value);
            }
        }
コード例 #3
0
 internal List <(string group_id, string member_id, string perspective_id, double perspective_value)> encode
 (
     descriptive_stats_encoding_options dse_options,
     /*bool same_group = true,*/
     /*bool individual = true,*/
     int level = 0
 )
 {
     return(encode(
                this,
                dse_options,
                /*same_group,*/
                /*individual,*/
                level
                ));
 }
コード例 #4
0
        internal descriptive_stats(
            double[] data,
            descriptive_stats_encoding_options dse_options,
            string ds_group_name,
            string ds_member_name,
            bool presorted
            )
        {
            this.ds_group_name  = /*program.string_debug*/ (ds_group_name);
            this.ds_member_name = /*program.string_debug*/ (ds_member_name);


            if (data == null || data.Length == 0 || data.All(a => a == 0))
            {
                if (dse_options?.intervals != null)
                {
                    var interval_group_name  = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.intervals), this.ds_group_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    var interval_member_name = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.intervals), this.ds_member_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    intervals_descriptive_stats = new descriptive_stats(Array.Empty <double>(), dse_options?.intervals, interval_group_name, interval_member_name, presorted: true);
                }

                if (dse_options?.distances != null)
                {
                    var distance_group_name  = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.distances), this.ds_group_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    var distance_member_name = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.distances), this.ds_member_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    distances_descriptive_stats = new descriptive_stats(Array.Empty <double>(), dse_options?.distances, distance_group_name, distance_member_name, presorted: true);
                }

                if (dse_options?.interquartile != null)
                {
                    var interquartile_group_name  = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.interquartile), this.ds_group_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    var interquartile_member_name = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.interquartile), this.ds_member_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    interquartile_range_descriptive_stats = new descriptive_stats(Array.Empty <double>(), dse_options?.interquartile, interquartile_group_name, interquartile_member_name, presorted: true);
                }

                if (dse_options?.abs != null)
                {
                    var abs_group_name  = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.abs), this.ds_group_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    var abs_member_name = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.abs), this.ds_member_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    abs_descriptive_stats = new descriptive_stats(Array.Empty <double>(), dse_options?.abs, abs_group_name, abs_member_name, presorted: true);
                }

                if (dse_options?.rescale != null)
                {
                    var rescale_group_name  = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.rescale), this.ds_group_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    var rescale_member_name = /*program.string_debug*/ (string.Join(/*program.string_debug*/ ($@"_"), new string[] { nameof(dse_options.rescale), this.ds_member_name }.Where(a => !string.IsNullOrWhiteSpace(a)).ToArray()));
                    rescaled_descriptive_stats = new descriptive_stats(Array.Empty <double>(), dse_options?.rescale, rescale_group_name, rescale_member_name, presorted: true);
                }

                return;
            }

            if (data.Any(a => double.IsInfinity(a) || double.IsNaN(a)))
            {
                throw new ArgumentOutOfRangeException(nameof(data), /*program.string_debug*/ ($@""));
            }



            var sorted_data = presorted ? data : data.OrderBy(a => a).ToArray();

            if (dse_options.count || dse_options.sum || dse_options.mean_arithmetic || dse_options.dev_standard || dse_options.mad_mean_arithmetic)
            {
                count = (uint)sorted_data.Length;
            }

            if (dse_options.count_distinct_values)
            {
                count_distinct_values = (uint)sorted_data.Distinct().Count();
            }

            if (dse_options.count_non_zero_values || dse_options.count_zero_values)
            {
                count_non_zero_values = (uint)sorted_data.Count(a => a != 0);
            }

            if (dse_options.count_zero_values)
            {
                count_zero_values = (uint)sorted_data.Length - count_non_zero_values;
            }

            if (dse_options.sum || dse_options.mean_arithmetic || dse_options.dev_standard || dse_options.mad_mean_arithmetic)
            {
                sum = sorted_data.Sum();
            }

            if (dse_options.root_mean_square)
            {
                root_mean_square = rms(sorted_data);
            }

            if (dse_options.mean_arithmetic || dse_options.dev_standard || dse_options.mad_mean_arithmetic)
            {
                mean_arithmetic = count != 0 ? sum / count : 0d;
            }

            if (dse_options.mean_harmonic_corrected || /*dse_options.mean_harmonic_nonzero ||*/ dse_options.mad_mean_harmonic_corrected)
            {
                var hm = harmonic_mean(sorted_data);
                mean_harmonic_corrected = hm.corrected;
                //mean_harmonic_nonzeros = hm.nonzeros;
            }

            if (dse_options.mean_geometric_corrected || /*dse_options.mean_geometric_nonzero ||*/ dse_options.mad_mean_geometric_corrected)
            {
                var gm = geometric_mean(sorted_data);
                mean_geometric_corrected = gm.corrected;
                //mean_geometric_nonzeros = gm.nonzeros;
            }


            if (dse_options.variance || dse_options.dev_standard || dse_options.kurtosis || dse_options.skewness)
            {
                var stat = shape(sorted_data);
                variance     = stat.variance;
                dev_standard = stat.stdev;
                kurtosis     = stat.kurtosis;
                skewness     = stat.skewness;
            }

            if (dse_options.min || dse_options.range || dse_options.mid_range || dse_options.mad_mid_range)
            {
                min = sorted_data[0];
            }

            if (dse_options.max || dse_options.range || dse_options.mid_range || dse_options.mad_mid_range)
            {
                max = sorted_data[^ 1];
コード例 #5
0
        private static List <(string group_id, string member_id, string perspective_id, double perspective_value)> encode(
            descriptive_stats stats,
            descriptive_stats_encoding_options dse_options,
            /*bool same_group = true,*/
            /*bool individual = true,*/
            int level = 0)
        {
            const string module_name = nameof(descriptive_stats);
            const string method_name = nameof(encode);

            var result = new List <(string group_id, string member_id, string perspective_id, double perspective_value)>();

            if (stats == null)
            {
                stats = new descriptive_stats(null, dse_options, ds_group_name: /*program.string_debug*/ ($@""), ds_member_name: /*program.string_debug*/ ($@""), presorted: true);
            }

            /*if (!same_group && !individual)
             * {
             *  throw new Exception(/*program.string_debug* /($@"{module_name}.{method_name}: {nameof(same_group)} and {nameof(individual)} both false."));
             * }*/

            if (dse_options == null)
            {
                //descriptive_stats_encoding_options = descriptive_stats_encoding_options.options_mean_arithmetic;
                throw new ArgumentOutOfRangeException(nameof(dse_options), /*program.string_debug*/ ($@""));
            }

            if (dse_options?.intervals != null && stats.intervals_descriptive_stats != null && dse_options.intervals.key_value_list().Any(a => a.value))
            {
                var encoded_intervals_descriptive_stats = stats.intervals_descriptive_stats.encode(dse_options.intervals, /*same_group, individual,*/ level + 1);

                result.AddRange(encoded_intervals_descriptive_stats);
            }

            if (dse_options?.distances != null && stats.distances_descriptive_stats != null && dse_options.distances.key_value_list().Any(a => a.value))
            {
                var encoded_distances_descriptive_stats = stats.distances_descriptive_stats.encode(dse_options.distances, /*same_group, individual,*/ level + 1);

                result.AddRange(encoded_distances_descriptive_stats);
            }

            if (dse_options?.interquartile != null && stats.interquartile_range_descriptive_stats != null && dse_options.interquartile.key_value_list().Any(a => a.value))
            {
                var encoded_interquartile_range_descriptive_stats = stats.interquartile_range_descriptive_stats.encode(dse_options.interquartile, /*same_group, individual,*/ level + 1);

                result.AddRange(encoded_interquartile_range_descriptive_stats);
            }

            if (dse_options?.abs != null && stats.abs_descriptive_stats != null && dse_options.abs.key_value_list().Any(a => a.value))
            {
                var encoded_abs_descriptive_stats = stats.abs_descriptive_stats.encode(dse_options.abs, /*same_group, individual,*/ level + 1);

                result.AddRange(encoded_abs_descriptive_stats);
            }


            if (dse_options?.rescale != null && stats.rescaled_descriptive_stats != null && dse_options.rescale.key_value_list().Any(a => a.value))
            {
                var encoded_abs_descriptive_stats = stats.rescaled_descriptive_stats.encode(dse_options.rescale, /*same_group, individual,*/ level + 1);

                result.AddRange(encoded_abs_descriptive_stats);
            }


            /*if (same_group || individual)*/
            {
                var z = new List <(string group_id, string member_id, string perspective_id, double perspective_value)>();

                if (dse_options.count)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.count)}"), (double)stats.count));
                }
                if (dse_options.count_zero_values)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.count_zero_values)}"), (double)stats.count_zero_values));
                }
                if (dse_options.count_non_zero_values)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.count_non_zero_values)}"), (double)stats.count_non_zero_values));
                }
                if (dse_options.count_distinct_values)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.count_distinct_values)}"), (double)stats.count_distinct_values));
                }
                if (dse_options.min)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.min)}"), stats.min));
                }
                if (dse_options.max)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.max)}"), stats.max));
                }
                if (dse_options.range)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.range)}"), stats.range));
                }
                if (dse_options.sum)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.sum)}"), stats.sum));
                }
                if (dse_options.mid_range)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mid_range)}"), stats.mid_range));
                }
                if (dse_options.median_q1)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.median_q1)}"), stats.median_q1));
                }
                if (dse_options.median_q2)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.median_q2)}"), stats.median_q2));
                }
                if (dse_options.median_q3)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.median_q3)}"), stats.median_q3));
                }
                if (dse_options.root_mean_square)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.root_mean_square)}"), stats.root_mean_square));
                }
                if (dse_options.mean_arithmetic)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mean_arithmetic)}"), stats.mean_arithmetic));
                }

                if (dse_options.mean_geometric_corrected)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mean_geometric_corrected)}"), stats.mean_geometric_corrected));
                }
                //if (dse_options.mean_geometric_nonzero) { z.Add((group_id: /*program.string_debug*/($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/($@"{nameof(stats.mean_geometric_nonzeros)}"), stats.mean_geometric_nonzeros)); }

                if (dse_options.mean_harmonic_corrected)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mean_harmonic_corrected)}"), stats.mean_harmonic_corrected));
                }
                //if (dse_options.mean_harmonic_nonzero) { z.Add((group_id: /*program.string_debug*/($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/($@"{nameof(stats.mean_harmonic_nonzeros)}"), stats.mean_harmonic_nonzeros)); }

                if (dse_options.variance)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.variance)}"), stats.variance));
                }
                if (dse_options.dev_standard)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.dev_standard)}"), stats.dev_standard));
                }
                if (dse_options.mad_mean_arithmetic)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mad_mean_arithmetic)}"), stats.mad_mean_arithmetic));
                }
                if (dse_options.mad_mean_harmonic_corrected)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mad_mean_harmonic_corrected)}"), stats.mad_mean_harmonic_corrected));
                }
                if (dse_options.mad_mean_geometric_corrected)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mad_mean_geometric_corrected)}"), stats.mad_mean_geometric_corrected));
                }
                if (dse_options.mad_median_q1)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mad_median_q1)}"), stats.mad_median_q1));
                }
                if (dse_options.mad_median_q2)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mad_median_q2)}"), stats.mad_median_q2));
                }
                if (dse_options.mad_median_q3)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mad_median_q3)}"), stats.mad_median_q3));
                }
                if (dse_options.mad_mid_range)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.mad_mid_range)}"), stats.mad_mid_range));
                }
                if (dse_options.interquartile_range)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.interquartile_range)}"), stats.interquartile_range));
                }
                if (dse_options.skewness)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.skewness)}"), stats.skewness));
                }
                if (dse_options.kurtosis)
                {
                    z.Add((group_id: /*program.string_debug*/ ($@"{stats.ds_group_name}"), member_id: /*program.string_debug*/ ($@"{stats.ds_member_name}"), perspective_id: /*program.string_debug*/ ($@"{nameof(stats.kurtosis)}"), stats.kurtosis));
                }
                //if (descriptive_stats_encoding_options.mode) { z.Add((group_id: /*program.string_debug*/($@"{stats.group_id_name}", member_id: /*program.string_debug*/($@"{stats.member_id_name}", perspective_id: /*program.string_debug*/($@"{nameof(stats.mode)}", stats.mode)); }
                //if (descriptive_stats_encoding_options.mad_mode) { z.Add((group_id: /*program.string_debug*/($@"{stats.group_id_name}", member_id: /*program.string_debug*/($@"{stats.member_id_name}", perspective_id: /*program.string_debug*/($@"{nameof(stats.mad_mode)}", stats.mad_mode)); }

                if (z.Count > 0)
                {
                    /*if (same_group)*/
                    {
                        result.AddRange(z);
                    }

                    /*if (individual)
                     * {
                     *  var z2 = z.Select(a => (string.Join(/*program.string_debug* /($@"_"), new[] {a.group_id, a.member_id, a.perspective_id}.Where(c => !string.IsNullOrWhiteSpace(c)).Distinct().ToArray()), a.member_id, a.perspective_id, a.perspective_value)).ToList();
                     *
                     *  result.AddRange(z2);
                     * }*/
                }
            }


            if (level == 0 && result.Count == 0)
            {
                throw new ArgumentOutOfRangeException(nameof(dse_options), /*program.string_debug*/ ($@"{module_name}.{method_name}: no features are enabled in {nameof(dse_options)}."));
            }

            return(result);
        }