Beispiel #1
0
    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
Beispiel #2
0
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
Beispiel #3
0
 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
Beispiel #6
0
 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
Beispiel #7
0
    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()
Beispiel #9
0
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
Beispiel #10
0
def test_partial_missing_model_serialization():
    goniometer = Goniometer()
    elist = ExperimentList([Experiment(), Experiment(goniometer=goniometer)])
    elist_ = ExperimentListFactory.from_dict(elist.to_dict())
    check(elist, elist_)