Repository: python-graphblas/python-graphblas

Issue:
PERF: make `gb.io.from_scipy_sparse_matrix` faster
xref: https://github.com/GraphBLAS/python-suitesparse-graphblas/issues/34

Our data conversions in `grblas.io` could use some love in general.  But, an easy optimization we could do is to use e.g. `Matrix.ss.import_csr` in `grblas.io.from_scipy_sparse_matrix` instead of always converting the scipy matrix to COO.

@steffen-sch, any interest?

Discussion:
coveralls: 
[![Coverage Status](https://coveralls.io/builds/49745674/badge)](https://coveralls.io/builds/49745674)

Coverage decreased (-0.09%) to 99.228% when pulling **67818466447fadf153bcc3b0bf3ab4a3ad8c5ac7 on eriknw:to_from_scipy_sparse** into **ececafcef1ee254761d9235037814c2a2ef7b081 on python-graphblas:main**.


Patch:
diff --git a/README.md b/README.md
index fa87b15..b7800e5 100644
--- a/README.md
+++ b/README.md
@@ -172,8 +172,8 @@ A = gb.io.from_numpy(m)
 m = gb.io.to_numpy(A)
 
 # scipy.sparse matrices
-A = gb.io.from_scipy_sparse_matrix(m)
-m = gb.io.to_scipy_sparse_matrix(m, format='csr')
+A = gb.io.from_scipy_sparse(m)
+m = gb.io.to_scipy_sparse(m, format='csr')
 
 # networkx graphs
 A = gb.io.from_networkx(g)
diff --git a/docs/index.rst b/docs/index.rst
index 6f9fc9d..dc05d52 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -212,8 +212,8 @@ Import/Export connectors to the Python ecosystem
     m = gb.io.to_numpy(A)
 
     # scipy.sparse matrices
-    A = gb.io.from_scipy_sparse_matrix(m)
-    m = gb.io.to_scipy_sparse_matrix(m, format='csr')
+    A = gb.io.from_scipy_sparse(m)
+    m = gb.io.to_scipy_sparse(m, format='csr')
 
     # networkx graphs
     A = gb.io.from_networkx(g)
diff --git a/graphblas/io.py b/graphblas/io.py
index 83495da..8cb4bbd 100644
--- a/graphblas/io.py
+++ b/graphblas/io.py
@@ -1,3 +1,7 @@
+import warnings
+
+import numpy as np
+
 from . import Matrix, Vector, backend
 from .dtypes import lookup_dtype
 from .exceptions import GraphblasException
@@ -74,34 +78,81 @@ def from_numpy(m):
         raise GraphblasException("m.ndim must be <= 2")
 
     try:
-        from scipy.sparse import coo_matrix, csr_matrix
+        from scipy.sparse import coo_array, csr_array
     except ImportError:  # pragma: no cover
         raise ImportError("scipy is required to import from numpy") from None
 
     if m.ndim == 1:
-        ss = csr_matrix(m)
-        _, size = ss.shape
+        A = csr_array(m)
+        _, size = A.shape
         dtype = lookup_dtype(m.dtype)
-        g = Vector.from_values(ss.indices, ss.data, size=size, dtype=dtype)
+        g = Vector.from_values(A.indices, A.data, size=size, dtype=dtype)
         return g
     else:
-        ss = coo_matrix(m)
-        return from_scipy_sparse_matrix(ss)
+        A = coo_array(m)
+        return from_scipy_sparse(A)
 
 
 def from_scipy_sparse_matrix(m, *, dup_op=None, name=None):
     """
     dtype is inferred from m.dtype
     """
-    ss = m.tocoo()
-    nrows, ncols = ss.shape
+    warnings.warn(
+        "`from_scipy_sparse_matrix` is deprecated; please use `from_scipy_sparse` instead.",
+        DeprecationWarning,
+    )
+    A = m.tocoo()
+    nrows, ncols = A.shape
     dtype = lookup_dtype(m.dtype)
     g = Matrix.from_values(
-        ss.row, ss.col, ss.data, nrows=nrows, ncols=ncols, dtype=dtype, dup_op=dup_op, name=name
+        A.row, A.col, A.data, nrows=nrows, ncols=ncols, dtype=dtype, dup_op=dup_op, name=name
     )
     return g
 
 
+def from_scipy_sparse(A, *, dup_op=None, name=None):
+    """Create a Matrix from a scipy.sparse array or matrix.
+
+    Input data in "csr" or "csc" format will be efficient when importing with SuiteSparse:GraphBLAS
+    """
+    nrows, ncols = A.shape
+    dtype = lookup_dtype(A.dtype)
+    if A.nnz == 0:
+        return Matrix(dtype, nrows=nrows, ncols=ncols, name=name)
+    if backend == "suitesparse" and A.format in {"csr", "csc"}:
+        data = A.data
+        is_iso = (data[[0]] == data).all()
+        if is_iso:
+            data = data[[0]]
+        if A.format == "csr":
+            return Matrix.ss.import_csr(
+                nrows=nrows,
+                ncols=ncols,
+                indptr=A.indptr,
+                col_indices=A.indices,
+                values=data,
+                is_iso=is_iso,
+                sorted_cols=getattr(A, "_has_sorted_indices", False),
+                name=name,
+            )
+        else:
+            return Matrix.ss.import_csc(
+                nrows=nrows,
+                ncols=ncols,
+                indptr=A.indptr,
+                row_indices=A.indices,
+                values=data,
+                is_iso=is_iso,
+                sorted_rows=getattr(A, "_has_sorted_indices", False),
+                name=name,
+            )
+    if A.format != "coo":
+        A = A.tocoo()
+    return Matrix.from_values(
+        A.row, A.col, A.data, nrows=nrows, ncols=ncols, dtype=dtype, dup_op=dup_op, name=name
+    )
+
+
 # TODO: add parameters to allow different networkx classes and attribute names
 def to_networkx(m):
     import networkx as nx
@@ -118,18 +169,22 @@ def to_numpy(m):
     except ImportError:  # pragma: no cover
         raise ImportError("scipy is required to export to numpy") from None
     if output_type(m) is Vector:
-        return to_scipy_sparse_matrix(m).toarray()[0]
+        return to_scipy_sparse(m).toarray()[0]
     else:
-        sparse = to_scipy_sparse_matrix(m, "coo")
+        sparse = to_scipy_sparse(m, "coo")
         return sparse.toarray()
 
 
-def to_scipy_sparse_matrix(m, format="csr"):
+def to_scipy_sparse_matrix(m, format="csr"):  # pragma: no cover
     """
     format: str in {'bsr', 'csr', 'csc', 'coo', 'lil', 'dia', 'dok'}
     """
     import scipy.sparse as ss
 
+    warnings.warn(
+        "`to_scipy_sparse_matrix` is deprecated; please use `to_scipy_sparse` instead.",
+        DeprecationWarning,
+    )
     format = format.lower()
     if output_type(m) is Vector:
         indices, data = m.to_values()
@@ -149,6 +204,55 @@ def to_scipy_sparse_matrix(m, format="csr"):
     return rv.asformat(format)
 
 
+def to_scipy_sparse(A, format="csr"):
+    """Create a scipy.sparse array (not matrix) from a GraphBLAS Matrix or Vector
+
+    Zero values will not be included in the scipy.sparse array.
+
+    Parameters
+    ----------
+    format : str in {'bsr', 'csr', 'csc', 'coo', 'lil', 'dia', 'dok'}
+    """
+    import scipy.sparse as ss
+
+    format = format.lower()
+    if format not in {"bsr", "csr", "csc", "coo", "lil", "dia", "dok"}:
+        raise ValueError(f"Invalid format: {format}")
+    if output_type(A) is Vector:
+        indices, data = A.to_values()
+        if format == "csc":
+            return ss.csc_array((data, indices, [0, len(data)]), shape=(A._size, 1))
+        else:
+            rv = ss.csr_array((data, indices, [0, len(data)]), shape=(1, A._size))
+            if format == "csr":
+                return rv
+    elif backend == "suitesparse" and format in {"csr", "csc"}:
+        if A._is_transposed:
+            info = A.T.ss.export("csc" if format == "csr" else "csr", sort=True)
+            if "col_indices" in info:
+                info["row_indices"] = info["col_indices"]
+            else:
+                info["col_indices"] = info["row_indices"]
+        else:
+            info = A.ss.export(format, sort=True)
+        if info["is_iso"]:
+            info["values"] = np.broadcast_to(info["values"], (A._nvals,))
+        if format == "csr":
+            return ss.csr_array(
+                (info["values"], info["col_indices"], info["indptr"]), shape=A.shape
+            )
+        else:
+            return ss.csc_array(
+                (info["values"], info["row_indices"], info["indptr"]), shape=A.shape
+            )
+    else:
+        rows, cols, data = A.to_values()
+        rv = ss.coo_array((data, (rows, cols)), shape=A.shape)
+        if format == "coo":
+            return rv
+    return rv.asformat(format)
+
+
 def mmread(source, *, dup_op=None, name=None):
     """Read the contents of a Matrix Market filename or file into a new Matrix.
 
@@ -160,11 +264,11 @@ def mmread(source, *, dup_op=None, name=None):
     """
     try:
         from scipy.io import mmread
-        from scipy.sparse import coo_matrix
+        from scipy.sparse import isspmatrix_coo
     except ImportError:  # pragma: no cover
         raise ImportError("scipy is required to read Matrix Market files") from None
     array = mmread(source)
-    if isinstance(array, coo_matrix):
+    if isspmatrix_coo(array):
         nrows, ncols = array.shape
         return Matrix.from_values(
             array.row, array.col, array.data, nrows=nrows, ncols=ncols, dup_op=dup_op, name=name
@@ -183,15 +287,8 @@ def mmwrite(target, matrix, *, comment="", field=None, precision=None, symmetry=
         from scipy.io import mmwrite
     except ImportError:  # pragma: no cover
         raise ImportError("scipy is required to write Matrix Market files") from None
-
-    # Note: it would be preferable to write the data in full format if it is indeed full.
-    #       However, there may be a bug: https://github.com/scipy/scipy/issues/13634
-    #
-    # SS, SuiteSparse-specific: format
-    # fmt = matrix.ss.format
-    # if fmt == 'fullr' or fmt == 'fullc':
-    #    array = matrix.ss.export(format=fmt)['values']
-    # else:
-
-    array = to_scipy_sparse_matrix(matrix, format="coo")
+    if backend == "suitesparse" and matrix.ss.format in {"fullr", "fullc"}:
+        array = matrix.ss.export()["values"]
+    else:
+        array = to_scipy_sparse(matrix, format="coo")
     mmwrite(target, array, comment=comment, field=field, precision=precision, symmetry=symmetry)
diff --git a/notebooks/Connected Components -- FastSV.ipynb b/notebooks/Connected Components -- FastSV.ipynb
index dcb0c8b..29f8dd7 100644
--- a/notebooks/Connected Components -- FastSV.ipynb
+++ b/notebooks/Connected Components -- FastSV.ipynb
@@ -18,7 +18,7 @@
    "source": [
     "import numpy as np\n",
     "import pandas as pd\n",
-    "from scipy.sparse import coo_matrix, eye\n",
+    "from scipy.sparse import coo_array, eye\n",
     "import networkx as nx\n",
     "import matplotlib.pyplot as plt\n",
     "import graphblas\n",
@@ -83,7 +83,7 @@
    },
    "outputs": [],
    "source": [
-    "A = coo_matrix((data, (rows, cols)), shape=(12, 12)).tolil()\n",
+    "A = coo_array((data, (rows, cols)), shape=(12, 12)).tolil()\n",
     "A[cols, rows] = A[rows, cols]  # symmetrize matrix\n",
     "A = A.tocoo()"
    ]
@@ -103,20 +103,9 @@
     "tags": []
    },
    "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/tmp/ipykernel_20958/1209887720.py:2: DeprecationWarning: \n",
-      "\n",
-      "The scipy.sparse array containers will be used instead of matrices\n",
-      "in Networkx 3.0. Use `from_scipy_sparse_array` instead.\n",
-      "  G = nx.convert_matrix.from_scipy_sparse_matrix(A)\n"
-     ]
-    },
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -127,7 +116,7 @@
    ],
    "source": [
     "# Draw A using spring layout which may even reveal the connected components\n",
-    "G = nx.convert_matrix.from_scipy_sparse_matrix(A)\n",
+    "G = nx.convert_matrix.from_scipy_sparse_array(A)\n",
     "layout = nx.drawing.layout.spring_layout(G, k=0.6, scale=1, threshold=1e-10)\n",
     "nx.draw_networkx(G, with_labels=True, node_size=500, font_color=\"w\", pos=layout)"
    ]
