Skip to content

Commit

Permalink
change the dot notation
Browse files Browse the repository at this point in the history
  • Loading branch information
jkanche committed Jan 25, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 9663e4f commit e670c9a
Showing 5 changed files with 27 additions and 48 deletions.
1 change: 1 addition & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -50,6 +50,7 @@ python_requires = >=3.8
install_requires =
importlib-metadata; python_version<"3.8"
numpy
biocutils


[options.packages.find]
16 changes: 6 additions & 10 deletions src/delayedarray/chunk_shape.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from functools import singledispatch
from typing import Any, Tuple
from numpy import ndarray
from biocutils.package_utils import is_package_installed

from .SparseNdarray import SparseNdarray

@@ -51,28 +52,23 @@ def chunk_shape_SparseNdarray(x: SparseNdarray):


# If scipy is installed, we add all the methods for the various scipy.sparse matrices.
has_sparse = False
try:
import scipy.sparse
has_sparse = True
except:
pass

if is_package_installed("scipy"):
import scipy.sparse as sp

if has_sparse:
@chunk_shape.register
def chunk_shape_csc_matrix(x: scipy.sparse.csc_matrix):
def chunk_shape_csc_matrix(x: sp.csc_matrix):
"""See :py:meth:`~delayedarray.chunk_shape.chunk_shape`."""
return (x.shape[0], 1)


@chunk_shape.register
def chunk_shape_csr_matrix(x: scipy.sparse.csr_matrix):
def chunk_shape_csr_matrix(x: sp.csr_matrix):
"""See :py:meth:`~delayedarray.chunk_shape.chunk_shape`."""
return (1, x.shape[1])


@chunk_shape.register
def chunk_shape_coo_matrix(x: scipy.sparse.coo_matrix):
def chunk_shape_coo_matrix(x: sp.coo_matrix):
"""See :py:meth:`~delayedarray.chunk_shape.chunk_shape`."""
return x.shape # ???? well, let's just do our best.
23 changes: 8 additions & 15 deletions src/delayedarray/extract_dense_array.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from functools import singledispatch
from numpy import array, ndarray, ix_, asfortranarray
from typing import Any, Optional, Tuple, Sequence
from biocutils.package_utils import is_package_installed

from ._subset import _spawn_indices, _is_subset_noop
from .SparseNdarray import SparseNdarray, _extract_dense_array_from_SparseNdarray
@@ -58,17 +59,9 @@ def _sanitize_to_fortran(x):
else:
return asfortranarray(x)


# If scipy is installed, we add all the methods for the various scipy.sparse matrices.
has_sparse = False
try:
import scipy.sparse
has_sparse = True
except:
pass


if has_sparse:
if is_package_installed("scipy"):
import scipy.sparse as sp

