Skip to content

Commit

Permalink
Merge branch '249-fix-resource-tests' into 'release'
Browse files Browse the repository at this point in the history
fix: update json encoder

Closes #249

See merge request 3d/PandoraBox/pandora2d!211
  • Loading branch information
PhML committed Mar 4, 2025
2 parents 2bf632f + 715ddae commit d891b13
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 16 deletions.
9 changes: 6 additions & 3 deletions pandora2d/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
from pandora2d import reporting
from pandora2d.constants import Criteria
from pandora2d.img_tools import remove_roi_margins
from pandora2d.reporting import NumpyPrimitiveEncoder

# mypy: disable-error-code="attr-defined, no-redef"
# pylint: disable=useless-import-alias
Expand Down Expand Up @@ -110,6 +109,10 @@ class AllPrimitiveEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, CRS):
return o.to_wkt()
if isinstance(o, np.floating):
return float(o)
if isinstance(o, np.integer):
return int(o)
return super().default(o)


Expand Down Expand Up @@ -149,7 +152,7 @@ def _save_disparity_maps_report(dataset: xr.Dataset, output: Path) -> None:
"""
report = {"statistics": {"disparity": reporting.report_disparities(dataset)}}
with open(output / "report.json", "w", encoding="utf8") as fd:
json.dump(report, fd, indent=2, cls=NumpyPrimitiveEncoder)
json.dump(report, fd, indent=2, cls=AllPrimitiveEncoder)


def _save_dataset(dataset: xr.Dataset, output: Path) -> None:
Expand Down Expand Up @@ -401,7 +404,7 @@ def save_config(config: Dict) -> None:
path_output = Path(config["output"]["path"])
path_output.mkdir(parents=True, exist_ok=True)
with open(path_output / "config.json", "w", encoding="utf8") as fd:
json.dump(config, fd, indent=2)
json.dump(config, fd, indent=2, cls=AllPrimitiveEncoder)


def string_to_path(path: str, relative_to: Union[Path, str]) -> Path:
Expand Down
13 changes: 0 additions & 13 deletions pandora2d/reporting.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,13 @@

"""Functions to report information."""

import json
from typing import Dict

import numpy as np
import xarray as xr

from .statistics import compute_statistics


class NumpyPrimitiveEncoder(json.JSONEncoder):
"""JSON Encoder to serialize numpy floats and integers."""

def default(self, o):
if isinstance(o, np.floating):
return float(o)
if isinstance(o, np.integer):
return int(o)
return super().default(o)


def report_disparities(data: xr.Dataset) -> Dict:
"""
Report statistics on disparities.
Expand Down

0 comments on commit d891b13

Please sign in to comment.