Python library for GraphBLAS: high-performance sparse linear algebra for scalable graph analytics
Matrix.from_values
, Vector.from_values
, matrix.to_values
, and vector_to_values
(#529)
Matrix.from_coo
, Vector.from_coo
, matrix.to_coo
, and vector.to_coo
insteadgb.io.from_numpy
and gb.io.to_numpy
(#528)
Matrix.from_dense
, Vector.from_dense
, matrix.to_dense
, and vector.to_dense
insteadgb.core.agg
(#527)
gb.core.operator.agg
insteadsemiring(A @ B @ C)
that applies semiring to both matmuls (#501)
monoid(A & B & C)
monoid(A | B & C)
A.power(0)
(#518)
gb.MAX_SIZE
, which is GrB_INDEX_MAX + 1
(#519)
Matrix(int, MAX_SIZE, MAX_SIZE)
ewise_union
(#517)agg.count
(#524)gb.io.draw
; use gb.viz.draw
instead (#485)A.ss.scan_rowwise
, A.ss.selectk_rowwise
, A.ss.compactify_rowwise
, and A.ss.*_columnwise
variants (#486)
A.ss.scan(order="row")
insteadgb.ss.config
options (#504)gb.ss.context
(#488)matrix.power(k)
to compute e.g. A @ A @ A @ ...
using repeated squaring with arbitrary semiring (#483)matrix.setdiag(x, k=0)
to set a diagonal of a matrix; supports mask and accum (#493)gb.ss.burble
to enable SuiteSparse:GraphBLAS diagnostics; may be used as a context (#514).thunk_type
attribute to SelectOp and IndexUnaryOp (#512)python-graphblas
! Notebook added that creates it (#506)scalar.__index__
for integral dtypes only (#481)python-graphblas
fast_matrix_market
1.6, 1.7, and 1.8awkward
2.2 and 2.3numpy
1.25scipy
1.11python-graphblas
and dependencies via pip.
python-graphblas
via pip is now:
pip install python-graphblas[suitesparse]
(also installs suitesparse-graphblas
)pip install python-graphblas[suitespars-udf]
(also installs numba
)pip install python-graphblas[default]
(also installs pandas
and scipy
)pip install python-graphblas[all]
(installs every optional dependency including for testing and viz)pip install python-graphblas
will keep its current behavior for about a year
suitesparse-graphblas
and numba
, which may be dropped as required dependencies in 2024.3.0numpy
, donfig
and pyyaml
register_new
and register_anonymous
(#446)userguide/operations.rst
to be copy/paste-able (added outputs) (#440)io.py
into multiple files (#448).github/workflows/imports.yml
now randomizes Python version and OS (#423)# NOT COVERED
, # BRANCH NOT COVERED
, and # FLAKY COVERAGE
sparse
0.12networkx
3.1, numpy
1.24, numba
0.57, pandas
2.0, fast_matrix_market
1.5graphblas.core.agg
namespace (#420)
graphblas.core.operator.agg
namespace insteadfast_matrix_market
(new optional dependency) (#391)python-suitesparse-graphblas
wheels on all OSes in CI (#385)PSA: suitesparse-graphblas
v7.4.3.2 now has wheels for Windows, MacOS, and Linux :tada:
Matrix.new
, Vector.new
, and Scalar.new
constructors (#380)
Matrix(...)
and Vector(...)
insteadrequire_monoid=
argument in ewise_add
(#377)io.from_scipy_sparse_matrix
and io.to_scipy_sparse_matrix
(#393)
io.from_scipy_sparse
insteadio.from_numpy
and io.to_numpy
(#382)
Vector.from_dense
and Matrix.to_dense
insteadfrom_dense
and to_dense
methods to Vector
and Matrix
to convert between NumPy arrays (#382)from_scalar
to Vector
and Matrix
to create fully dense objects from a scalar (#382).wait
now returns self
so it can be used with method-chaining (#379)op.is_idempotent
property to Monoids that means op(x, x) == x
(#388)python-suitesparse-graphblas
v7.4.3.1 added support for complex on Windows (GraphBLAS/python-suitesparse-graphblas#68)io.to_pydata_sparse(v)
now returns 1d sparse array for Vector inputs (#395).ss
namespaces (and deprecate previous locations)
erf
, erfc
, frexpe
, frexpx
, lgamma
, tgamma
, positioni
, positioni1
, positionj
, positionj1
firsti
, firsti1
, firstj
, firstj1
, secondi
, secondi1
, secondj
, secondj1
any_firsti
argmin
, argmax
, first
, last
, first_index
, last_index
gb.unary.ss.erf
or gb.agg.ss.argmin
insteadgb.unary.exp(1)
s.ewise_add(t)
pydata/sparse
objects (#347)Matrix.from_edgelist
and matrix.to_edgelist
to handle (row, col)
pairs or (row, col, val)
triples (#374)Vector.from_pairs
to handle (index, value)
pairs (#374)1.0
for values
in Vector.from_*
and Matrix.from_*
methods (#375)dev-requirements.txt
(#345)setuptools-git-versioning
for versions; remove use of versioneer.py
(#362)scripts/check_versions.sh
to easily see if there are new versions of dependencies (#366)setup.py
to pyproject.toml
(#366)ruff
linter to git pre-commit (#354, #373)black-jupyter
to git pre-commit (#366)--no-mapnumpy
to pytest
options and other CI improvements (#365)This is a pre-release; see 2023.1.0
**opts
keyword argumentsC(axb_method="gustavson", nthreads=8) << A @ B
A.reduce_scalar().new(nthreads=4)
graphblas/core/ss/descriptor.py:get_descriptor
for SuiteSparse:GraphBLAS descriptorsmask.mask
has been removed; use mask.parent
instead (#344)matrix.ss.diag
has been removed; use vector.diag
or Matrix.ss.build_diag
instead (#342)vector.ss.diag
has been removed; use matrix.diag
or Vector.ss.build_diag
instead (#342)vararg
function) for increased compatibility (#351)
GxB_Matrix_option_get_INT32
pygraphblas
conversions (such as matrix.to_pygraphblas
) (#348)
pygraphblas
being defunct and unsupportedenvironment.yml
for developers
sparse
and ipykernel
(#346)np.bool_
instead of np.bool8
(#349)