--- a +++ b/tests/cli/test_contrib.py @@ -0,0 +1,81 @@ +"""Test bpnet contrib +""" +import pytest +from bpnet.cli.contrib import bpnet_contrib, ContribFile +import keras.backend as K + + +@pytest.mark.parametrize("method", ['deeplift', 'grad']) +def test_contrib_bias_model(tmp_path, method, trained_model_w_bias): + """Test whether we can compute differnet contribution scores + """ + K.clear_session() + fpath = tmp_path / 'imp-score.h5' + bpnet_contrib(str(trained_model_w_bias), + str(fpath), + method=method) + + cf = ContribFile(fpath) + assert cf.get_contrib()['Task1'].shape[-1] == 4 + + +@pytest.mark.parametrize("method", ['deeplift', 'grad']) +def test_contrib_default_model(tmp_path, method, trained_model): + """Test whether we can compute differnet contribution scores + """ + K.clear_session() + fpath = tmp_path / 'imp-score.h5' + bpnet_contrib(str(trained_model), + str(fpath), + method=method) + + cf = ContribFile(fpath) + assert cf.get_contrib()['Task1'].shape[-1] == 4 + + +@pytest.mark.parametrize("method", ['grad']) +def test_contrib_regions(tmp_path, method, trained_model, regions): + """Test different scenarios regarding subsetting + """ + K.clear_session() + bpnet_contrib(str(trained_model), + str(tmp_path / 'imp-score.h5'), + method=method, + regions=str(regions)) + + +@pytest.mark.parametrize("method", ['grad']) +def test_contrib_dataspec(tmp_path, method, trained_model, dataspec_bias, regions): + """Test different scenarios regarding subsetting + """ + K.clear_session() + bpnet_contrib(str(trained_model), + str(tmp_path / 'imp-score.h5'), + method=method, + dataspec=str(dataspec_bias), + regions=str(regions)) + + +@pytest.mark.parametrize("method", ['grad']) +def test_contrib_fasta_file(tmp_path, method, trained_model, fasta_file, regions): + """Test different scenarios regarding subsetting + """ + K.clear_session() + bpnet_contrib(str(trained_model), + str(tmp_path / 'imp-score.h5'), + method=method, + fasta_file=str(fasta_file), + regions=str(regions)) + + +@pytest.mark.parametrize("method", ['grad']) +def test_contrib_dataspec_fasta_file(tmp_path, method, trained_model, dataspec_bias, fasta_file): + """Test different scenarios regarding subsetting + """ + K.clear_session() + with pytest.raises(ValueError): + bpnet_contrib(str(trained_model), + str(tmp_path / 'imp-score.h5'), + method=method, + fasta_file=str(fasta_file), + dataspec=str(dataspec_bias))