def _extract_dense_array_sparse(x, subset: Optional[Tuple[Sequence[int], ...]] = None):
if _is_subset_noop(x.shape, subset):
tmp = x
@@ -77,21 +70,21 @@ def _extract_dense_array_sparse(x, subset: Optional[Tuple[Sequence[int], ...]] =
return tmp.toarray(order="F")

@extract_dense_array.register
def extract_dense_array_csc_matrix(x: scipy.sparse.csc_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
def extract_dense_array_csc_matrix(x: sp.csc_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
"""See :py:meth:`~delayedarray.extract_dense_array.extract_dense_array`."""
return _extract_dense_array_sparse(x, subset)

@extract_dense_array.register
def extract_dense_array_csr_matrix(x: scipy.sparse.csr_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
def extract_dense_array_csr_matrix(x: sp.csr_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
"""See :py:meth:`~delayedarray.extract_dense_array.extract_dense_array`."""
return _extract_dense_array_sparse(x, subset)

@extract_dense_array.register
def extract_dense_array_coo_matrix(x: scipy.sparse.coo_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
def extract_dense_array_coo_matrix(x: sp.coo_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
"""See :py:meth:`~delayedarray.extract_dense_array.extract_dense_array`."""
return _extract_dense_array_sparse(x, subset)

@extract_dense_array.register
def extract_dense_array_sparse_array(x: scipy.sparse.sparray, subset: Optional[Tuple[Sequence[int], ...]] = None):
def extract_dense_array_sparse_array(x: sp.sparray, subset: Optional[Tuple[Sequence[int], ...]] = None):
"""See :py:meth:`~delayedarray.extract_dense_array.extract_dense_array`."""
return _extract_dense_array_sparse(x, subset)
19 changes: 6 additions & 13 deletions src/delayedarray/extract_sparse_array.py
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
from numpy import array, ndarray, ix_
from bisect import bisect_left
from typing import Any, Optional, Tuple, Sequence
from biocutils.package_utils import is_package_installed

from ._subset import _spawn_indices, _is_subset_noop, _is_subset_consecutive
from .SparseNdarray import SparseNdarray, _extract_sparse_array_from_SparseNdarray
@@ -44,25 +45,17 @@ def extract_sparse_array_SparseNdarray(x: SparseNdarray, subset: Optional[Tuple[
else:
return _extract_sparse_array_from_SparseNdarray(x, subset)

if is_package_installed("scipy"):
import scipy.sparse as sp

# If scipy is installed, we add all the methods for the various scipy.sparse matrices.
has_sparse = False
try:
import scipy.sparse
has_sparse = True
except:
pass


if has_sparse:
def _set_empty_contents(contents):
for x in contents:
if x is not None:
return contents
return contents

@extract_sparse_array.register
def extract_sparse_array_csc_matrix(x: scipy.sparse.csc_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
def extract_sparse_array_csc_matrix(x: sp.csc_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
"""See :py:meth:`~delayedarray.extract_sparse_array.extract_sparse_array`."""
if subset is None:
subset = _spawn_indices(x.shape)
@@ -120,7 +113,7 @@ def extract_sparse_array_csc_matrix(x: scipy.sparse.csc_matrix, subset: Optional
return SparseNdarray((*final_shape,), new_contents, dtype=x.dtype, index_dtype=x.indices.dtype, check=False)

@extract_sparse_array.register
def extract_sparse_array_csr_matrix(x: scipy.sparse.csr_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
def extract_sparse_array_csr_matrix(x: sp.csr_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
"""See :py:meth:`~delayedarray.extract_sparse_array.extract_sparse_array`."""
if subset is None:
subset = _spawn_indices(x.shape)
@@ -180,7 +173,7 @@ def extract_sparse_array_csr_matrix(x: scipy.sparse.csr_matrix, subset: Optional
return SparseNdarray((*final_shape,), new_contents, dtype=x.dtype, index_dtype=x.indices.dtype, check=False)

@extract_sparse_array.register
def extract_sparse_array_coo_matrix(x: scipy.sparse.coo_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
def extract_sparse_array_coo_matrix(x: sp.coo_matrix, subset: Optional[Tuple[Sequence[int], ...]] = None):
"""See :py:meth:`~delayedarray.extract_sparse_array.extract_sparse_array`."""
if subset is None:
subset = _spawn_indices(x.shape)
16 changes: 6 additions & 10 deletions src/delayedarray/is_sparse.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from functools import singledispatch
from typing import Any
from biocutils.package_utils import is_package_installed

from .SparseNdarray import SparseNdarray

@@ -29,26 +30,21 @@ def is_sparse_SparseNdarray(x: SparseNdarray):


# If scipy is installed, we add all the methods for the various scipy.sparse matrices.
has_sparse = False
try:
import scipy.sparse
has_sparse = True
except:
pass

if is_package_installed("scipy"):
import scipy.sparse as sp

if has_sparse:
@is_sparse.register
def is_sparse_csc_matrix(x: scipy.sparse.csc_matrix):
def is_sparse_csc_matrix(x: sp.csc_matrix):
"""See :py:meth:`~delayedarray.is_sparse.is_sparse`."""
return True

@is_sparse.register
def is_sparse_csr_matrix(x: scipy.sparse.csr_matrix):
def is_sparse_csr_matrix(x: sp.csr_matrix):
"""See :py:meth:`~delayedarray.is_sparse.is_sparse`."""
return True

@is_sparse.register
def is_sparse_coo_matrix(x: scipy.sparse.coo_matrix):
def is_sparse_coo_matrix(x: sp.coo_matrix):
"""See :py:meth:`~delayedarray.is_sparse.is_sparse`."""
return True

0 comments on commit e670c9a

Please sign in to comment.