import numbers
import warnings
from deprecated import deprecated
from . import matrix
try:
import pandas as pd
except ImportError: # pragma: no cover
# pandas not installed
pass
try:
import anndata
except ImportError: # pragma: no cover
# anndata not installed
pass
[docs]def is_DataFrame(X):
try:
return isinstance(X, pd.DataFrame)
except NameError: # pragma: no cover
# pandas not installed
return False
[docs]def is_SparseDataFrame(X):
try:
pd
except NameError: # pragma: no cover
# pandas not installed
return False
with warnings.catch_warnings():
warnings.filterwarnings(
"ignore",
"The SparseDataFrame class is removed from pandas. Accessing it from the top-level namespace will also be removed in the next version",
FutureWarning,
)
try:
return isinstance(X, pd.SparseDataFrame)
except AttributeError:
return False
[docs]def is_Anndata(X):
try:
return isinstance(X, anndata.AnnData)
except NameError: # pragma: no cover
# anndata not installed
return False
[docs]def check_greater(x, **params):
"""Check that parameters are greater than x as expected
Parameters
----------
x : excepted boundary
Checks not run if parameters are greater than x
Raises
------
ValueError : unacceptable choice of parameters
"""
for p in params:
if not isinstance(params[p], numbers.Number) or params[p] <= x:
raise ValueError("Expected {} > {}, got {}".format(p, x, params[p]))
[docs]def check_positive(**params):
"""Check that parameters are positive as expected
Raises
------
ValueError : unacceptable choice of parameters
"""
return check_greater(0, **params)
[docs]def check_int(**params):
"""Check that parameters are integers as expected
Raises
------
ValueError : unacceptable choice of parameters
"""
for p in params:
if not isinstance(params[p], numbers.Integral):
raise ValueError("Expected {} integer, got {}".format(p, params[p]))
[docs]def check_if_not(x, *checks, **params):
"""Run checks only if parameters are not equal to a specified value
Parameters
----------
x : excepted value
Checks not run if parameters equal x
checks : function
Unnamed arguments, check functions to be run
params : object
Named arguments, parameters to be checked
Raises
------
ValueError : unacceptable choice of parameters
"""
for p in params:
if params[p] is not x and params[p] != x:
[check(**{p: params[p]}) for check in checks]
[docs]def check_in(choices, **params):
"""Checks parameters are in a list of allowed parameters
Parameters
----------
choices : array-like, accepted values
params : object
Named arguments, parameters to be checked
Raises
------
ValueError : unacceptable choice of parameters
"""
for p in params:
if params[p] not in choices:
raise ValueError(
"{} value {} not recognized. Choose from {}".format(
p, params[p], choices
)
)
[docs]def check_between(v_min, v_max, **params):
"""Checks parameters are in a specified range
Parameters
----------
v_min : float, minimum allowed value (inclusive)
v_max : float, maximum allowed value (inclusive)
params : object
Named arguments, parameters to be checked
Raises
------
ValueError : unacceptable choice of parameters
"""
check_greater(v_min, v_max=v_max)
for p in params:
if params[p] < v_min or params[p] > v_max:
raise ValueError(
"Expected {} between {} and {}, "
"got {}".format(p, v_min, v_max, params[p])
)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.if_sparse instead")
def if_sparse(*args, **kwargs):
return matrix.if_sparse(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.sparse_minimum instead")
def sparse_minimum(*args, **kwargs):
return matrix.sparse_minimum(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.sparse_maximum instead")
def sparse_maximum(*args, **kwargs):
return matrix.sparse_maximum(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.elementwise_minimum instead")
def elementwise_minimum(*args, **kwargs):
return matrix.elementwise_minimum(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.elementwise_maximum instead")
def elementwise_maximum(*args, **kwargs):
return matrix.elementwise_maximum(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.dense_set_diagonal instead")
def dense_set_diagonal(*args, **kwargs):
return matrix.dense_set_diagonal(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.sparse_set_diagonal instead")
def sparse_set_diagonal(*args, **kwargs):
return matrix.sparse_set_diagonal(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.set_diagonal instead")
def set_diagonal(*args, **kwargs):
return matrix.set_diagonal(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.set_submatrix instead")
def set_submatrix(*args, **kwargs):
return matrix.set_submatrix(*args, **kwargs)
[docs]@deprecated(
version="1.5.0", reason="Use graphtools.matrix.sparse_nonzero_discrete instead"
)
def sparse_nonzero_discrete(*args, **kwargs):
return matrix.sparse_nonzero_discrete(*args, **kwargs)
[docs]@deprecated(
version="1.5.0", reason="Use graphtools.matrix.dense_nonzero_discrete instead"
)
def dense_nonzero_discrete(*args, **kwargs):
return matrix.dense_nonzero_discrete(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.nonzero_discrete instead")
def nonzero_discrete(*args, **kwargs):
return matrix.nonzero_discrete(*args, **kwargs)
[docs]@deprecated(version="1.5.0", reason="Use graphtools.matrix.to_array instead")
def to_array(*args, **kwargs):
return matrix.to_array(*args, **kwargs)
[docs]@deprecated(
version="1.5.0", reason="Use graphtools.matrix.matrix_is_equivalent instead"
)
def matrix_is_equivalent(*args, **kwargs):
return matrix.matrix_is_equivalent(*args, **kwargs)