@@ -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
587600def extract_syserr_labels (
0 commit comments