@@ -148,7 +137,7 @@
    },
    "outputs": [],
    "source": [
-    "A = gio.from_scipy_sparse_matrix(A, name=\"A\")\n",
+    "A = gio.from_scipy_sparse(A, name=\"A\")\n",
     "# Size of the sparse matrix is 12x12 with 22 non-zero elements of type INT64"
    ]
   },
@@ -526,7 +515,7 @@
    "outputs": [
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -767,8 +756,8 @@
        "\"parents\"  nvals  size   dtype  format\n",
        "gb.Vector      0    12  UINT32  sparse\n",
        "--------------------------------------\n",
-       " 0  1  2  3  4  5  6  7  8  9  10 11\n",
-       "                                    "
+       "index 0  1  2  3  4  5  6  7  8  9  10 11\n",
+       "value                                    "
       ]
      },
      "execution_count": 10,
@@ -951,8 +940,8 @@
        "\"modified?\"  nvals  size  dtype  format\n",
        "gb.Vector        0    12   BOOL  sparse\n",
        "---------------------------------------\n",
-       " 0  1  2  3  4  5  6  7  8  9  10 11\n",
-       "                                    "
+       "index 0  1  2  3  4  5  6  7  8  9  10 11\n",
+       "value                                    "
       ]
      },
      "execution_count": 11,
