DESOSA 2021

Networkx


The NetworkX project, pronounced as Network “X”, is a python library for creating, manipulating, and studying the structure, dynamics and functions of complex networks.

The primary aim of the project is to be “the reference library for network science algorithms in Python”. As such, NetworkX aims to provide tools to study structure and dynamics of social, biological and infrastructure networks while providing interfaces and graphical implementations to be used in other applications.

Additionally, through quick and easy development environment setup, ability to work with large nonstandard data with close to none modifications to user data, large documentation and consistency across conceptually identical arguments in various functions and methods, NetworkX tries to be an easy to install and use reference library both for newcomers and seasoned network-science researchers.

Authors

Alexander Walker

1st Year MSc Computer Science student at TU Delft and part time software developer at Belsimpel.

Sharwin Bobde

Computer Scientist & Engineer. Masters Student, TU Delft.

Mantas Zdanavičius

1st Year MSc Computer Science student at TU Delft and part time DevOps/Cloud engineer at Centric

Yao Ma

1st Year MSc Computer Science student at TU Delft and interested in machine learning, web science

NetworkX - Community

NetworkX, a Python package, allows users to perform a variety of network analysis tasks. The open-source package attracts a large and varied community. In our final blog-post of this series, we will analyse NetworkX’s community and highlight its relationship to its architecture. One can draw a bidirectional relationship between NetworkX and its community. NetworkX and its maintainers foster an environment for the community to thrive, and the community influences the architecture of the project to facilitate its feature-rich and simple interface.

NetworkX - Quality and Evolution

In the third essay of this series, we will describe the Software Quality Assurance (SQA) processes applied by the project and analyse the source-code for quality. These processes ensure that any version of the package (including development versions) function as expected. To recap, NetworkX is a python library for complex-network analysis, which has varied use-cases and stakeholders. Overall Software Quality Processes NetworkX makes the entire SQA process robust, using the following

NetworkX - Architectural Style

In the second blog of this series, we explore the architectural elements and relationships apparent within NetworkX, peering through the lens of various different architectural views orginiated from the C4 model1. To recap, NetworkX is a python library for complex-network analysis, which has varied use-cases and stakeholders. 1. Main Architectural Style NetworkX primarily utilises the Model View Controller (MVC) pattern. The MVC pattern is a commonly used design pattern in software architecture.

NetworkX - Product vision

Figure: NetworkX Logo In this series of 4 blogs, we will attempt to analyse and enhance our understanding of the software architecture behind the NetworkX package. In this blog, the first of the series, we will provide a description of the vision behind the NetworkX project and give insight on the projects future aspirations. First, we will characterize the problems that NetworkX strives to solve in the domain of network analysis, and give a timeline and context of the projects' inception.

Contributions

Example spectral clustering based graph

networkx/networkx

This example is meant to address the issue #4261.

More specifically, using scikit-learn to cluster data using Spectral Clustering. Then using the adjacency matrix from the same to generate a graph for the data points to understand the clustering.

Open
Open PR

Gallery Example - Drawing custom node icons on network using MPL

networkx/networkx

The following code is intended to address issue number #4623

This adds an example of drawing a network and annotating with matplotlib.

For this example, we create a simple server topology with a router, 3 switches and 3 PCs per switch. We then replace each node with an image of the respective device.

Open
Open PR

Gallery example composite plot

networkx/networkx

The following code is intended to address issue number #4623

This adds an example to draw a composite plot on matplotlib showing the distribution of nodes' features, and the network topology at the same time.

This can be useful when you have a dataset with feature information for different items and some links between different items.

Open
Open PR