Exemplo n.º 1
0
def test_sqrt_transform():
    X = data.generate_positive_sparse_matrix()
    Y = np.sqrt(X)
    matrix.test_all_matrix_types(X,
                                 utils.assert_transform_equivalent,
                                 Y=Y,
                                 transform=scprep.transform.sqrt)
Exemplo n.º 2
0
 def test_select_cols_dataframe_index(self):
     matrix.test_all_matrix_types(self.X,
                                  scprep.select.select_cols,
                                  idx=pd.DataFrame(np.random.choice(
                                      [True, False], [1, self.X.shape[1]]),
                                                   index=[1],
                                                   columns=self.X.columns))
Exemplo n.º 3
0
    def test_subsample_multiple(self):
        Y, libsize_sub = scprep.select.subsample(self.X,
                                                 self.libsize,
                                                 n=20,
                                                 seed=42)

        def test_fun(X, **kwargs):
            libsize = scprep.measure.library_size(X)
            return scprep.select.subsample(X, libsize, **kwargs)[0]

        matrix.test_all_matrix_types(
            self.X,
            utils.assert_transform_equals,
            Y=Y,
            transform=test_fun,
            check=utils.assert_all_equal,
            n=20,
            seed=42,
        )

        def test_fun(X, **kwargs):
            libsize = scprep.measure.library_size(X)
            return scprep.select.subsample(X, libsize, **kwargs)[1]

        matrix.test_all_matrix_types(
            self.X,
            utils.assert_transform_equals,
            Y=libsize_sub,
            transform=test_fun,
            check=utils.assert_all_close,
            n=20,
            seed=42,
        )
Exemplo n.º 4
0
def test_u_statistic():
    X = data.generate_positive_sparse_matrix(shape=(500, 3),
                                             seed=42,
                                             poisson_mean=0.2)
    Y = data.generate_positive_sparse_matrix(shape=(500, 3),
                                             seed=42,
                                             poisson_mean=0.3)
    u_stat = [
        stats.mannwhitneyu(X[:, i], Y[:, i], alternative="two-sided")[0]
        for i in range(X.shape[1])
    ]

    def test_fun(X):
        return scprep.stats.rank_sum_statistic(
            scprep.select.select_rows(X, idx=np.arange(500)),
            scprep.select.select_rows(X, idx=np.arange(500, 1000)),
        )

    matrix.test_all_matrix_types(
        np.vstack([X, Y]),
        utils.assert_transform_equals,
        Y=u_stat,
        transform=test_fun,
        check=utils.assert_all_close,
    )
Exemplo n.º 5
0
def test_mean_difference():
    X = data.load_10X()
    X = scprep.filter.filter_empty_genes(X)
    Y = scprep.stats.mean_difference(X.iloc[:20], X.iloc[20:100])
    assert np.allclose(np.max(Y), 16.8125)
    assert np.allclose(np.min(Y), -0.5625)

    def test_fun(X, **kwargs):
        return scprep.stats.mean_difference(
            scprep.select.select_rows(X, idx=np.arange(20)),
            scprep.select.select_rows(X, idx=np.arange(20, 100)),
            **kwargs,
        )

    matrix.test_all_matrix_types(
        X,
        utils.assert_transform_equals,
        Y=Y,
        transform=test_fun,
        check=utils.assert_all_close,
    )
    utils.assert_raises_message(
        ValueError,
        "Expected X and Y to have the same number of columns. "
        "Got shapes {}, {}".format(X.shape, X.iloc[:, :10].shape),
        scprep.stats.mean_difference,
        X,
        X.iloc[:, :10],
    )
Exemplo n.º 6
0
 def test_gene_expression_filter_above(self):
     genes = np.arange(10)
     gene_cols = np.array(self.X_sparse.columns)[genes]
     X_filtered = scprep.filter.filter_gene_set_expression(
         self.X_sparse,
         genes=genes,
         percentile=10,
         keep_cells="above",
         library_size_normalize=False,
     )
     assert X_filtered.shape[1] == self.X_sparse.shape[1]
     assert np.min(np.sum(self.X_sparse[gene_cols], axis=1)) < np.min(
         np.sum(X_filtered[gene_cols], axis=1)
     )
     matrix.test_all_matrix_types(
         self.X_sparse,
         utils.assert_transform_equals,
         Y=X_filtered,
         transform=partial(
             scprep.filter.filter_gene_set_expression,
             genes=genes,
             percentile=10,
             keep_cells="above",
             library_size_normalize=False,
         ),
     )
