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
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
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