Exemple #1
0
def test_imagesetdata(centroid_files):
    ReaderClass = FormatClass.get_reader()

    reader = ReaderClass(centroid_files)
    masker = FormatClass(centroid_files[0]).get_masker()

    handle = ImageSetData(reader, masker)

    assert handle.get_data(0).as_int().tile(0).data()

    assert handle.has_single_file_reader() is False

    path = handle.get_path(0)
    assert path == centroid_files[0]

    master_path = handle.get_master_path()
    assert master_path == ""

    identifier = handle.get_image_identifier(0)
    assert identifier == centroid_files[0]

    beam = FormatClass(centroid_files[0]).get_beam()
    detector = FormatClass(centroid_files[0]).get_detector()
    goniometer = FormatClass(centroid_files[0]).get_goniometer()
    scan = FormatClass(centroid_files[0]).get_scan()

    handle.set_beam(beam, 0)
    handle.set_detector(detector, 0)
    handle.set_goniometer(goniometer, 0)
    handle.set_scan(scan, 0)

    beam2 = handle.get_beam(0)
    detector2 = handle.get_detector(0)
    goniometer2 = handle.get_goniometer(0)
    scan2 = handle.get_scan(0)

    assert beam2 == beam
    assert detector2 == detector
    assert goniometer2 == goniometer
    assert scan2 == scan

    mask = flex.bool(flex.grid(10, 10), True)
    gain = flex.double(flex.grid(10, 10), 1)
    pedestal = flex.double(flex.grid(10, 10), 2)

    handle.external_lookup.mask.data = dxtbx.format.image.ImageBool(
        dxtbx.format.image.ImageTileBool(mask))
    handle.external_lookup.gain.data = dxtbx.format.image.ImageDouble(
        dxtbx.format.image.ImageTileDouble(gain))
    handle.external_lookup.pedestal.data = dxtbx.format.image.ImageDouble(
        dxtbx.format.image.ImageTileDouble(pedestal))

    mask2 = handle.external_lookup.mask.data.tile(0).data()
    gain2 = handle.external_lookup.gain.data.tile(0).data()
    pedestal2 = handle.external_lookup.pedestal.data.tile(0).data()

    assert mask2.all_eq(mask)
    assert gain2.all_eq(gain)
    assert pedestal2.all_eq(pedestal)
    def run(self):

        from dxtbx.imageset import ImageSetData
        from dxtbx.format.image import ImageTileBool
        from dxtbx.format.image import ImageTileDouble
        from dxtbx.format.image import ImageBool
        from dxtbx.format.image import ImageDouble
        from scitbx.array_family import flex
        import os.path
        from glob import glob
        from dxtbx.format.FormatCBFMiniPilatus import FormatCBFMiniPilatus as FormatClass
        from os.path import join

        dials_regression = libtbx.env.dist_path('dials_regression')
        filenames = sorted(
            glob(join(dials_regression, "centroid_test_data", "*.cbf")))

        ReaderClass = FormatClass.get_reader()
        MaskerClass = FormatClass.get_masker()

        reader = ReaderClass(filenames)
        masker = MaskerClass(filenames)

        handle = ImageSetData(reader, masker)

        data = handle.get_data(0).as_int().tile(0).data()
        mask = handle.get_mask(0).tile(0).data()

        assert handle.has_single_file_reader() == False

        path = handle.get_path(0)
        assert path == filenames[0]

        master_path = handle.get_master_path()
        assert master_path == ""

        identifier = handle.get_image_identifier(0)
        assert identifier == filenames[0]

        beam = FormatClass(filenames[0]).get_beam()
        detector = FormatClass(filenames[0]).get_detector()
        goniometer = FormatClass(filenames[0]).get_goniometer()
        scan = FormatClass(filenames[0]).get_scan()

        handle.set_beam(beam, 0)
        handle.set_detector(detector, 0)
        handle.set_goniometer(goniometer, 0)
        handle.set_scan(scan, 0)

        beam2 = handle.get_beam(0)
        detector2 = handle.get_detector(0)
        goniometer2 = handle.get_goniometer(0)
        scan2 = handle.get_scan(0)

        assert beam2 == beam
        assert detector2 == detector
        assert goniometer2 == goniometer
        assert scan2 == scan

        mask = flex.bool(flex.grid(10, 10), True)
        gain = flex.double(flex.grid(10, 10), 1)
        pedestal = flex.double(flex.grid(10, 10), 2)

        handle.external_lookup.mask.data = ImageBool(ImageTileBool(mask))
        handle.external_lookup.gain.data = ImageDouble(ImageTileDouble(gain))
        handle.external_lookup.pedestal.data = ImageDouble(
            ImageTileDouble(pedestal))

        mask2 = handle.external_lookup.mask.data.tile(0).data()
        gain2 = handle.external_lookup.gain.data.tile(0).data()
        pedestal2 = handle.external_lookup.pedestal.data.tile(0).data()

        assert mask2.all_eq(mask)
        assert gain2.all_eq(gain)
        assert pedestal2.all_eq(pedestal)

        print 'OK'