Exemplo n.º 7
0
 def test_array_all(self):
     matrix.test_all_matrix_types(
         self.X_dense,
         utils.assert_transform_equals,
         Y=self.Y,
         transform=scprep.measure.gene_set_expression,
         genes=[0])
Exemplo n.º 8
0
def test_t_statistic():
    X = data.generate_positive_sparse_matrix(shape=(500, 3),
                                             seed=42,
                                             poisson_mean=0.2)
    Y = data.generate_positive_sparse_matrix(shape=(500, 3),
                                             seed=42,
                                             poisson_mean=0.3)
    u_stat = [
        stats.ttest_ind(X[:, i], Y[:, i], equal_var=False)[0]
        for i in range(X.shape[1])
    ]

    def test_fun(X):
        return scprep.stats.t_statistic(
            scprep.select.select_rows(X, idx=np.arange(500)),
            scprep.select.select_rows(X, idx=np.arange(500, 1000)),
        )

    matrix.test_all_matrix_types(
        np.vstack([X, Y]),
        utils.assert_transform_equals,
        Y=u_stat,
        transform=test_fun,
        check=partial(utils.assert_all_close, rtol=2e-3),
    )
Exemplo n.º 9
0
def test_knnDREMI():
    X = data.generate_positive_sparse_matrix(
        shape=(500, 2), seed=42, poisson_mean=5)
    Y = scprep.stats.knnDREMI(X[:, 0], X[:, 1])
    assert isinstance(Y, float)
    np.testing.assert_allclose(Y, 0.16238906)
    Y2, drevi = scprep.stats.knnDREMI(X[:, 0], X[:, 1],
                                      plot=True, filename="test.png",
                                      return_drevi=True)
    assert Y2 == Y
    assert drevi.shape == (20, 20)
    matrix.test_all_matrix_types(
        X, utils.assert_transform_equals, Y=Y,
        transform=partial(_test_fun_2d, fun=scprep.stats.knnDREMI),
        check=utils.assert_all_close)
    with warnings.catch_warnings():
        warnings.filterwarnings("ignore", category=UserWarning)
        assert scprep.stats.knnDREMI(X[:, 0], np.repeat(X[0, 1], X.shape[0]),
                                     return_drevi=True) == (0, None)
    assert_raise_message(
        ValueError, "Expected k as an integer. Got ",
        scprep.stats.knnDREMI, X[:, 0], X[:, 1], k="invalid")
    assert_raise_message(
        ValueError, "Expected n_bins as an integer. Got ",
        scprep.stats.knnDREMI, X[:, 0], X[:, 1], n_bins="invalid")
    assert_raise_message(
        ValueError, "Expected n_mesh as an integer. Got ",
        scprep.stats.knnDREMI, X[:, 0], X[:, 1], n_mesh="invalid")
    assert_warns_message(
        UserWarning,
        "Attempting to calculate kNN-DREMI on a constant array. "
        "Returning `0`", scprep.stats.knnDREMI, X[:, 0],
        np.zeros_like(X[:, 1]))
Exemplo n.º 10
0
 def test_subsample(self):
     self.X = data.generate_positive_sparse_matrix(shape=(50, 100))
     Y = scprep.select.subsample(self.X, n=20, seed=42)
     matrix.test_all_matrix_types(
         self.X, utils.assert_transform_equals, Y=Y,
         transform=scprep.select.subsample,
         check=utils.assert_all_equal, n=20, seed=42)
Exemplo n.º 11
0
 def test_select_rows_sparse_index(self):
     matrix.test_all_matrix_types(
         self.X, scprep.select.select_rows,
         idx=sparse.coo_matrix(np.random.choice([True, False], [1, self.X.shape[0]])))
     matrix.test_all_matrix_types(
         self.X, scprep.select.select_rows,
         idx=sparse.coo_matrix(np.random.choice([True, False], [self.X.shape[0], 1])))
