예제 #1
0
def exercise():
    if (iotbx_mtz is None):
        print(
            "Skipping iotbx/examples/tst_mtz_free_flipper.py: ccp4io not available"
        )
        return
    input_file_name = libtbx.env.find_in_repositories(
        relative_path="phenix_regression/reflection_files/l.mtz",
        test=os.path.isfile)
    if (input_file_name is None):
        print("Skipping exercise(): input file not available")
        return
    label = "R-free-flags(-)"
    mtz_free_flipper.run(args=[input_file_name], label=label)
    mtz_free_flipper.run(args=["free_flipped_l.mtz"], label=label)
    mtz_convert_free_to_work.run(args=[input_file_name], label=label)
    spreadsheets = []
    for file_name, expected in [(input_file_name, (13469, 1065, 2323)),
                                ("free_flipped_l.mtz", (1065, 13469, 2323)),
                                ("free_flipped_free_flipped_l.mtz",
                                 (13469, 1065, 2323)),
                                ("less_free_l.mtz", (14002, 532, 2323))]:
        s = StringIO()
        mtz_obj = iotbx_mtz.object(file_name=file_name)
        mtz_obj.show_column_data(out=s, format="spreadsheet")
        s = s.getvalue()
        spreadsheets.append(s)
        n_0, n_1, n_rest = 0, 0, 0
        for line in s.splitlines()[1:]:
            if (line.endswith(",0")): n_0 += 1
            elif (line.endswith(",1")): n_1 += 1
            else:
                assert line.endswith(",")
                n_rest += 1
        assert mtz_obj.n_reflections() == n_0 + n_1 + n_rest
        assert (n_0, n_1, n_rest) == expected
    assert not show_diff(spreadsheets[0], spreadsheets[2])
    assert spreadsheets[0] != spreadsheets[1]