Skip to content
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

[JOSS review] Network class, key (unique) functionalities of spaghetti, relationship to NetworkX (or the like). #580

Closed
martibosch opened this issue Jan 11, 2021 · 2 comments
Labels
Projects

Comments

@martibosch
Copy link

martibosch commented Jan 11, 2021

A central point that I would like to raise is why does spaghetti define its own network class when there exist plenty of Python tools to that purpose (most notably NetworkX). For instance, basic network methods featured in spaghetti such as the shortest paths, connected components, spanning trees and the like are already implemented in existing tools. Isn't re-implementing these features in spaghetti a bit "re-inventing the wheel"?

On the other hand, I have the impression many of the functionalities that seem unique to spaghetti, such as snapping points, splitting arcs, network weights and the like could also be implemented by extending an existing network class (again, e.g., NetworkX).

Of course, I am sure that the authors have already considered this - I would just like to raise this issue in the reviewing. Hence, I would like to ask them why a custom class has been created for an object as basic as a network (for which so many Python tools exist already).
openjournals/joss-reviews#2826

@martibosch
Copy link
Author

I am sorry if I am repeating myself, but: related to this issue, considering that there exist several libraries to model networks in Python, I believe that the unique functionalities of spaghetti (those that are not implemented in other Python libraries such as NetworkX) should be listed more clearly in the README, tutorials, API documentation and the manuscript (see #575).

More precisely, the following questions should be answered clearly and concisely: why do we need another library to model networks in Python? which functionalities does spaghetti include that the other libraries don't?

@jGaboardi
Copy link
Member

We thank the reviewer for making these points. We have addressed them in paragraph 2 in the second section:

While all the libraries above are important for network-based research, spaghetti was created and has evolved in line with the Python Spatial Analysis Library ecosystem for the specific purpose of utilizing the functionality of spatial weights generated in libpysal for generating network segment contiguity objects. The PySAL project was started in the mid-2000s when installation was difficult to maintain. Due to the non-triviality of relying on dependencies to secondary packages, a conscious decision was made to limit dependencies and build native PySAL data structures in cases where at all possible. Therefore, the original pysal.network submodule was developed to address the need for integrating support for network data structures with PySAL weights data structures, with the target audience being spatial data scientists and anyone interested in investigating network-centric phenomena within PySAL. Owing to the co-development of network functionality found within spaghetti and the evolution of the wider PySAL ecosystem, today, the package provides specialized network functionality that easily integrates with the rest of PySAL. This allows users of spaghetti’s network functionality to access spatial analysis functionality that complements network analysis, such as spatial statistical tools with esda and integration with core components of libpysal: libpysal.weights (mentioned above), libpysal.cg (computational geometry and data structures), libpysal.io (input-output), and libpysal.examples (built-in example data).

Additionally, we provide more insight in #574 and #575.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
JOSS paper
  
Done
Development

No branches or pull requests

2 participants