nvflare.app_common.statistics.hierarchical_numeric_stats module

accumulate_hierarchical_metrics(metric: str, client_name: str, metrics: dict, global_metrics: dict, hierarchy_config: dict) dict[source]

Accumulate metrics at each hierarchical level.

Parameters:
  • metric – Metric to accumulate.

  • client_name – Client name.

  • metrics – Client metrics.

  • global_metrics – The current global metrics.

  • hierarchy_config – Hierarchy configuration for the global stats.

Returns:

A dict containing accumulated hierarchical global statistics.

bins_to_dict(bins: List[Bin]) Dict[BinRange, float][source]

Convert histogram bins to a ‘dict’.

Parameters:

bins – Histogram bins.

Returns:

A dict containing histogram bins.

create_output_structure(client_metrics: dict, metric_task: str, ordered_metrics: dict, hierarchy_config: dict) dict[source]

Recursively calculate the hierarchical global stats structure from the given hierarchy config.

Parameters:
  • client_metrics – Local stats for each client.

  • metric_task – Statistics task.

  • ordered_metrics – Ordered target metrics.

  • hierarchy_config – Hierarchy configuration for the global stats.

Returns:

A dict containing hierarchical global stats structure.

filter_numeric_features(ds_features: Dict[str, List[Feature]]) Dict[str, List[Feature]][source]

Filter numeric features.

Parameters:

ds_features – A features dict.

Returns:

A dict containing numeric features.

get_client_hierarchy(hierarchy_config: dict, client_name: str, path=None) list[source]

Calculate hierarchy for the given client name.

Parameters:
  • hierarchy_config – Hierarchy configuration for the global stats.

  • client_name – Client name.

  • path – The accumulated hierarchy path (used for recursive calls).

Returns:

A list containing hierarchy levels for the client.

get_global_stats(global_metrics: dict, client_metrics: dict, metric_task: str, hierarchy_config: dict) dict[source]

Get global hierarchical statistics for the given hierarchy config.

Parameters:
  • global_metrics – The current global metrics.

  • client_metrics – Local stats for each client.

  • metric_task – Statistics task.

  • hierarchy_config – Hierarchy configuration for the global stats.

Returns:

A dict containing global hierarchical statistics.

get_hierarchical_histograms(metric: str, client_name: str, metrics: dict, global_metrics: dict, hierarchy_config: dict) dict[source]

Calculate histograms at each hierarchical level.

Parameters:
  • metric – Metric to accumulate.

  • client_name – Client name.

  • metrics – Client metrics.

  • global_metrics – The current global metrics.

  • hierarchy_config – Hierarchy configuration for the global stats.

Returns:

A dict containing updated hierarchical global statistics with accumulated histograms.

get_hierarchical_levels(data: dict, level: int = 0, levels_dict: dict | None = None) dict[source]

Calculate number of hierarchical levels from the given hierarchy config.

Parameters:
  • data – Hierarchy configuration for the global stats.

  • level – The current hierarchical level (used for recursive calls).

  • levels_dict – The accumulated levels dict (used for recursive calls).

Returns:

A dict containing containing hierarchical levels.

get_hierarchical_means(metric: str, global_metrics: dict) dict[source]

Calculate means at each hierarchical level.

Parameters:
  • metric – Metric to accumulate.

  • global_metrics – The current global metrics.

Returns:

A dict containing updated hierarchical global statistics with accumulated means.

get_hierarchical_mins_or_maxs(metric: str, client_name: str, metrics: dict, global_metrics: dict, hierarchy_config: dict) dict[source]

Calculate min or max at each hierarchical level.

Parameters:
  • metric – Metric to accumulate.

  • client_name – Client name.

  • metrics – Client metrics.

  • global_metrics – The current global metrics.

  • hierarchy_config – Hierarchy configuration for the global stats.

Returns:

A dict containing updated hierarchical global statistics with accumulated mins or maxs.

get_hierarchical_stddevs(global_metrics: dict) dict[source]

Calculate stddevs at each hierarchical level.

Parameters:

global_metrics – The current global metrics.

Returns:

A dict containing updated hierarchical global statistics with accumulated stddevs.

get_initial_structure(client_metrics: dict, ordered_metrics: dict) dict[source]

Calculate initial output structure that is common at all the hierarchical levels.

Parameters:
  • client_metrics – Local stats for each client.

  • ordered_metrics – Ordered target metrics.

Returns:

A dict containing initial output structure.

get_output_structure(client_metrics: dict, metric_task: str, ordered_metrics: dict, hierarchy_config: dict) dict[source]

Create required global statistics hierarchical output structure.

Parameters:
  • client_metrics – Local stats for each client.

  • metric_task – Statistics task.

  • ordered_metrics – Ordered target metrics.

  • hierarchy_config – Hierarchy configuration for the global stats.

Returns:

A dict containing hierarchical global stats structure that also includes top level global stats structure.

update_output_strcture(client_metrics: dict, metric_task: str, ordered_metrics: dict, global_metrics: dict) None[source]

Update global statistics hierarchical output structure with the new ordered metrics.

Parameters:
  • client_metrics – Local stats for each client.

  • metric_task – Statistics task.

  • ordered_metrics – Ordered target metrics.

  • global_metrics – The current global metrics.

Returns:

A dict containing updated hierarchical global stats.