Description
Currently, graphblas_algorithms.Graph
objects only have a single edge attribute, and the "weight" parameters are ignored when passed a Graph object from our library (it's used when passed a networkx graph). We should strive to match networkx, so we should allow multi-property graphs and handle weight parameters.
To do this, it probably makes the most sense to use multiple graphblas matrices to hold edge data. One matrix should be boolean of all True to indicate the structure, and then we should have a new matrix for each edge property (which may have fewer elements than the structural matrix).
We should also consider how this will affect caching of properties (which probably needs reconsidered anyway). Perhaps we should create a pseudo-syntax (one that doesn't use eval
) such as A.select(tril)
for structural and A[myweight].select(tril)
for a property.