Skip to content

ecosystem: graphs and networks? #320

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mdeff opened this issue Jun 3, 2020 · 8 comments · Fixed by #374
Closed

ecosystem: graphs and networks? #320

mdeff opened this issue Jun 3, 2020 · 8 comments · Fixed by #374
Labels

Comments

@mdeff
Copy link
Contributor

mdeff commented Jun 3, 2020

Linear algebra, hence numpy, is a fundamental tool to analyze graphs (with spectral graph theory) and data on graphs (with abstract harmonic analysis). I'm co-maintaining the PyGSP (github), a package that implements these concepts in numpy (and scipy for sparse operations). (In machine learning, these tools are used for the trending graph neural networks.)

The main package for network analysis is NetworkX. Taking a network science POV, the package is not "array-like" so I don't know if it should be under a hypothetical "graphs & networks" group too.

As I'm obviously biased, I defer to your judgment whether this merits inclusion or not. I can also wait on #313 or prepare a PR. Last issue/PR for today I promise. ;)

@rgommers
Copy link
Member

rgommers commented Jun 3, 2020

Networks/graphs seems like a good topic to add. I think we have space for two more topics, to have a 2x8 grid. This could be one of them.

NetworkX is an obvious candidate. PyGSP does look like a sensible addition as well. I'm not very familiar with this field as a user, so other recommendations are very welcome.

@mdeff
Copy link
Contributor Author

mdeff commented Jun 3, 2020

Great! If non-array tools can be considered for inclusion, I'll also suggest graph-tool. It has the same NetSci POV as NetworkX, but with a C++ backend built on boost (NetworkX is pure python).

My biased take about PyGSP:

  • pro: graphs/networks (and meshes, simplicial complexes, hypergraphs) are simple yet ubiquitus structures in CS theory, math, and application domains. They are amenable to a remarkably beautiful treatment with (sparse) linear algebra, with connections to many fields (e.g., spectral graph theory, harmonic analysis, group & representation theory, algebraic topology, discrete calculus), embodied by the PyGSP. (The beautiful part being that the math and numpy implementations are simple while the meanings are deep.)
  • con: the package is maybe not as prominent (yet?) as already featured ones

@mdeff
Copy link
Contributor Author

mdeff commented Jun 3, 2020

A classification alternative (in the direction of #321, but mostly for thoughts) would be a big "data/signal analysis/processing" (better name to be found) topic to regroup signal and image processing (data on Euclidean grids), computer graphics (data on 2D surfaces), numerical methods like FEMs (data on 3D volumes), GIS (data on the sphere). Those are all concerned with the analysis (SP/Fourier/filters/wavelets/frames, statistics, ML, etc.) of structured (a line, plane, sphere, 2D surface, 3D volume, etc.) data (vertex positions or color, physical quantities, color intensity, demographics, etc.).

I however fear that's too much merging (e.g., CG and numerical methods are certainly more than that). It also puts the spotlight on structured data, not on the structure itself. (While CG and numerical methods are concerned about mesh quality and simplification, that's far behind the interest of the NetSci community about networks. There's of course not much to care about the Euclidean structure in classical SP.)

@rossbar
Copy link
Contributor

rossbar commented Jul 15, 2020

I'd also like to add my +1 for adding a graph/network analysis tab.

Taking a network science POV, the package is not "array-like" so I don't know if it should be under a hypothetical "graphs & networks" group too.

Note that NetworkX supports linear algebra-based approaches to graph problems, even if numpy/scipy are only soft dependencies for NetworkX.

@jarrodmillman
Copy link
Member

We are also working to improve our np support in nx. But we will also keep using dictionaries as well, since it is better for many non-linear algebraic graph algorithms.

I also think that it would make sense to move "Interactive Computing" to its own tab. Interactive computing doesn't seem like it belongs under the "Scientific Domain" tab. It also seems deserving of its own section perhaps including Spyder along with the other useful interactive environments.

That move would also enable you to add "Network Analysis", while retaining the 2x8 grid.

@mdeff
Copy link
Contributor Author

mdeff commented Jul 20, 2020

NetworkX supports linear algebra-based approaches, but it's not the main focus. As @jarrodmillman wrote, dictionaries are better for the larger focus of NetworkX. Anyway that's not an issue as @rgommers agreed to include it if we get a "Graphs and Networks" group.

Agree that "Interactive Computing" would fit better under its own tab rather than as a group under "Scientific Domains". Maybe open a separate issue for that?

@jarrodmillman
Copy link
Member

FYI, NetworkX recently made NumPy, SciPy, Matplotlib, and pandas default requirements (they were optional before):
networkx/networkx@5f2445c

Here is more information from the PR:

"""
Given their central position in the scientific Python ecosystem and the fact that they provide self-contained, easy to install wheels, NumPy, SciPy, Matplotlib, and Pandas are now default dependencies. They don't have pre-built wheels for pypy or 3.9-dev, so they aren't installed by default on those instances via the environment marker:

platform_python_implementation!='PyPy' and python_version<'3.9'

Before we officially add support for Python 3.9, we will change python_version<'3.9' to python_version<'3.10'. If and when the core projects (ie., NumPy, SciPy, Matplotlib, and Pandas) provide self-contained wheels for PyPy, we will remove platform_python_implementation!='PyPy'.
"""

@rgommers
Copy link
Member

Sorry for the huge delay. I added a policy/procedure on updating the Ecosystem tab in gh-313. tl;dr we're good to add Graphs and Networks as a category.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants