GitHub / python-graphblas / python-graphblas
Python library for GraphBLAS: high-performance sparse linear algebra for scalable graph analytics
JSON API: http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-graphblas%2Fpython-graphblas
PURL: pkg:github/python-graphblas/python-graphblas
Stars: 139
Forks: 15
Open issues: 68
License: apache-2.0
Language: Jupyter Notebook
Size: 3.74 MB
Dependencies parsed at: Pending
Created at: about 6 years ago
Updated at: 20 days ago
Pushed at: 23 days ago
Last synced at: 4 days ago
Commit Stats
Commits: 768
Authors: 11
Mean commits per author: 69.82
Development Distribution Score: 0.163
More commit stats: https://commits.ecosyste.ms/hosts/GitHub/repositories/python-graphblas/python-graphblas
Topics: complex-networks, graph-algorithms, graph-analysis, graph-datastructures, graph-theory, graphblas, linear-algebra, numba, pydata, python, python-wrapper, sparse, sparse-data, sparse-matrix, suitesparse
2023.1.0
2023.1.0
Deprecations
- Move operators specific to SuiteSparse:GraphBLAS to
.ssnamespaces (and deprecate previous locations)- Unary:
erf,erfc,frexpe,frexpx,lgamma,tgamma,positioni,positioni1,positionj,positionj1 - Binary:
firsti,firsti1,firstj,firstj1,secondi,secondi1,secondj,secondj1 - Semirings that use deprecated binary operators such as
any_firsti - Aggregators:
argmin,argmax,first,last,first_index,last_index - Use e.g.
gb.unary.ss.erforgb.agg.ss.argmininstead - Will be removed in version 2023.9.0 or later
- Unary:
Enhancements
- Support computation on scalars (#358)
gb.unary.exp(1)s.ewise_add(t)
- Add conversions to and from
pydata/sparseobjects (#347) - Add
Matrix.from_edgelistandmatrix.to_edgelistto handle(row, col)pairs or(row, col, val)triples (#374) - Add
Vector.from_pairsto handle(index, value)pairs (#374) - Add default of
1.0forvaluesinVector.from_*andMatrix.from_*methods (#375) - Add contributor guidelines and
dev-requirements.txt(#345) - Add more to FAQ documentation (#367)
- Give informative errors for bad descriptor options (#353)
Maintenance
- Use
setuptools-git-versioningfor versions; remove use ofversioneer.py(#362) - Determine supported dependency versions (#368)
- Add script
scripts/check_versions.shto easily see if there are new versions of dependencies (#366)
- Add script
- Move package metadata and build info from
setup.pytopyproject.toml(#366) - Add config for PyLint (not enabled by default) (#354, #369)
- Add
rufflinter to git pre-commit (#354, #373) - Add
black-jupyterto git pre-commit (#366) - New GitHub Action just for testing imports (#357)
- New GitHub Action for linting (#354, #359)
- Make readthedocs fail if there’s a warning building the docs (#361)
- Add
--no-mapnumpytopytestoptions and other CI improvements (#365) - Randomize versions of dependencies to test against (#368, #371)
Download
Download
2022.12.0
2022.12.0
Highlights
- Add implementation-specific descriptors! (#343)
- Descriptor customization is now fully exposed for all methods via
**optskeyword arguments - Example:
C(axb_method="gustavson", nthreads=8) << A @ B - Example:
A.reduce_scalar().new(nthreads=4) - See
graphblas/core/ss/descriptor.py:get_descriptorfor SuiteSparse:GraphBLAS descriptors - Other GraphBLAS implementations can have their own custom descriptors
- Descriptor customization is now fully exposed for all methods via
Expired deprecations
mask.maskhas been removed; usemask.parentinstead (#344)matrix.ss.diaghas been removed; usevector.diagorMatrix.ss.build_diaginstead (#342)vector.ss.diaghas been removed; usematrix.diagorVector.ss.build_diaginstead (#342)
Enhancements
- Update to require SuiteSparse:GraphBLAS 7.4.0 (#351)
- Remove use of GxB variadic functions (and
varargfunction) for increased compatibility (#351)- For example, we now use typed versions such as
GxB_Matrix_option_get_INT32
- For example, we now use typed versions such as
- Remove
pygraphblasconversions (such asmatrix.to_pygraphblas) (#348)- These have not been tested or working for a long time due to
pygraphblasbeing defunct and unsupported
- These have not been tested or working for a long time due to
- Update
environment.ymlfor developers- Add
sparseandipykernel(#346) - Add many optional dependencies not installed by default (#350)
- Add
Bug fixes
- Handle deprecations from NumPy 1.24, such as using
np.bool_instead ofnp.bool8(#349) - Support different architectures such as ARM by removing use of variadic functions (#351)
New contributors
- We welcomed @SultanOrazbayev as a new code contributor this release 🎉
Download
2022.11.1
2022.11.1
Deprecations
- Deprecate
A.ss.scan_rowwise,A.ss.compactify_rowwise,A.ss.selectk_rowwise(#336)- And
A.ss.scan_columnwise,A.ss.compactify_columnwise,A.ss.selectk_columnwise - Use e.g.
Matrix.ss.scan(order="columnwise")instead - Will be removed in version 2023.7.0 or later
- And
Enhancements
- Add GxB sort methods as e.g.
A.ss.sort(op.lt, order="rowwise")(#333) - Add vanilla recipe for index slicing (#341)
- This converts a Python slice to a full numpy array of indices
- Improve vanilla recipe of
ewise_unionto be a lazy expression (#337) - Add
"complete"option towaitmethods for multithreaded applications (#334) - Add DOI from Zenodo to README (#332)
- Add
environment.ymlin repo to create developer environment (#340) - Update “Development Status” in setup.py to “Production/Stable” (#339)
Bug fixes
- Fix environment for building docs so environment solving is faster (#338)
Download
2022.11.0
2022.11.0
Deprecations
- Deprecate
from_valuesandto_valuesfor Vector and Matrix (#331)- Use
from_cooandto_cooinstead - This is a major deprecation!
from_values/to_valueswill be removed in version 2023.9.0 or later next year
- Use
Enhancements
- Add
"suitesparse-vanilla"backend that does not use GxB methods (#307)- This still uses SuiteSparse:GraphBLAS, but will help us support other GraphBLAS implementations
- Improve
.ss.head()by using GxB iterators (#314) - Add
from_dictandto_dictmethods to Vector and Matrix (#313, #323) - Support
minandmaxbuiltins as valid operators (#322) - Add badge for Discord chat to README (#316)
- Update to SuiteSparse:GraphBLAS 7.3.2 (#321)
- Adds
gb.ss.about["openmp"], which indicates whether it was compiled with openmp
- Adds
Bug fixes
- Update binder environment (#318)
- Fix viz.draw (#320)
- Notebooks updated to not use deprecations (#327)
Download
2022.10.1
2022.10.1
Breaking changes
- Move
get_order,normalize_chunks, andMatrixArraytogb.core.utils- We think we’re happy with where things are now, so we’ll try not to move anymore
Highlights
- Update to work on
osx_arm64platform (and maybeppc64le) (#309) - Allow
Matrixobjects and expressions to be used in NetworkX 3.0 via dispatching (#311)- By adding
__networkx_plugin__ = "graphblas", NetworkX algorithms will soon dispatchMatrixas adjacency graph tographblas-algorithmsfor some algorithms
- By adding
Enhancements
- Allow UDTs to be assigned to every element with update syntax, such as
A << (1, 2, 3)(#299) - Allow array UDTs to be specified more easily as e.g.
"INT64[3, 3]"(#300) - Expose SuiteSparse’s
GxB_pack_HyperHashandGxB_unpack_HyperHash(#305)Y = A.ss.unpack_hyperhash()A.ss.pack_hyperhash(Y)
- Add Matrix methods to go to and from DCSR/DCSC (a.k.a. HyperCSR/HyperCSC) (#310)
A = Matrix.from_dcsr(compressed_rows, indptr, cols, values)compressed_cols, indptr, rows, values = A.to_dcsc()
- Add
gb.core.utils.ensure_typefor easier handling of expressions (#312)- For example, if you want a vector but allow vector expressions, you can do:
v = ensure_type(v, Vector)
- For example, if you want a vector but allow vector expressions, you can do:
- Use GxB_Matrix_reshape for
matrix.ss.flattenandvector.ss.reshapeand delete unnecessary code (#306) - Add
get_semiring(monoid, binaryop)togb.semiring.get_semiring(#312)get_semiringalready existed in (and will stay in)gb.core.operator
Bug fixes
- Always free SuiteSparse iterator when generator exits (#302)
- Don’t show object format (such as “csr”) in expression repr (to match HTML repr) (#303)
Download
2022.10.0
2022.10.0
Breaking changes
- Clean up main
graphblasnamespace by moving files togb.core- This may break existing code that used objects in files that were moved
Enhancements
- Update to SuiteSparse:GraphBLAS 7.3.0
- Rework
_repr_html_for expressions to be nicer (#282) - Import and export from CSR and CSC using GrB methods as e.g.
Matrix.from_csr(indptr, col_indices, values)(#288) - Import and export from
awkward-arrayasgb.io.to_awkward(x)andgb.io.from_awkward(x)(#280)
Bug fixes
- Fix
fminandfmaxissue with numba 0.56.2 and numpy 1.23 (#283) - Remove IndexUnary and Select operators from
gb.opnamespace (#286)
Download
2022.9.0
2022.9.0
Deprecations
gb.io.plotmoved togb.viz.plot
Enhancements
- Update to SuiteSparse:GraphBLAS 7.2.0
- Add docs website and improve some docstrings (#269, #273, #274)
- Add ZSTD compression option to
x.ss.serialize(#277) - Add
x.ss.reshapemethods to Vector and Matrix objects to change the shape while keeping all the values (#277)- Uses
GxB_Matrix_reshapeandGxB_Matrix_reshapeDup
- Uses
- Add options to not return rows, columns, or values, in
x.to_values(#276)rows, _, values = A.to_values(rows=True, columns=False, values=True)indices, _ = v.to_values(indices=True, values=False)- Excluding things can be faster when using SuiteSparse:GraphBLAS
- Add
clear=Falsekeyword todup; this is likeempty_like(#275) - Add
gb.viz.spyandgb.viz.datashadeto plot the sparsity pattern of a matrix (#279)gb.viz.spyusesmatplotlib.spyto create a static plotgb.viz.datashadeusesdatashaderviahvplotto create interactive plots
Download
2022.6.1
2022.6.1
Deprecations
gb.io.from_scipy_sparse_matrixandgb.io.to_scipy_sparse_matrix(#260)- Use
gb.io.from_scipy_sparseandgb.io.to_scipy_sparseinstead.
- Use
Enhancements
- Add
gb.ss.configandx.ss.configto control SuiteSparse-specific configuration options of objects (#258) - Add
gb.io.to_scipy_sparseandgb.io.from_scipy_sparse(#260) - Use
Recorder._repr_html_for rich display (#263) - Improved UDT to/from string (#256)
- Serialization with UDTs is still experimental and should not be relied upon!
- Automatic upload to PyPI 🤞
Download
2022.6.0
2022.6.0
- Add
.ss.serializeand.ss.deserializefor Matrix and Vector objects (#200)- This exposes SuiteSparse:GraphBLAS (de)serialize and supports compression
- It also supports UDTs
- Allow boolean objects to be used as value masks (#248)
- For example,
C(C < 5) << expr
- For example,
- Perform select with a mask or bool argument (#251)
- For example,
A.select(B.S)andA.select(C < 5)- These are implemented as recipes
A.select(A < 5)will be rewritten to the appropriate select operation (#242)
- For example,
- Assign many dense items at once, such as
v[[1, 2]] = [3, 4](#250)- Implemented as an efficient recipe
Download