@@ -1153,8 +1142,8 @@
        "\"parents\"  nvals  size   dtype  format\n",
        "gb.Vector     12    12  UINT32    full\n",
        "--------------------------------------\n",
-       " 0  1  2  3  4  5  6  7  8  9   10  11\n",
-       "  0  1  2  3  4  5  6  7  8  9  10  11"
+       "index 0  1  2  3  4  5  6  7  8  9   10  11\n",
+       "value  0  1  2  3  4  5  6  7  8  9  10  11"
       ]
      },
      "execution_count": 13,
@@ -1357,8 +1346,8 @@
        "\"Minimum grandparent\"  nvals  size   dtype  format\n",
        "gb.Vector                 12    12  UINT32    full\n",
        "--------------------------------------------------\n",
-       " 0  1  2  3  4  5  6  7  8  9  10 11\n",
-       "  0  0  0  0  2  2  6  6  6  9  9  9"
+       "index 0  1  2  3  4  5  6  7  8  9  10 11\n",
+       "value  0  0  0  0  2  2  6  6  6  9  9  9"
       ]
      },
      "execution_count": 15,
@@ -1701,8 +1690,11 @@
        "\"modified?\"  nvals  size  dtype  format\n",
        "gb.Vector       12    12   BOOL    full\n",
        "---------------------------------------\n",
