Exemplo n.º 1
0
def exercise_debug_write():
    #---------Write out a test file
    D = DetectorImageBase('no_file')
    D.parameters = {
        'SIZE1': filesize,
        'SIZE2': filesize,
        'PIXEL_SIZE': 0.1,
        'DISTANCE': 100.0,
        'TWOTHETA': 0.0,
        'OSC_START': 0.0,
        'OSC_RANGE': 1.0,
        'WAVELENGTH': 1.0,
        'BEAM_CENTER_X': 12.5,
        'BEAM_CENTER_Y': 12.5,
    }

    def getEndian():
        return 0

    D.getEndian = getEndian
    sindata = flex.int()
    for x in range(filesize):
        sindata.append(min(255, abs(int(256 * sinfunc(x)))))
    moddata = flex.int()
    accum = 0
    for x in range(filesize):
        for y in range(filesize):
            value = sindata[x] * sindata[y]
            moddata.append(value)
            accum += value
    D.debug_write(filename, mod_data=moddata)

    #---------Read back the test file
    a = adsc.ADSCImage(filename)
    a.read()
    assert a.size1 == filesize
    assert a.size2 == filesize
    assert a.npixels == filesize * filesize
    assert approx_equal(a.pixel_size, 0.1)
    assert approx_equal(a.osc_start, 0)
    checkaccum = 0
    for x in range(a.npixels):
        if moddata[x] != a.linearintdata[x]:
            print(x, moddata[x], a.linearintdata[x])
        checkaccum += a.linearintdata[x]
    assert accum == checkaccum
    os.remove(filename)
            if idx in [6, 7, 8]: return test_tile(4100, 6139)

        def tile_fast_interval(self, idx):
            if idx in [0, 3, 6]: return test_tile(4, 2043)
            if idx in [1, 4, 7]: return test_tile(2052, 4091)
            if idx in [2, 5, 8]: return test_tile(4100, 6139)

    input_parameters = {
        'BEAM_CENTER_X': 154.9,
        'BEAM_CENTER_Y': 148.7,
        'SIZE1': 6144,
        'SIZE2': 6144,
        'PIXEL_SIZE': 0.051294
    }
    from iotbx.detectors.detectorbase import DetectorImageBase
    input_object = DetectorImageBase("no file")
    input_object.parameters = input_parameters
    ID = test_divider()
    S = StringIO.StringIO()
    for convention in range(8):
        for moduleidx in range(9):
            B = convert_beam_instrument_to_module(input_object, ID, moduleidx,
                                                  convention)
            print >> S, "(%.1f,%.1f)" % (B[0], B[1]),
        print >> S
    assert not show_diff(
        S.getvalue(),
        """(154.7,148.5) (154.7,43.4) (154.7,-61.6) (49.6,148.5) (49.6,43.4) (49.6,-61.6) (-55.4,148.5) (-55.4,43.4) (-55.4,-61.6)
(148.5,154.7) (148.5,49.6) (148.5,-55.4) (43.4,154.7) (43.4,49.6) (43.4,-55.4) (-61.6,154.7) (-61.6,49.6) (-61.6,-55.4)
(154.7,166.2) (154.7,61.2) (154.7,-43.9) (49.6,166.2) (49.6,61.2) (49.6,-43.9) (-55.4,166.2) (-55.4,61.2) (-55.4,-43.9)
(148.5,160.0) (148.5,55.0) (148.5,-50.1) (43.4,160.0) (43.4,55.0) (43.4,-50.1) (-61.6,160.0) (-61.6,55.0) (-61.6,-50.1)