Exemplo n.º 12
0
 def test_select_cols_integer_list_index(self):
     matrix.test_all_matrix_types(
         self.X,
         scprep.select.select_cols,
         idx=np.random.choice(self.X.shape[1],
                              self.X.shape[1] // 2).tolist(),
     )
Exemplo n.º 13
0
 def test_filter_rare_genes(self):
     X_filtered = scprep.filter.filter_rare_genes(self.X_dense)
     assert X_filtered.shape[0] == self.X_dense.shape[0]
     assert not np.any(X_filtered.sum(0) < 5)
     matrix.test_all_matrix_types(self.X_dense,
                                  utils.assert_transform_equals,
                                  Y=X_filtered,
                                  transform=scprep.filter.filter_rare_genes)
Exemplo n.º 14
0
def test_check_numeric_copy():
    X = data.load_10X()
    matrix.test_all_matrix_types(
        X,
        utils.assert_transform_unchanged,
        transform=scprep.sanitize.check_numeric,
        copy=True,
    )
Exemplo n.º 15
0
def test_toarray():
    X = data.generate_positive_sparse_matrix(shape=(50, 50))

    def test_fun(X):
        assert isinstance(scprep.utils.toarray(X), np.ndarray)

    matrix.test_all_matrix_types(X, test_fun)
    test_fun([X, np.matrix(X)])
Exemplo n.º 16
0
 def test_libsize_norm_rescale_integer(self):
     Y = self.X_norm
     matrix.test_all_matrix_types(
         self.X,
         utils.assert_transform_equivalent,
         Y=Y,
         transform=scprep.normalize.library_size_normalize,
         check=utils.assert_all_close,
         rescale=1)
Exemplo n.º 17
0
def test_remove_empty_cells():
    X = data.load_10X(sparse=False)
    X_filtered = scprep.filter.remove_empty_cells(X)
    assert X_filtered.shape[1] == X.shape[1]
    assert not np.any(X_filtered.sum(1) == 0)
    matrix.test_all_matrix_types(X,
                                 utils.assert_transform_equals,
                                 Y=X_filtered,
                                 transform=scprep.filter.remove_empty_cells)
Exemplo n.º 18
0
def test_remove_rare_genes():
    X = data.load_10X(sparse=False)
    X_filtered = scprep.filter.remove_rare_genes(X)
    assert X_filtered.shape[0] == X.shape[0]
    assert not np.any(X_filtered.sum(0) < 5)
    matrix.test_all_matrix_types(X,
                                 utils.assert_transform_equals,
                                 Y=X_filtered,
                                 transform=scprep.filter.remove_rare_genes)
Exemplo n.º 19
0
 def test_select_rows_dataframe_index(self):
     matrix.test_all_matrix_types(
         self.X,
         scprep.select.select_rows,
         idx=pd.DataFrame(
             np.random.choice([True, False], [self.X.shape[0], 1]),
             index=self.X.index,
         ),
     )
Exemplo n.º 20
0
 def test_filter_empty_genes_sparse(self):
     X_filtered = scprep.filter.filter_empty_genes(self.X_sparse)
     assert X_filtered.shape[0] == self.X_sparse.shape[0]
     assert not np.any(X_filtered.sum(0) == 0)
     matrix.test_all_matrix_types(
         self.X_sparse,
         utils.assert_transform_equals,
         Y=X_filtered,
         transform=scprep.filter.filter_empty_genes)
Exemplo n.º 21
0
def test_mutual_information():
    X = data.generate_positive_sparse_matrix(
        shape=(500, 2), seed=42, poisson_mean=5)
    Y = scprep.stats.mutual_information(X[:, 0], X[:, 1], bins=20)
    assert isinstance(Y, float)
    np.testing.assert_allclose(Y, calc_MI(X[:, 0], X[:, 1], bins=20))
    matrix.test_all_matrix_types(
        X, utils.assert_transform_equals, Y=Y,
        transform=partial(_test_fun_2d, fun=scprep.stats.mutual_information),
        check=utils.assert_all_close, bins=20)
Exemplo n.º 22
0
    def test_libsize_norm_return_libsize_rescale_constant(self):
        def test_fun(*args, **kwargs):
            return scprep.normalize.library_size_normalize(
                *args, return_library_size=True, rescale=1, **kwargs)[1]

        matrix.test_all_matrix_types(self.X,
                                     utils.assert_transform_equals,
                                     Y=self.libsize,
                                     transform=test_fun,
                                     check=utils.assert_all_close)
Exemplo n.º 23
0
 def test_libsize_norm_rescale_mean(self):
     Y = self.X_norm * self.mean
     utils.assert_all_close(Y.sum(1), np.mean(np.sum(self.X, 1)))
     matrix.test_all_matrix_types(
         self.X,
         utils.assert_transform_equivalent,
         Y=Y,
         transform=scprep.normalize.library_size_normalize,
         check=utils.assert_all_close,
         rescale='mean')
Exemplo n.º 24
0
def test_toarray():
    X = data.generate_positive_sparse_matrix(shape=(50, 50))

    def test_fun(X):
        assert isinstance(scprep.utils.toarray(X), np.ndarray)

    matrix.test_all_matrix_types(X, test_fun)
    test_fun([X, np.matrix(X)])
    assert_raise_message(TypeError, "Expected array-like. Got ",
                         scprep.utils.toarray, "hello")
Exemplo n.º 25
0
def test_library_size_filter():
    X = data.load_10X(sparse=True)
    X_filtered = scprep.filter.filter_library_size(X, 100)
    assert X_filtered.shape[1] == X.shape[1]
    assert not np.any(X_filtered.sum(1) <= 100)
    matrix.test_all_matrix_types(X,
                                 utils.assert_transform_equals,
                                 Y=X_filtered,
                                 transform=partial(
                                     scprep.filter.filter_library_size,
                                     cutoff=100))
Exemplo n.º 26
0
def test_toarray():
    X = data.generate_positive_sparse_matrix(shape=(50, 50))

    def test_fun(X):
        assert isinstance(scprep.utils.toarray(X), np.ndarray)

    matrix.test_all_matrix_types(X, test_fun)
    test_fun(np.matrix(X))
    assert_raise_message(
        TypeError, "Expected pandas DataFrame, scipy sparse matrix or "
        "numpy matrix. Got ", scprep.utils.toarray, "hello")
Exemplo n.º 27
0
def test_matrix_elementwise_multiply_guess_col():
    X = data.generate_positive_sparse_matrix(shape=(50, 100))
    x = X[0] + 1
    Y = pd.DataFrame(X).mul(x, axis=1)
    matrix.test_all_matrix_types(
        X,
        utils.assert_transform_equivalent,
        Y=Y,
        transform=scprep.utils.matrix_vector_elementwise_multiply,
        check=utils.assert_all_close,
        axis=None,
        multiplier=x)
Exemplo n.º 28
0
 def test_libsize_norm_rescale_median(self):
     Y = self.X_norm * self.median
     utils.assert_all_close(Y.sum(1), np.median(np.sum(self.X, 1)))
     Y2, libsize2 = scprep.normalize.library_size_normalize(
         self.X, return_library_size=True)
     np.testing.assert_allclose(Y, Y2)
     np.testing.assert_allclose(self.libsize, libsize2)
     matrix.test_all_matrix_types(
         self.X,
         utils.assert_transform_equivalent,
         Y=Y,
         transform=scprep.normalize.library_size_normalize,
         check=utils.assert_all_close)
Exemplo n.º 29
0
def test_arcsinh_transform():
    X = data.generate_positive_sparse_matrix()
    Y = np.arcsinh(X / 5)
    matrix.test_all_matrix_types(X,
                                 utils.assert_transform_equivalent,
                                 Y=Y,
                                 transform=scprep.transform.arcsinh,
                                 check=utils.assert_all_close)
    assert_raise_message(ValueError, "Expected cofactor > 0 or None. "
                         "Got 0",
                         scprep.transform.arcsinh,
                         data=X,
                         cofactor=0)
Exemplo n.º 30
0
def test_EMD():
    X = data.generate_positive_sparse_matrix(
        shape=(500, 2), seed=42, poisson_mean=5)
    Y = scprep.stats.EMD(X[:, 0], X[:, 1])
    assert isinstance(Y, float)
    np.testing.assert_allclose(Y, 0.5537161)
    matrix.test_all_matrix_types(
        X, utils.assert_transform_equals, Y=Y,
        transform=partial(_test_fun_2d, fun=scprep.stats.EMD),
        check=utils.assert_all_close)
    assert_raise_message(
        ValueError, "Expected x and y to be 1D arrays. "
        "Got shapes x {}, y {}".format(X.shape, X[:, 1].shape),
        scprep.stats.EMD, X, X[:, 1])