An open API service providing repository metadata for many open source software ecosystems.

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

Releases
2023.1.0

2023.1.0

Deprecations

  • Move operators specific to SuiteSparse:GraphBLAS to .ss namespaces (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.erf or gb.agg.ss.argmin instead
    • Will be removed in version 2023.9.0 or later

Enhancements

  • Support computation on scalars (#358)
    • gb.unary.exp(1)
    • s.ewise_add(t)
  • Add conversions to and from pydata/sparse objects (#347)
  • Add Matrix.from_edgelist and matrix.to_edgelist to handle (row, col) pairs or (row, col, val) triples (#374)
  • Add Vector.from_pairs to handle (index, value) pairs (#374)
  • Add default of 1.0 for values in Vector.from_* and Matrix.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-versioning for versions; remove use of versioneer.py (#362)
  • Determine supported dependency versions (#368)
    • Add script scripts/check_versions.sh to easily see if there are new versions of dependencies (#366)
  • Move package metadata and build info from setup.py to pyproject.toml (#366)
  • Add config for PyLint (not enabled by default) (#354, #369)
  • Add ruff linter to git pre-commit (#354, #373)
  • Add black-jupyter to 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-mapnumpy to pytest options and other CI improvements (#365)
  • Randomize versions of dependencies to test against (#368, #371)
almost 3 years ago
Download
2023.1.0a0

2023.1.0a0 Pre-release

This is a pre-release; see 2023.1.0

almost 3 years ago
Download
2022.12.0

2022.12.0

Highlights

  • Add implementation-specific descriptors! (#343)
    • Descriptor customization is now fully exposed for all methods via **opts keyword arguments
    • Example: C(axb_method="gustavson", nthreads=8) << A @ B
    • Example: A.reduce_scalar().new(nthreads=4)
    • See graphblas/core/ss/descriptor.py:get_descriptor for SuiteSparse:GraphBLAS descriptors
    • Other GraphBLAS implementations can have their own custom descriptors

Expired deprecations

  • mask.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)

Enhancements

  • Update to require SuiteSparse:GraphBLAS 7.4.0 (#351)
  • Remove use of GxB variadic functions (and vararg function) for increased compatibility (#351)
    • For example, we now use typed versions such as GxB_Matrix_option_get_INT32
  • Remove pygraphblas conversions (such as matrix.to_pygraphblas) (#348)
    • These have not been tested or working for a long time due to pygraphblas being defunct and unsupported
  • Update environment.yml for developers
    • Add sparse and ipykernel (#346)
    • Add many optional dependencies not installed by default (#350)

Bug fixes

  • Handle deprecations from NumPy 1.24, such as using np.bool_ instead of np.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 🎉
almost 3 years ago
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

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_union to be a lazy expression (#337)
  • Add "complete" option to wait methods for multithreaded applications (#334)
  • Add DOI from Zenodo to README (#332)
  • Add environment.yml in 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)
almost 3 years ago
Download
2022.11.0

2022.11.0

Deprecations

  • Deprecate from_values and to_values for Vector and Matrix (#331)
    • Use from_coo and to_coo instead
    • This is a major deprecation!
    • from_values/to_values will be removed in version 2023.9.0 or later next year

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_dict and to_dict methods to Vector and Matrix (#313, #323)
  • Support min and max builtins 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

Bug fixes

  • Update binder environment (#318)
  • Fix viz.draw (#320)
  • Notebooks updated to not use deprecations (#327)
about 3 years ago
Download
2022.10.1

2022.10.1

Breaking changes

  • Move get_order, normalize_chunks, and MatrixArray to gb.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_arm64 platform (and maybe ppc64le) (#309)
  • Allow Matrix objects and expressions to be used in NetworkX 3.0 via dispatching (#311)
    • By adding __networkx_plugin__ = "graphblas", NetworkX algorithms will soon dispatch Matrix as adjacency graph to graphblas-algorithms for some algorithms

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_HyperHash and GxB_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_type for easier handling of expressions (#312)
    • For example, if you want a vector but allow vector expressions, you can do: v = ensure_type(v, Vector)
  • Use GxB_Matrix_reshape for matrix.ss.flatten and vector.ss.reshape and delete unnecessary code (#306)
  • Add get_semiring(monoid, binaryop) to gb.semiring.get_semiring (#312)
    • get_semiring already 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)
about 3 years ago
Download
2022.10.0

2022.10.0

Breaking changes

  • Clean up main graphblas namespace by moving files to gb.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-array as gb.io.to_awkward(x) and gb.io.from_awkward(x) (#280)

Bug fixes

  • Fix fmin and fmax issue with numba 0.56.2 and numpy 1.23 (#283)
  • Remove IndexUnary and Select operators from gb.op namespace (#286)
about 3 years ago
Download
2022.9.0

2022.9.0

Deprecations

  • gb.io.plot moved to gb.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.reshape methods to Vector and Matrix objects to change the shape while keeping all the values (#277)
    • Uses GxB_Matrix_reshape and GxB_Matrix_reshapeDup
  • 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=False keyword to dup; this is like empty_like (#275)
  • Add gb.viz.spy and gb.viz.datashade to plot the sparsity pattern of a matrix (#279)
    • gb.viz.spy uses matplotlib.spy to create a static plot
    • gb.viz.datashade uses datashader via hvplot to create interactive plots
about 3 years ago
Download
2022.6.1

2022.6.1

Deprecations

  • gb.io.from_scipy_sparse_matrix and gb.io.to_scipy_sparse_matrix (#260)
    • Use gb.io.from_scipy_sparse and gb.io.to_scipy_sparse instead.

Enhancements

  • Add gb.ss.config and x.ss.config to control SuiteSparse-specific configuration options of objects (#258)
  • Add gb.io.to_scipy_sparse and gb.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 🤞
over 3 years ago
Download
2022.6.0

2022.6.0

  • Add .ss.serialize and .ss.deserialize for 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
  • Perform select with a mask or bool argument (#251)
    • For example, A.select(B.S) and A.select(C < 5)
      • These are implemented as recipes
    • A.select(A < 5) will be rewritten to the appropriate select operation (#242)
  • Assign many dense items at once, such as v[[1, 2]] = [3, 4] (#250)
    • Implemented as an efficient recipe
over 3 years ago
Download