示例#1
0
def test_poisson_objective_diploid_unambig():
    lengths = np.array([20])
    ploidy = 2
    seed = 42
    alpha, beta = -3., 1.

    random_state = np.random.RandomState(seed=seed)
    n = lengths.sum()
    X_true = random_state.rand(n * ploidy, 3)
    dis = euclidean_distances(X_true)
    dis[dis == 0] = np.inf
    counts = beta * dis**alpha
    counts[np.isnan(counts) | np.isinf(counts)] = 0
    counts = np.triu(counts, 1)
    counts = sparse.coo_matrix(counts)

    counts = _format_counts(counts=counts,
                            lengths=lengths,
                            ploidy=ploidy,
                            beta=beta)

    obj = poisson.objective(X=X_true,
                            counts=counts,
                            alpha=alpha,
                            lengths=lengths)

    assert obj < -1e4
示例#2
0
def test_poisson_objective_diploid_partially_ambig_biased():
    lengths = np.array([20])
    ploidy = 2
    seed = 42
    alpha, beta = -3., 1.

    random_state = np.random.RandomState(seed=seed)
    n = lengths.sum()
    X_true = random_state.rand(n * ploidy, 3)
    dis = euclidean_distances(X_true)
    dis[dis == 0] = np.inf
    counts = beta * dis**alpha
    counts[np.isnan(counts) | np.isinf(counts)] = 0
    counts = counts[:, :n] + counts[:, n:]
    np.fill_diagonal(counts[:n, :], 0)
    np.fill_diagonal(counts[n:, :], 0)

    bias = 0.1 + random_state.rand(n)
    counts *= np.tile(bias, 2).reshape(-1, 1)
    counts *= bias.reshape(-1, 1).T
    counts = sparse.coo_matrix(counts)

    counts = _format_counts(counts=counts,
                            lengths=lengths,
                            ploidy=ploidy,
                            beta=beta)

    obj = poisson.objective(X=X_true,
                            counts=counts,
                            alpha=alpha,
                            lengths=lengths,
                            bias=bias)

    assert obj < -1e4
示例#3
0
def test_poisson_objective_multiscale_ambig():
    lengths = np.array([20])
    ploidy = 2
    seed = 42
    alpha, beta = -3., 1.
    multiscale_rounds = 4

    multiscale_factor = 2 ** multiscale_rounds
    random_state = np.random.RandomState(seed=seed)
    n = lengths.sum()
    X_true = random_state.rand(n * ploidy, 3)
    dis = euclidean_distances(X_true)
    dis[dis == 0] = np.inf
    counts = beta * dis ** alpha
    counts[np.isnan(counts) | np.isinf(counts)] = 0
    counts = counts[:n, :n] + counts[n:, n:] + counts[:n, n:] + counts[n:, :n]
    counts = np.triu(counts, 1)
    counts = sparse.coo_matrix(counts)

    _, _, _, fullres_torm_for_multiscale = preprocess_counts(
        counts_raw=counts, lengths=lengths, ploidy=ploidy, normalize=False,
        filter_threshold=0., multiscale_factor=1, beta=beta)

    counts, _, torm, _ = preprocess_counts(
        counts_raw=counts, lengths=lengths, ploidy=ploidy, normalize=False,
        filter_threshold=0., multiscale_factor=multiscale_factor, beta=beta,
        fullres_torm=fullres_torm_for_multiscale)

    multiscale_variances_true = multiscale_optimization.get_multiscale_variances_from_struct(
        X_true, lengths=lengths, multiscale_factor=multiscale_factor)

    obj = poisson.objective(
        X=X_true, counts=counts, alpha=alpha, lengths=lengths, bias=None,
        multiscale_factor=multiscale_factor,
        multiscale_variances=multiscale_variances_true)

    assert obj < -1e4