Skip to content

Commit 7a2d9aa

Browse files
committed
fix json parse
1 parent fa3e1cb commit 7a2d9aa

File tree

1 file changed

+37
-24
lines changed

1 file changed

+37
-24
lines changed

src/exfor_tools/distribution.py

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -553,35 +553,48 @@ def to_json(self, citation: str = "") -> str:
553553
return json.dumps(data, indent=4)
554554

555555
@classmethod
556-
def from_json(cls, json_str: str):
557-
data = json.loads(json_str)
556+
def from_json(cls, json_file):
557+
data = json.load(json_file)
558558
measurements = []
559-
for measurement_json in data:
559+
for measurement in data:
560+
subentry = measurement["EXFORAccessionNumber"]
561+
quantity = data_types_json.get(measurement["type"], "unknown")
562+
x_units = measurement["data"]["angle-units"]
563+
y_units = measurement["data"]["cs-units"]
564+
x = np.array(measurement["data"]["angle"])
565+
x_err = np.array(measurement["data"].get("angle-err", np.zeros_like(x)))
566+
y = np.array(measurement["data"]["cs"])
567+
statistical_err = np.array(measurement["data"]["cs-err"])
568+
systematic_norm_err = np.array(
569+
measurement["data"].get(
570+
"systematic_normalization_error", np.zeros_like(y)
571+
)
572+
)
573+
systematic_offset_err = np.array(
574+
measurement["data"].get("systematic_offset_error", np.zeros_like(y))
575+
)
576+
560577
measurements.append(
561578
AngularDistribution(
562-
Einc=data["energy"],
563-
Einc_err=data.get("energy-err", 0.0),
564-
Einc_units=data["energy-units"],
565-
Ex=data.get("ex-energy", 0.0),
566-
Ex_err=data.get("ex-energy-err", 0.0),
567-
Ex_units=data.get("ex-energy-units", "MeV"),
568-
subentry=data["EXFORAccessionNumber"],
569-
quantity=data_types_json.get(data["type"], "unknown"),
570-
x_units=data["data"]["angle-units"],
571-
y_units=data["data"]["cs-units"],
572-
x=np.array(data["data"]["angle"]),
573-
x_err=np.array(data["data"].get("angle-err", [])),
574-
y=np.array(data["data"]["cs"]),
575-
y_errs=[np.array(data["data"]["cs-err"])],
576-
y_err_labels=["cs-err"],
577-
systematic_norm_err=np.array(
578-
data["data"].get("systematic_normalization_error", [])
579-
),
580-
systematic_offset_err=np.array(
581-
data["data"].get("systematic_offset_error", [])
582-
),
579+
measurement["energy"],
580+
measurement.get("energy-err", 0.0),
581+
measurement["energy-units"],
582+
measurement.get("ex-energy", 0.0),
583+
measurement.get("ex-energy-err", 0.0),
584+
measurement.get("ex-energy-units", "MeV"),
585+
subentry,
586+
quantity,
587+
x_units,
588+
y_units,
589+
x,
590+
x_err,
591+
y,
592+
statistical_err,
593+
systematic_norm_err,
594+
systematic_offset_err,
583595
)
584596
)
597+
return measurements
585598

586599

587600
def extract_syserr_labels(

0 commit comments

Comments
 (0)