示例#1
0
def test_ICE_normalization_cancer():
    n = 100
    random_state = np.random.RandomState(seed=42)
    X = random_state.randint(0, 100, size=(n, n))
    X = X + X.T
    profile = np.ones(n)
    profile[:10] = 0
    profile[50:] = 2
    normed_X, bias = ICE_normalization(X,
                                       eps=1e-10,
                                       counts_profile=profile,
                                       output_bias=True)
    assert not np.all(np.isnan(normed_X))

    normed_X[np.isnan(normed_X)] = 0
    mask = np.isnan(bias).flatten()
    bias[np.isnan(bias)] = 1
    normed_from_bias_X = X / (bias.T * bias)
    normed_from_bias_X[mask] = 0
    normed_from_bias_X[:, mask] = 0
    assert_array_almost_equal(normed_X, normed_from_bias_X, 6)
    inferred_profile = normed_X.sum(axis=0)
    inferred_profile /= inferred_profile.max()
    assert_array_almost_equal(inferred_profile, profile / profile.max())

    # Do the same for sparse matriecs
    normed_X = ICE_normalization(sparse.coo_matrix(X),
                                 eps=1e-10,
                                 counts_profile=profile)
示例#2
0
def test_ICE_normalization():
    n = 100
    X = np.random.random((n, n))
    X = X + X.T
    normed_X = ICE_normalization(X, eps=1e-10, max_iter=1000000)
    normed = normed_X.sum(axis=1)
    assert_array_almost_equal(normed / normed.mean(), np.ones((len(X), )),
                              decimal=0)
示例#3
0
def test_ICE_normalization():
    n = 100
    random_state = np.random.RandomState(seed=42)
    X = random_state.randint(0, 100, size=(n, n))
    X = X + X.T
    normed_X = ICE_normalization(X, eps=1e-10, max_iter=1000000)
    normed = normed_X.sum(axis=1)
    assert_array_almost_equal(normed / normed.mean(), np.ones((len(X), )),
                              decimal=0)
示例#4
0
def test_sparse_ICE_normalization_triu():
    n = 100
    random_state = np.random.RandomState(seed=42)
    X = random_state.randint(0, 100, size=(n, n))

    thres = (random_state.rand(n, n) > 0.5).astype(bool)
    X[thres] = 0
    X = X + X.T
    sparse_X = sparse.triu(X)
    true_normed_X, true_biases = ICE_normalization(X,
                                                   eps=1e-10,
                                                   max_iter=10,
                                                   output_bias=True)
    true_normed_X = np.triu(true_normed_X)

    normed_X_sparse, biases_sparse = ICE_normalization(sparse_X,
                                                       eps=1e-10,
                                                       max_iter=100,
                                                       output_bias=True)
    normed_X_dense, biases_dense = ICE_normalization(np.triu(X),
                                                     eps=1e-10,
                                                     max_iter=100,
                                                     output_bias=True)

    # The sparse and dense version are going to be equal up to a constant
    # factor
    assert_array_almost_equal(normed_X_dense,
                              np.array(normed_X_sparse.toarray()))

    normed_X_sparse *= true_normed_X.mean() / normed_X_sparse.mean()
    normed_X_dense *= true_normed_X.mean() / normed_X_dense.mean()

    assert_array_almost_equal(true_normed_X,
                              np.array(normed_X_sparse.todense()))
    assert_array_almost_equal(true_normed_X, normed_X_dense)

    total_counts = 5000
    normed_X = ICE_normalization(sparse_X,
                                 eps=1e-10,
                                 total_counts=total_counts)
    assert pytest.approx(normed_X.sum(), total_counts)
示例#5
0
def test_sparse_ICE_normalization_triu():
    n = 100
    random_state = np.random.RandomState(seed=42)
    X = random_state.randint(0, 100, size=(n, n))

    thres = (random_state.rand(n, n) > 0.5).astype(bool)
    X[thres] = 0
    X = X + X.T
    sparse_X = sparse.triu(X)
    true_normed_X, true_biases = ICE_normalization(
        X, eps=1e-10, max_iter=10, output_bias=True)
    true_normed_X = np.triu(true_normed_X)

    normed_X_sparse, biases_sparse = ICE_normalization(
        sparse_X, eps=1e-10, max_iter=100,
        output_bias=True)
    normed_X_dense, biases_dense = ICE_normalization(
        np.triu(X), eps=1e-10, max_iter=100,
        output_bias=True)

    # The sparse and dense version are going to be equal up to a constant
    # factor
    assert_array_almost_equal(normed_X_dense,
                              np.array(normed_X_sparse.toarray()))

    normed_X_sparse *= true_normed_X.mean() / normed_X_sparse.mean()
    normed_X_dense *= true_normed_X.mean() / normed_X_dense.mean()

    assert_array_almost_equal(true_normed_X,
                              np.array(normed_X_sparse.todense()))
    assert_array_almost_equal(true_normed_X, normed_X_dense)

    total_counts = 5000
    normed_X = ICE_normalization(sparse_X, eps=1e-10,
                                 total_counts=total_counts)
    assert_almost_equal(normed_X.sum(), total_counts)