| 166 | |
| 167 | def save_results_json(path: str, results: Dict[str, Any]): |
| 168 | def _convert(obj): |
| 169 | if isinstance(obj, np.ndarray): |
| 170 | return obj.tolist() |
| 171 | if isinstance(obj, (np.float16, np.float32, np.float64)): |
| 172 | return float(obj) |
| 173 | if isinstance(obj, (np.int16, np.int32, np.int64)): |
| 174 | return int(obj) |
| 175 | if isinstance(obj, dict): |
| 176 | return {k: _convert(v) for k, v in obj.items()} |
| 177 | if isinstance(obj, list): |
| 178 | return [_convert(v) for v in obj] |
| 179 | return obj |
| 180 | |
| 181 | with open(path, "w") as f: |
| 182 | json.dump(_convert(results), f, indent=2) |