Source code for limix.qc._unique

[docs]def unique_variants(X): """ Filters out variants with the same genetic profile. Parameters ---------- X : array_like Samples-by-variants matrix of genotype values. Returns ------- genotype : ndarray Genotype array with unique variants. Example ------- .. doctest:: >>> from numpy.random import RandomState >>> from numpy import kron, ones, sort >>> from limix.qc import unique_variants >>> random = RandomState(1) >>> >>> N = 4 >>> X = kron(random.randn(N, 3) < 0, ones((1, 2))) >>> >>> print(X) # doctest: +FLOAT_CMP [[0. 0. 1. 1. 1. 1.] [1. 1. 0. 0. 1. 1.] [0. 0. 1. 1. 0. 0.] [1. 1. 0. 0. 1. 1.]] >>> >>> print(unique_variants(X)) # doctest: +FLOAT_CMP [[0. 1. 1.] [1. 1. 0.] [0. 0. 1.] [1. 1. 0.]] """ from limix._bits import dask import numpy as np if dask.is_array(X): import dask.array as da dot = da.dot unique = da.unique else: dot = np.dot unique = np.unique u = np.random.rand(X.shape[0]) i = unique(dot(u, X), return_index=True)[1] return X[:, i]