-       "     0     1     2     3     4     5      6     7     8      9     10    11\n",
-       "  False  True  True  True  True  True  False  True  True  False  True  True"
+       "index     0     1     2     3     4     5      6     7     8      9     10  \\\n",
+       "value  False  True  True  True  True  True  False  True  True  False  True   \n",
+       "\n",
+       "index    11  \n",
+       "value  True  "
       ]
      },
      "execution_count": 22,
@@ -2033,8 +2025,8 @@
        "\"parents\"  nvals  size  dtype  format\n",
        "gb.Vector     12    12  INT64    full\n",
        "-------------------------------------\n",
-       " 0  1  2  3  4  5  6  7  8  9  10 11\n",
-       "  0  0  0  0  0  0  6  6  6  9  9  9"
+       "index 0  1  2  3  4  5  6  7  8  9  10 11\n",
+       "value  0  0  0  0  0  0  6  6  6  9  9  9"
       ]
      },
      "execution_count": 27,
@@ -2074,7 +2066,7 @@
    "outputs": [
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -2156,7 +2148,7 @@
     {
      "data": {
       "text/plain": [
-       "array([ 6,  1,  7,  4,  0,  9, 10,  3,  8,  5,  2, 11])"
+       "array([ 4, 11, 10,  8,  7,  5,  3,  1,  9,  6,  2,  0])"
       ]
      },
      "execution_count": 30,
@@ -2389,9 +2381,9 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2401,7 +2393,6 @@
        "    <tr>\n",
        "      <th>1</th>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2412,6 +2403,7 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>2</th>\n",
@@ -2422,10 +2414,10 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "    </tr>\n",
        "    <tr>\n",
@@ -2434,18 +2426,17 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>4</th>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2453,6 +2444,7 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2465,11 +2457,11 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "    </tr>\n",
@@ -2478,6 +2470,7 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2485,15 +2478,14 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>7</th>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2513,8 +2505,8 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "    </tr>\n",
@@ -2525,8 +2517,8 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "      <td></td>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2550,6 +2542,7 @@
        "    </tr>\n",
        "    <tr>\n",
        "      <th>11</th>\n",
+       "      <td>1</td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
@@ -2561,7 +2554,6 @@
        "      <td></td>\n",
        "      <td></td>\n",
        "      <td></td>\n",
-       "      <td>1</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -2572,18 +2564,18 @@
        "gb.Matrix     12     12     12  INT64  csr (iso)\n",
        "------------------------------------------------\n",
        "   0  1  2  3  4  5  6  7  8  9  10 11\n",
-       "0                     1               \n",
-       "1      1                              \n",
-       "2                        1            \n",
-       "3               1                     \n",
-       "4   1                                 \n",
-       "5                              1      \n",
-       "6                                 1   \n",
-       "7            1                        \n",
-       "8                           1         \n",
-       "9                  1                  \n",
+       "0               1                     \n",
+       "1                                    1\n",
+       "2                                 1   \n",
+       "3                           1         \n",
+       "4                        1            \n",
+       "5                  1                  \n",
+       "6            1                        \n",
+       "7      1                              \n",
+       "8                              1      \n",
+       "9                     1               \n",
        "10        1                           \n",
-       "11                                   1"
+       "11  1                                 "
       ]
      },
      "execution_count": 32,
@@ -2652,20 +2644,9 @@
     "tags": []
    },
    "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/tmp/ipykernel_20958/873994875.py:2: DeprecationWarning: \n",
-      "\n",
-      "The scipy.sparse array containers will be used instead of matrices\n",
-      "in Networkx 3.0. Use `from_scipy_sparse_array` instead.\n",
-      "  G_perm = nx.convert_matrix.from_scipy_sparse_matrix(A_sci)\n"
-     ]
-    },
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -2675,8 +2656,8 @@
     }
    ],
    "source": [
-    "A_sci = gio.to_scipy_sparse_matrix(AA, format=\"csr\")\n",
-    "G_perm = nx.convert_matrix.from_scipy_sparse_matrix(A_sci)\n",
+    "A_sci = gio.to_scipy_sparse(AA, format=\"csr\")\n",
+    "G_perm = nx.convert_matrix.from_scipy_sparse_array(A_sci)\n",
     "layout_perm = {p[k]: layout[k] for k in layout}\n",
     "nx.draw_networkx(G_perm, with_labels=True, node_size=500, font_color=\"w\", pos=layout_perm)"
    ]
@@ -2832,17 +2813,17 @@
        "    <tr>\n",
        "      <th></th>\n",
        "      <td>0</td>\n",
+       "      <td>1</td>\n",
        "      <td>0</td>\n",
-       "      <td>2</td>\n",
-       "      <td>3</td>\n",
-       "      <td>0</td>\n",
-       "      <td>2</td>\n",
-       "      <td>0</td>\n",
-       "      <td>0</td>\n",
-       "      <td>3</td>\n",
+       "      <td>1</td>\n",
+       "      <td>4</td>\n",
+       "      <td>4</td>\n",
        "      <td>0</td>\n",
-       "      <td>3</td>\n",
-       "      <td>2</td>\n",
+       "      <td>4</td>\n",
+       "      <td>4</td>\n",
+       "      <td>1</td>\n",
+       "      <td>4</td>\n",
+       "      <td>4</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -2852,8 +2833,8 @@
        "\"parents\"  nvals  size  dtype  format\n",
        "gb.Vector     12    12  INT64    full\n",
        "-------------------------------------\n",
-       " 0  1  2  3  4  5  6  7  8  9  10 11\n",
-       "  0  0  2  3  0  2  0  0  3  0  3  2"
+       "index 0  1  2  3  4  5  6  7  8  9  10 11\n",
+       "value  0  1  0  1  4  4  0  4  4  1  4  4"
       ]
      },
      "execution_count": 35,
@@ -2995,7 +2976,7 @@
     {
      "data": {
       "text/plain": [
-       "array([ 8,  1,  7,  2,  9, 11,  5,  3,  4,  0,  6, 10])"
+       "array([ 5,  9,  4,  2, 10,  3,  7,  6,  8, 11,  0,  1])"
       ]
      },
      "execution_count": 40,
@@ -3064,20 +3045,9 @@
     "tags": []
    },
    "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/tmp/ipykernel_20958/2236542675.py:2: DeprecationWarning: \n",
-      "\n",
-      "The scipy.sparse array containers will be used instead of matrices\n",
-      "in Networkx 3.0. Use `from_scipy_sparse_array` instead.\n",
-      "  G_perm2 = nx.convert_matrix.from_scipy_sparse_matrix(AAA_sci)\n"
-     ]
-    },
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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\n",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
@@ -3087,8 +3057,8 @@
     }
    ],
    "source": [
-    "AAA_sci = gio.to_scipy_sparse_matrix(AAA, format=\"csr\")\n",
-    "G_perm2 = nx.convert_matrix.from_scipy_sparse_matrix(AAA_sci)\n",
+    "AAA_sci = gio.to_scipy_sparse(AAA, format=\"csr\")\n",
+    "G_perm2 = nx.convert_matrix.from_scipy_sparse_array(AAA_sci)\n",
     "layout_perm2 = {p2[k]: layout_perm[k] for k in layout_perm}\n",
     "nx.draw_networkx(G_perm2, with_labels=True, node_size=500, font_color=\"w\", pos=layout_perm2)"
    ]
@@ -3239,14 +3209,14 @@
        "      <td>0</td>\n",
        "      <td>2</td>\n",
        "      <td>0</td>\n",
-       "      <td>2</td>\n",
+       "      <td>4</td>\n",
+       "      <td>4</td>\n",
        "      <td>0</td>\n",
-       "      <td>2</td>\n",
-       "      <td>7</td>\n",
+       "      <td>4</td>\n",
        "      <td>0</td>\n",
+       "      <td>2</td>\n",
        "      <td>0</td>\n",
