def from_dict(cls, obj): assert obj["__id__"] == "Integrater" return_obj = cls() for k, v in obj.iteritems(): if k in ("_intgr_indexer", "_intgr_refiner") and v is not None: from libtbx.utils import import_python_object cls = import_python_object( import_path=".".join((v["__module__"], v["__name__"])), error_prefix="", target_must_be="", where_str="", ).object v = cls.from_dict(v) if isinstance(v, dict): if v.get("__id__") == "ExperimentList": from dxtbx.model.experiment_list import ExperimentListFactory v = ExperimentListFactory.from_dict(v) elif v.get("__id__") == "imageset": from dxtbx.serialize.imageset import imageset_from_dict v = imageset_from_dict(v, check_format=False) setattr(return_obj, k, v) return return_obj
def test_json(dials_data, tmpdir): # Call dials.export result = procrunner.run( [ "dials.export", "format=json", dials_data("centroid_test_data").join("datablock.json").strpath, dials_data("centroid_test_data").join("strong.pickle").strpath, ], working_directory=tmpdir.strpath, ) assert not result.returncode and not result.stderr assert tmpdir.join("rlp.json").check(file=1) from dxtbx.model.experiment_list import ExperimentListFactory with tmpdir.join("rlp.json").open("rb") as f: d = json.load(f, object_hook=_decode_dict) assert set(d) == {"imageset_id", "experiments", "rlp", "experiment_id"} assert d["rlp"][:3] == [0.123454, 0.57687, 0.186465], d["rlp"][:3] assert d["imageset_id"][0] == 0 assert d["experiment_id"][0] == 0 experiments = ExperimentListFactory.from_dict(d["experiments"]) imgset = experiments.imagesets() assert len(imgset) == 1
def from_dict(cls, obj): import json assert obj['__id__'] == 'Refiner' return_obj = cls() for k, v in obj.iteritems(): if k == '_refinr_indexers': v_new = {} for k_, v_ in v.iteritems(): from libtbx.utils import import_python_object integrater_cls = import_python_object(import_path=".".join( (v_['__module__'], v_['__name__'])), error_prefix='', target_must_be='', where_str='').object v_new[float(k_)] = integrater_cls.from_dict(v_) v = v_new elif k == '_refinr_payload': v_new = {} for k_, v_ in v.iteritems(): try: v_new[float(k_)] = v_ except ValueError: v_new[k_] = v_ v = v_new if isinstance(v, dict): if v.get('__id__') == 'ExperimentList': from dxtbx.model.experiment_list import ExperimentListFactory v = ExperimentListFactory.from_dict(v, check_format=False) setattr(return_obj, k, v) return return_obj
def test_static_mask(dials_data): master_h5 = (dials_data("image_examples").join( "SACLA-MPCCD-Phase3-21528-5images.h5").strpath) assert FormatHDF5SaclaMPCCD.understand(master_h5) expts_from_filename = ExperimentListFactory.from_filenames([master_h5]) expts_from_dict = ExperimentListFactory.from_dict( expts_from_filename.to_dict()) for expts in (expts_from_filename, expts_from_dict): assert len(expts) == 5 imageset = expts[0].imageset assert imageset.get_format_class() == FormatHDF5SaclaMPCCD mask = imageset.get_mask(0) assert len(mask) == 8 assert [m.count(False) for m in mask] == [24296] * 8
def test_static_mask(dials_regression): filename = os.path.join( dials_regression, "image_examples/LCLS_CXI/shot-s00-2011-12-02T21_07Z29.723_00569.pickle", ) assert FormatPYunspecifiedStill.understand(filename) expts_from_filename = ExperimentListFactory.from_filenames([filename]) expts_from_dict = ExperimentListFactory.from_dict(expts_from_filename.to_dict()) for expts in (expts_from_filename, expts_from_dict): assert len(expts) == 1 imageset = expts[0].imageset assert imageset.get_format_class() == FormatPYunspecifiedStill mask = imageset.get_mask(0) assert len(mask) == 1 assert mask[0].count(False) == 867109
def from_dict(cls, obj): assert obj['__id__'] == 'Indexer' assert obj['__name__'] == cls.__name__ return_obj = cls() for k, v in obj.iteritems(): if k == '_indxr_helper' and v is not None: from xia2.Schema.Interfaces.Indexer import _IndexerHelper v = _IndexerHelper(v) if k == '_indxr_imagesets' and len(v): assert v[0].get('__id__') == 'imageset' from dxtbx.serialize.imageset import imageset_from_dict v = [imageset_from_dict(v_, check_format=False) for v_ in v] if isinstance(v, dict): if v.get('__id__') == 'ExperimentList': from dxtbx.model.experiment_list import ExperimentListFactory v = ExperimentListFactory.from_dict(v, check_format=False) setattr(return_obj, k, v) return return_obj
def from_dict(cls, obj): assert obj["__id__"] == "Indexer" assert obj["__name__"] == cls.__name__ return_obj = cls() for k, v in obj.items(): if k == "_indxr_helper" and v is not None: v = _IndexerHelper(v) if k == "_indxr_imagesets" and len(v): assert v[0].get("__id__") == "imageset" from dxtbx.serialize.imageset import imageset_from_dict v = [imageset_from_dict(v_, check_format=False) for v_ in v] if isinstance(v, dict): if v.get("__id__") == "ExperimentList": from dxtbx.model.experiment_list import ExperimentListFactory v = ExperimentListFactory.from_dict(v, check_format=False) setattr(return_obj, k, v) return return_obj
def test_combine_with_user_static_mask(dials_data, tmpdir): master_h5 = (dials_data("image_examples").join( "SACLA-MPCCD-Phase3-21528-5images.h5").strpath) assert FormatHDF5SaclaMPCCD.understand(master_h5) expts_from_filename = ExperimentListFactory.from_filenames([master_h5]) for i, expt in enumerate(expts_from_filename): mask = [] for panel in expt.detector: m = flex.bool(flex.grid(reversed(panel.get_image_size())), True) mask_untrusted_resolution_range(m, expt.beam, panel, 0, 2.23) mask.append(m) mask = tuple(mask) # exact number of masked pixels varies with wavelength between experiments assert [_.count(False) for _ in mask ] == pytest.approx([50643, 0, 0, 48003, 48356, 0, 0, 52191], abs=1e3) mask_file = tmpdir.join("pixel_%i.mask" % i) with mask_file.open("wb") as f: pickle.dump(mask, f) expt.imageset.external_lookup.mask.filename = mask_file.strpath expt.imageset.external_lookup.mask.data = ImageBool(mask) expts_from_dict = ExperimentListFactory.from_dict( expts_from_filename.to_dict()) imageset = expts_from_dict[0].imageset mask = imageset.get_mask(0) assert len(mask) == 8 assert [_.count(False) for _ in mask] == [ 65332, 24296, 24296, 63335, 63660, 24296, 24296, 66691, ] imageset.reader().nullify_format_instance()
def test_json(dials_data, tmp_path): # Call dials.export result = procrunner.run( [ "dials.export", "format=json", dials_data("centroid_test_data", pathlib=True) / "imported_experiments.json", dials_data("centroid_test_data", pathlib=True) / "strong.pickle", ], working_directory=tmp_path, ) assert not result.returncode and not result.stderr assert (tmp_path / "rlp.json").is_file() d = json.load((tmp_path / "rlp.json").open("rb")) assert set(d) == {"imageset_id", "experiments", "rlp", "experiment_id"} assert d["rlp"][:3] == [0.123413, 0.576679, 0.186326], d["rlp"][:3] assert d["imageset_id"][0] == 0 assert d["experiment_id"][0] == 0 experiments = ExperimentListFactory.from_dict(d["experiments"]) imgset = experiments.imagesets() assert len(imgset) == 1
def test_partial_missing_model_serialization(): goniometer = Goniometer() elist = ExperimentList([Experiment(), Experiment(goniometer=goniometer)]) elist_ = ExperimentListFactory.from_dict(elist.to_dict()) check(elist, elist_)