MCPcopy Create free account
hub / github.com/InternScience/InternAgent / aggregate_metrics

Function aggregate_metrics

tasks/AutoMem/code/utils.py:167–211  ·  view source on GitHub ↗

Calculate aggregate statistics for all metrics, split by category.

(all_metrics: List[Dict[str, float]], all_categories: List[int])

Source from the content-addressed store, hash-verified

165 return metrics
166
167def aggregate_metrics(all_metrics: List[Dict[str, float]], all_categories: List[int]) -> Dict[str, Dict[str, Union[float, Dict[str, float]]]]:
168 """Calculate aggregate statistics for all metrics, split by category."""
169 if not all_metrics:
170 return {}
171
172 # Initialize aggregates for overall and per-category metrics
173 aggregates = defaultdict(list)
174 category_aggregates = defaultdict(lambda: defaultdict(list))
175
176 # Collect all values for each metric, both overall and per category
177 for metrics, category in zip(all_metrics, all_categories):
178 for metric_name, value in metrics.items():
179 aggregates[metric_name].append(value)
180 category_aggregates[category][metric_name].append(value)
181
182 # Calculate statistics for overall metrics
183 results = {
184 "overall": {}
185 }
186
187 for metric_name, values in aggregates.items():
188 results["overall"][metric_name] = {
189 'mean': statistics.mean(values),
190 'std': statistics.stdev(values) if len(values) > 1 else 0.0,
191 'median': statistics.median(values),
192 'min': min(values),
193 'max': max(values),
194 'count': len(values)
195 }
196
197 # Calculate statistics for each category
198 for category in sorted(category_aggregates.keys()):
199 results[f"category_{category}"] = {}
200 for metric_name, values in category_aggregates[category].items():
201 if values: # Only calculate if we have values for this category
202 results[f"category_{category}"][metric_name] = {
203 'mean': statistics.mean(values),
204 'std': statistics.stdev(values) if len(values) > 1 else 0.0,
205 'median': statistics.median(values),
206 'min': min(values),
207 'max': max(values),
208 'count': len(values)
209 }
210
211 return results

Callers 1

evaluate_datasetFunction · 0.90

Calls 2

meanMethod · 0.80
itemsMethod · 0.45

Tested by

no test coverage detected