-       "      <td>7</td>\n",
-       "      <td>7</td>\n",
+       "      <td>2</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -3256,8 +3226,8 @@
        "\"parents\"  nvals  size  dtype  format\n",
        "gb.Vector     12    12  INT64    full\n",
        "-------------------------------------\n",
-       " 0  1  2  3  4  5  6  7  8  9  10 11\n",
-       "  0  0  2  0  2  0  2  7  0  0  7  7"
+       "index 0  1  2  3  4  5  6  7  8  9  10 11\n",
+       "value  0  0  2  0  4  4  0  4  0  2  0  2"
       ]
      },
      "execution_count": 44,
@@ -3333,7 +3303,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.12"
+   "version": "3.9.13"
   }
  },
  "nbformat": 4,
diff --git a/notebooks/Louvain.ipynb b/notebooks/Louvain.ipynb
index 20185ed..50a208e 100644
--- a/notebooks/Louvain.ipynb
+++ b/notebooks/Louvain.ipynb
@@ -12,7 +12,7 @@
     "import networkx as nx\n",
     "import matplotlib.pyplot as plt\n",
     "from collections import namedtuple\n",
-    "from scipy.sparse import csr_matrix\n",
+    "from scipy.sparse import csr_array\n",
     "import graphblas\n",
     "from graphblas import Matrix, Vector\n",
     "from graphblas import descriptor, dtypes\n",
diff --git a/setup.py b/setup.py
index 9d45063..c9af7b3 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ import versioneer
 
 extras_require = {
     "repr": ["pandas"],
-    "io": ["networkx", "scipy"],
+    "io": ["networkx", "scipy >=1.7.0"],
     "viz": ["matplotlib"],
     "test": ["pytest", "pandas"],
 }


Test patch:
diff --git a/graphblas/tests/test_io.py b/graphblas/tests/test_io.py
index 75fffc2..ae61759 100644
--- a/graphblas/tests/test_io.py
+++ b/graphblas/tests/test_io.py
@@ -24,23 +24,26 @@ def test_vector_to_from_numpy():
     a2 = gb.io.to_numpy(v)
     np.testing.assert_array_equal(a, a2)
 
-    csr = gb.io.to_scipy_sparse_matrix(v, "csr")
+    csr = gb.io.to_scipy_sparse(v, "csr")
     assert csr.nnz == 2
     assert ss.isspmatrix_csr(csr)
     np.testing.assert_array_equal(csr.toarray(), np.array([[0.0, 2.0, 4.1]]))
 
-    csc = gb.io.to_scipy_sparse_matrix(v, "csc")
+    csc = gb.io.to_scipy_sparse(v, "csc")
     assert csc.nnz == 2
     assert ss.isspmatrix_csc(csc)
     np.testing.assert_array_equal(csc.toarray(), np.array([[0.0, 2.0, 4.1]]).T)
 
     # default to csr-like
-    coo = gb.io.to_scipy_sparse_matrix(v, "coo")
+    coo = gb.io.to_scipy_sparse(v, "coo")
     assert coo.shape == csr.shape
     assert ss.isspmatrix_coo(coo)
     assert coo.nnz == 2
     np.testing.assert_array_equal(coo.toarray(), np.array([[0.0, 2.0, 4.1]]))
 
+    with pytest.warns(DeprecationWarning):
+        coo = gb.io.to_scipy_sparse_matrix(v, "coo")
+
 
 @pytest.mark.skipif("not ss")
 @pytest.mark.parametrize("a", [np.array([7, 0]), np.array([0, 0]), np.array([])])
@@ -50,9 +53,9 @@ def test_vector_to_from_numpy_correct_size(a):
     assert v.shape == a.shape
     b = gb.io.to_numpy(v)
     np.testing.assert_array_equal(a, b)
-    csr = gb.io.to_scipy_sparse_matrix(v, "csr")
+    csr = gb.io.to_scipy_sparse(v, "csr")
     np.testing.assert_array_equal(a[None, :], csr.toarray())
