예제 #1
0
def test_dialsscalecrossvalidator():
    """Test the methods of the dials.scale cross validator"""
    experiments = []
    reflections = []

    def mock_script():
        script = mock.MagicMock()
        script.scaler.work_free_stats = [1.0, 2.0, 3.0, 4.0]
        return script

    # test get results from script
    crossvalidator = DialsScaleCrossValidator(experiments, reflections)
    script = mock_script()
    results = crossvalidator.get_results_from_script(script)
    assert results == [1.0, 2.0, 3.0, 4.0]

    params = generated_param()
    params.scaling_options.free_set_percentage = 20.0
    # test get free set offset
    fsp = crossvalidator.get_free_set_percentage(params)
    assert fsp == 20.0

    # test set free set offset
    params = crossvalidator.set_free_set_offset(params, 5)
    assert params.scaling_options.free_set_offset == 5

    # test get/set parameters
    assert crossvalidator.get_parameter_type("model") == "choice"
    assert crossvalidator.get_parameter_type(
        "physical.absorption_correction") == "bool"
    assert crossvalidator.get_parameter_type("physical.lmax") == "int"
    assert crossvalidator.get_parameter_type(
        "physical.decay_interval") == "float"

    params = crossvalidator.set_parameter(params, "model", "physical")
    assert params.model == "physical"
    params = crossvalidator.set_parameter(params, "physical.decay_interval",
                                          50.0)
    assert params.physical.decay_interval == 50.0
    params = crossvalidator.set_parameter(params, "physical.lmax", 10)
    assert params.physical.lmax == 10
    params = crossvalidator.set_parameter(params,
                                          "weighting.error_model.error_model",
                                          None)
    assert params.weighting.error_model.error_model is None
    params = crossvalidator.set_parameter(params, "cut_data.d_min", 1.8)
    assert params.cut_data.d_min == 1.8
    params = crossvalidator.set_parameter(params,
                                          "scaling_options.outlier_zmax", 7.53)
    assert params.scaling_options.outlier_zmax == 7.53
    with pytest.raises(ValueError):
        _ = crossvalidator.set_parameter(params, "bad_parameter", 7.53)
예제 #2
0
def test_dialsscalecrossvalidator():
    """Test the methods of the dials.scale cross validator"""
    experiments = []
    reflections = []

    def mock_script():
        script = mock.MagicMock()
        script.scaler.final_rmsds = [1.0, 2.0, 3.0, 4.0]
        return script

    # test get results from script
    crossvalidator = DialsScaleCrossValidator(experiments, reflections)
    script = mock_script()
    results = crossvalidator.get_results_from_script(script)
    assert results == [1.0, 2.0, 3.0, 4.0]

    params = generated_param()
    params.scaling_options.free_set_percentage = 20.0
    # test get free set offset
    fsp = crossvalidator.get_free_set_percentage(params)
    assert fsp == 20.0

    # test set free set offset
    params = crossvalidator.set_free_set_offset(params, 5)
    assert params.scaling_options.free_set_offset == 5

    # test get/set parameters
    assert crossvalidator.get_parameter_type("model") == "choice"
    assert crossvalidator.get_parameter_type("absorption_term") == "bool"
    assert crossvalidator.get_parameter_type("lmax") == "int"
    assert crossvalidator.get_parameter_type("decay_interval") == "float"

    params = crossvalidator.set_parameter(params, "model", "KB")
    assert params.model == "KB"
    params = crossvalidator.set_parameter(params, "decay_interval", 50.0)
    assert params.parameterisation.decay_interval == 50.0
    params = crossvalidator.set_parameter(params, "lmax", 10)
    assert params.parameterisation.lmax == 10
    params = crossvalidator.set_parameter(params, "optimise_errors", False)
    assert params.weighting.optimise_errors is False
    params = crossvalidator.set_parameter(params, "d_min", 1.8)
    assert params.cut_data.d_min == 1.8
    params = crossvalidator.set_parameter(params, "outlier_zmax", 7.53)
    assert params.scaling_options.outlier_zmax == 7.53
    with pytest.raises(AssertionError):
        _ = crossvalidator.set_parameter(params, "bad_parameter", 7.53)