-    csc = gb.io.to_scipy_sparse_matrix(v, "csc")
+    csc = gb.io.to_scipy_sparse(v, "csc")
     np.testing.assert_array_equal(a[:, None], csc.toarray())
 
 
@@ -65,15 +68,15 @@ def test_matrix_to_from_numpy():
     np.testing.assert_array_equal(a, a2)
 
     for format in ["csr", "csc", "coo"]:
-        sparse = gb.io.to_scipy_sparse_matrix(M, format)
+        sparse = gb.io.to_scipy_sparse(M, format)
         assert getattr(ss, f"isspmatrix_{format}")(sparse)
         assert sparse.nnz == 3
         np.testing.assert_array_equal(sparse.toarray(), a)
-        M2 = gb.io.from_scipy_sparse_matrix(sparse)
+        M2 = gb.io.from_scipy_sparse(sparse)
         assert M.isequal(M2, check_dtype=True)
 
-    with pytest.raises(gb.exceptions.GraphblasException, match="Invalid format"):
-        gb.io.to_scipy_sparse_matrix(M, "bad format")
+    with pytest.raises(ValueError, match="Invalid format"):
+        gb.io.to_scipy_sparse(M, "bad format")
 
     with pytest.raises(gb.exceptions.GraphblasException, match="ndim must be"):
         gb.io.from_numpy(np.array([[[1.0, 0.0], [2.0, 3.7]]]))
@@ -254,13 +257,16 @@ def test_mmread_mmwrite():
 
 @pytest.mark.skipif("not ss")
 def test_from_scipy_sparse_duplicates():
-    a = ss.coo_matrix(([1, 2, 3, 4], ([0, 1, 2, 2], [2, 1, 0, 0])))
+    a = ss.coo_array(([1, 2, 3, 4], ([0, 1, 2, 2], [2, 1, 0, 0])))
     np.testing.assert_array_equal(a.toarray(), np.array([[0, 0, 1], [0, 2, 0], [7, 0, 0]]))
     with pytest.raises(ValueError, match="Duplicate indices found"):
-        gb.io.from_scipy_sparse_matrix(a)
-    a2 = gb.io.from_scipy_sparse_matrix(a, dup_op=gb.binary.plus)
+        gb.io.from_scipy_sparse(a)
+    a2 = gb.io.from_scipy_sparse(a, dup_op=gb.binary.plus)
     expected = gb.Matrix.from_values([0, 1, 2], [2, 1, 0], [1, 2, 7])
     assert a2.isequal(expected)
+    with pytest.warns(DeprecationWarning):
+        a3 = gb.io.from_scipy_sparse_matrix(a, dup_op=gb.binary.plus)
+    assert a3.isequal(expected)
 
 
 @pytest.mark.skipif("not ss")
@@ -279,3 +285,20 @@ def test_matrix_market_sparse_duplicates():
     a = gb.io.mmread(mm, dup_op=gb.binary.plus)
     expected = gb.Matrix.from_values([0, 1, 2], [2, 1, 0], [1, 2, 7])
     assert a.isequal(expected)
+
+
+@pytest.mark.skipif("not ss")
+def test_scipy_sparse():
+    a = np.arange(12).reshape(3, 4)
+    for a in [np.arange(12).reshape(3, 4), np.ones((3, 4)), np.zeros((3, 4))]:
+        for fmt in {"bsr", "csr", "csc", "coo", "lil", "dia", "dok"}:
+            sa = getattr(ss, f"{fmt}_array")(a)
+            A = gb.io.from_scipy_sparse(sa)
+            for M in [A, A.T.new().T]:
+                if fmt == "dia" and M.nvals > 0:  # "dia" format is weird
+                    assert sa.nnz == M.nrows * M.ncols
+                else:
+                    assert sa.nnz == M.nvals
+                assert sa.shape == M.shape
+                sa2 = gb.io.to_scipy_sparse(M, fmt)
+                assert (sa != sa2).nnz == 0