Network Science Resources

Applied Network Science Journal
Reviewed by Asha Pavuluri and Sylvester Gates

What is it?
The Applied Network Science Journal is an open-access and strictly peer reviewed journal. It is interdisciplinary in nature and contains papers from fields that benefit from quantitative network-based modeling, particularly from newly emerging research areas. This journal has a few main focuses, namely: novel or anticipated network science applications, technologies for complex network methodologies, innovative modeling approaches to encourage more widespread use, and real-world applications.
Audience
The Applied Network Science Journal is aimed towards researchers, students, professionals who would benefit from keeping up with or adding to knowledge related to network science theories and applications.
Strengths and Weaknesses
There are various strengths and weaknesses of the journal. First, the strengths. The journal boasts high visibility stemming from its coordination with the SpringerOpen open science mission. All submissions are peer-reviewed (although, the method is a single-blind peer review). There is a relatively fast speed of publication, specifically 140 days from submission to acceptance and 40 days from acceptance to publication. The online publication format allows for more flexibility, particularly related to data visualization potential. The journal has press coverage and promotion opportunities. Authors retain copyright and are free to reproduce and disseminate their work. The journal fee could be covered if the corresponding author’s institution participates in open access membership program. The articles are retained in the digital archives which allows for long-term digital preservation and availability in other databases (e.g., PubMed Central and Web of Science/Clarivate Analytics). Now, the potential drawbacks. The journal has a good, but not great impact score (~2 impact score, ~13 h-index). The journal also seems to be relatively new (with the first collections starting in 2016), so it may not be at the forefront, yet. Second, because the journal is publishing network science articles, the work is only as good as what it is used for – therefore this source cannot entirely be used as a direct method for learning network science, but instead can give ideas and examples for how one can apply network science methods based on the work and workflows published and presented within the articles. Along with this, due to this being published work, some of the workflows are not strictly formatted to be in an easy to follow, tutorial format.
More information
https://appliednetsci.springeropen.com 
Circos
Reviewed by Danielle Middlebrooks and Muzi Li

What is it?

Circos is a free software package used for visualizing data and information. This package was created by Martin Krzywinski, who released it to the world in 2009 with his paper: “Circos: an Information Aesthetic for Comparative Genomics”. Circos is written in Perl and can be deployed on any operating system for which Perl is available. It produces bitmap (PNG) and vector (SVG) images using plain text configuration and input files which makes it very appealing for its ease of use. It was initially designed for displaying genomic data (particularly cancer genomics and comparative genomics) and molecular biology. However, it can create figures from data from a variety of fields such as visualizing migration and mathematical artwork. Circos has been accepted by the biological community as a standard for displaying sequence relationships and genome rearrangements.
Audience
Circos will be most useful for those who want to represent their network data in a circular fashion. Installing the program will require a substantial effort and knowledge about Linux/Unix kernels.
Strengths and Weaknesses
There are many strengths and few weaknesses to this particular software package. The circular layout supports larger data domain by using layering of different data sets to create highly informative infographics with texture and visual appeal. Circular layouts have a huge advantage over linear ones such as having equal focus across scale, preserving continuity in data tracks, and preserving adjacency among similar data points. It also attempts to balance flexibility with ease-of-use. Circos makes no assumptions about your data and uses extremely simple input data format. This makes image creation and customization easy and being controlled through a plain-text configuration files allows for no interactive user interface. There is a clear trend in literature to include as much information as possible on single plots in order to demonstrate the amount of work that went into a project. This may lead people to go overboard and plot many different datasets with clashing color schemes and tiny points on a single image. Some would view this as a weakness. However, the key with all visualization is to focus on showing only the interesting patterns in the data, rather than plotting everything possible. One clear limitation and possible weakness is the ability to only visualize data in a circular layout. If a circular layout is not ideal for your dataset, then Circos may not be the tool for you.
More information (and getting started)
Some programming knowledge of shell language is the only background needed to use this resource. After downloading and unpacking Circos, the users need to have perl and all required perl modules installed. Once the users have determined how to present their data, they can parse the data into Circos format and create a configuration file for generating a circos plot. Various R packages now exist that let you create a circos plot by writing R code. These include Circlize, RCircos, CIRCUS, and OmicCircos. Each of these packages have strengths and weaknesses relative to each other. Click here for tutorials.

Cytoscape
Reviewed by Jacob Isbell, Hadi Vafaei, and Haley Wight

What is it?

  • Desktop app: Cytoscape
  • Web application: Cytoscape.js
  • Easily assign colors/labels/attributes to both nodes and edges.
  • Compute network summary statistics.
  • Perform more complex network analyses, e.g., clustering.
  • Apps are available for network and molecular profiling analyses, new layouts, additional file format support, scripting, and connection with databases.

Cytoscape vs. Cytoscape.js: The Cytoscape desktop application has an intuitive user interface that does not require prior programming knowledge. While the majority of operations have been designed within the Java based app, Cytoscape.js is the web-based successor. Cytoscape.js is a network data visualization and analysis engine for web applications. It is a pure JavaScript library and no plugin is required for the web browsers. Cytoscape and cytoscape.js share design-level concepts, such as Visual Styles, but their code bases are completely independent to each other. It is designed to be a building block for complex data visualization web applications in HTML5. Using this library does require some web development knowledge.
Audience Those interested in visualizing molecular interaction networks and biological pathways. Knowledge of computer programming is not required.
Strengths and Weaknesses
Strengths:

  • Cytoscape has a large user base, especially among biologists.
  • Cytoscape has consistent maintenance and support (last release: v3.7.0 10/22/2018).

Weaknesses:

  • Doesn’t handle very, very large networks well and may crash.
  • Complex layouts will take longer to compute as compared to gephi and other tools. While cytoscape will compute basic network statistics, if computationally intensively data analysis needs to be done, it should be done externally and imported into cytoscape.

More information CytoscapeTutorials ; Cytoscape.jsDemo

Cytoscape Apps (ClueGo and MCODE)
Reviewed by Kelsey Dutta and Khiem Lam

What is it?
Cytoscape is a Java-based open source platform used for the visualization and analysis of biological networks. Beyond the base tool, there are over 365 applications (https://apps.cytoscape.org/) that can be used to annotate/analyze existing networks or to create them. Many of the apps and common network file formats can be imported using the Cytoscape GUI and requires no background knowledge to use other than a basic understanding of Cytoscape functionality and layout. Below are details of two of the most popular applications.
Who’d find it useful?
Anyone interested in visualizing biological networks, particularly molecular interaction networks, gene networks, and annotated datasets. The apps are integrated into the base package GUI, so coding skills are not required.
ClueGo (https://apps.cytoscape.org/apps/cluego) Creates and visualizes a functionally grouped network of terms/pathways

  • Input: gene list
  • Output: enrichment of genes in GO/pathways; network visualization of GO/pathways (node: GO/pathway terms; edge: term-term similarity)
  • Strengths: can input gene list from any source (e.g. text file, network from Cytoscape); multiple databases to choose from (e.g. GO, KEGG, REACTOME, WikiPathways); can import additional data/organisms if needed
  • Weaknesses: visualization can be messy for networks with a lot of terms

MCODE (https://apps.cytoscape.org/apps/mcode) Clusters a given network based on topology to find densely connected regions

  • Input: Cytoscape network or subnetwork
  • Output: interactive ranked list of clusters
  • Strengths: clusters can be selected and exported for additional analyses
  • Weaknesses: does not provide any statistical score on the resulting clusters
A First Course in Network Science and NetworkX
Reviewed by Shams Mehdi and Dhruvit Patel

What is it?
This is a textbook designed to introduce the reader to the broad disciple of network science. It includes programming tutorials (in Python) and exercises which require the learner to implement what they learn on real datasets, such as the Everglades food web and C.Elegans neural network. The collection of guided coding tutorials interactively walk students through popular and useful network visualization and computational tools. For those not familiar with Python, the tutorials contain a crash course to bring students up to speed on the basics, such as data structures, loops, conditionals, etc. which will be needed in the network-based programming exercises that follow. The tutorials implement various network algorithms from scratch and implement network visualization tools (and algorithms) using the popular library NetworkX. NetworkX is a Python based package which provides specific data structures for graphs, directed graphs, and multigraphs and the library includes many standard graph algorithms, and statistical analysis tools.
Strengths
This user-friendly resource is self-contained and is appropriate even for those with no prior background in network science. It provides a hands-on approach which is meaningful, thanks to the exercises which use real world datasets to implement what is learned. NetworkX is a key component used in this resource which offers excellent, easy to implement network visualization styles. NetworkX has great documentation on the official website and from users of the package. Since, NetworkX is built-on Python and not a standalone product, it’s possible to convert existing codes for one project to another with minimal programming. This is particularly advantageous in interdisciplinary research projects.
Weaknesses
Although the coding tutorials are not standalone (they accompany the textbook), they are still useful to introduce one to network algorithms and the NetworkX package. NetworkX may not be sufficient for more advanced visualizations and larger networks. Additionally, the package requires familiarity with programming/Python.
Who will find it useful
Anyone looking for a broad introduction to network science and would like to get their hands dirty with real world applications would benefit greatly from these tutorials. It does not require one to have a technical mathematical or programming background.
Where can I learn more?
Github link for tutorial: https://github.com/CambridgeUniversityPress/FirstCourseNetworkScience
NetworkX: https://networkx.org/
Gephi
Reviewed by Dushyanthi Karunathilake & Wei Xiao

What is it?
Gephi is a visualization and exploration tool for graphs and networks. It is an open-source and free software package written in Java on the NetBeans platform. It runs on Windows, Mac OS X and Linux. Gephi can be used to explore, analyze, spatialize, filter, cluterize, manipulate and export networks.
Audience
By exploring the Gephi customers by industry, we find that Higher Education (19%), Computer Software (16%) and Education Management (8%) are the largest segments. As a user-friendly data visualization tool, Gephi is easy to get started for graduate students. Gephi can also deal with a lot of research, and academics in the natural sciences, statistics, and social sciences sectors.
Strengths & Weakness
Strengths

  1. Extremely Fast: It is built using the OpenGL engine. So Gephi allows us to deal with very large networks with very high speed. It can visualize networks of up to a million elements. All the actions such as layout, filter, and drag run in real-time.
  2. Simple: It is very easy to install and get started with. It is best known for its window interface. It has a very easy interface to use and is filled with handy tools
  3. Modular: The Gephi software is split up into different modules. All its features are wrapped into separated modules. Each module provides a specific function, which makes the maintenance of the software a lot easier.
  4. Easy Data Import: The data import process is very easy in CSV format.

Weaknesses

  1. There is absolutely no linking between views.
  2. There are a few visual glitches
  3. The navigation of the Graph can be improved.

Learn More
Gephi website https://gephi.org/users/quick-start/ has detailed tutorials from installation to network visualization and manipulations. 

Following are a list of other useful guides for you.
Brian Sarnacki’s Gephi Tutorial : http://www.briansarnacki.com/gephi-tutorial/
Clement Levallois’s tutorial : https://seinecle.github.io/gephi-tutorials/generated-html/simple-project-from-a-to-z-en.html
Miriam Posner’s creating a network graph with Gephi: http://miriamposner.com/dh101f14/wp-content/uploads/2014/11/Creating-a-Network-Graph-with-Gephi.pdf

Graphery
Reviewed by Tobias Rubel and Bilal MoizWhat is it?
Graphery is a tutorial website for learning network science in the context of biological networks. It contains a growing list of tutorials ranging from the very basic tools of network science (node degree, shortest paths), to intermediate level concepts like community detection algorithms. Each tutorial comes with pseudo-code to understand the algorithm, references to further reading and applications, and working python code in an editor which can be run on a number of real curated biological networks on the website. The website includes a variety of biological networks including animal social networks, food webs, various molecular networks, and others.
Who will find it useful?
Graphery targets three main demographics. The first and primary audience is that of visitors. These may be either early stage researchers who are interested in developing their knowledge of network science, or biologists who are interested in understanding how some of the computational-biology tools that they or their collaborators use work. The second audience is that of contributors, who can add tutorials or networks to the site to improve its quality and breadth, or translate existing tutorials into new languages to improve accessibility. These folks might be graduate students or postdocs who are interested in education. The third audience is that of educators, who can use graphery in their classes or even use the open-source code to create their own course curriculum on the graphery framework.
What are its strengths and weaknesses?
Graphery is a very promising platform for network science education. The biological networks are high quality and well sourced, the python code is clear, the tutorials are generally well written, and the user interface is sleek given the amount of stuff the site does.One weakness of the site is that while it claims to be useful for beginners, it does require some prior programming knowledge. Additionally there are some tutorials which don’t have translations.
Where can I learn more?

Graph-tool
Reviewed by Cindy Li and Lauren WeissWhat are its uses?
Graph-tool is a python package for analysis, manipulation, and visualization of networks. Implemented in C++, Graph-tool enables easy and fast computations of network properties and statistics for python users of all levels. Graph-tool also provides many options of network visualization, including animated and interactive visualization.
Who will find it useful?
With its rich and powerful features, Graph-tool could attract a wide range of audience interested in analyzing and visualizing networks – sociologists studying social networks, epidemiologists seeking to visualize outbreaks, and business analysts building consumer cluster models, just to name a few.
What are its strengths and weaknesses?
Graph-tool is advantageous in many ways. The core data structures and algorithms of Graph-tool are implemented in C++, making extensive use of template metaprogramming, based heavily on the Boost Graph Library. As a result, the efficiency of Graph-tool is comparable to that of a pure C/C++ library both in memory usage and computation time. This makes Graph-tool accessible for those with python experience without having to understand C++. In addition, there is extensive Graph-tool documentation available, including troubleshooting and a wealth of other resources on GitHub.However, Graph-tool also has its weaknesses. The installation of Graph-tool can be challenging. Graph-tool is not available through common installation and environment management tools like pip install or conda install. Currently, the easiest way to download and install Graph-tool is through Docker, which requires additional configurations of the environment. As for the efficiency of Graph-tool, although implementation in C++ and the resulting computation speed is a strength of this software, the temptation, particularly that for new users, to execute main loops through python, etc. rather than C++ negates this speed advantage. A large amount of the graph-tool troubleshooting on StackOverflow, for example, seek to understand why graph-tool-based scripts are running so much slower than similar modules like NetworkX.
Where can I learn more?
If you are interested in reading more about Graph-tool, here is a list of useful resources:
Graph-tool documentation: https://graph-tool.skewed.de/static/doc/index.html
Graph-tool GitHub page: https://git.skewed.de/count0/graph-tool
Introduction to graph-tool: http://connor-johnson.com/2015/04/14/introduction-to-graph-tool/
–  Mosky Liu’s “Graph-Tool in Practice”: https://www.slideshare.net/moskytw/graphtool-in-practice
Introducing Network Science Resource: igraph
Reviewed by Gloria Kim and Joshua LuckerWhat it is?
After data collection, it can be extremely valuable and informative to examine underlying network structure and properties. For instance, network visualization may be useful for determining directionality of node interactions, relationship strength, and even identifying key nodes and links. Visualizing networks can take many forms, and utilize elements of color, position, size, and shape in order to highlight important properties of data. There are many kinds of open-source and free software available online to start visualizing networks in your own dataset, such as igraph. Igraph is a collection of network analysis tools that is easy to learn and implement in a variety of research scenarios. It can be programmed in R, Python, and C/C++. Raw data should ideally be formatted into two .csv files, with one containing information about nodes, and the other containing information about links. In R, you can get started  by downloading igraph with “install.packages(“igraph”)” and then “library(igraph).”
Who’d find it useful?
This resource is suitable for researchers at all levels of coding proficiency who want to begin visualizing their raw datasets to showcase underlying network characteristics. Igraph is also ideal to perform basic network analysis, such as finding clustering coefficients or path lengths. As mentioned previously, the program is best utilized in either Python or R programming, but can also be used in Mathematica or C/C++ software. In order to best make use of this tool, it is important to be able to understand which parts of the raw data should be organized into nodes or links, since this is a necessary part of beginning to create an igraph object.
Strengths:
The strengths of igraph is that it has a wide variety of visualization techniques to view one’s networks and graphs. It has many settings and features that make it easy to create aesthetically pleasing and easily interpretable network diagrams, suitable for science communication. The igraph team seems to be extremely responsive and open to feedback, as evidenced by the discussion forums and incident reporting feature on their homepage.
Weaknesses:
The weaknesses of igraph is that igraph does not have very many tools for network analysis, especially if one is looking for a program to use for intensive and high-level network analysis research. Also, the user has to have a good understanding of the specific format the data must be in to be compatible with igraph functions.
How to start?
A resource we found particularly helpful to start using igraph in R was the “Network visualization with R” document that was presented as a workshop from Dr. Katherine Ognyanova at Rutgers University. Here, she goes through several ways of designing and setting up different ways to visualize networks, and even provides sample datasets. We used her tutorial and sample dataset to map out an example of a small-world network, taking the form of a circular multiplex diagram with different weights for nodes and links. For updates about current/new features, bug fix reports, discussion forums, and more, the igraph home website (
https://igraph.org/) can be a fantastic resource for troubleshooting.

JavaScript Libraries for Network Analysis
Reviewed by Sigfried Gold and Brook Stacy

What is it?
Software developers or research programmers use JavaScript and its wealth of libraries to build custom applications that can be deployed to any user with access to the internet and a web browser. The tools listed below serve a different overall purpose from those most commonly used by scientists and data analysts. They are not best for one-off analysis of a dataset, but for building reusable tools, often for others. D3.js is the most widely used and influential library for building interactive visualizations in JavaScript. Its prodigious examples gallery provides working code with small sample datasets that can be applied to countless network visualization modalities. Sigma.js is a JavaScript library dedicated to graph drawing. It makes easy to publish networks on Web pages, and allows developers to integrate network exploration in rich Web applications. Unlike Cytoscape.js, described above, it generates graphs primarily using canvas rather than SVG and can handle much larger graphs performantly. Graphology is a specification and reference implementation for a robust & multipurpose JavaScript Graph object. It aims at supporting various kinds of graphs with the same unified interface. If you are developing custom graph analytics functions, graphology provides a standardized API to build on with basic functions for adding nodes and edges, configuring graph parameters, querying graph data, and more.
Audience:
Anyone interested in representing their network data in a user-friendly way, while having rich database of resources on how to customize visualizations. Those interested in interactive visualizations will get a lot out of using these libraries. Programming knowledge will be critical.

Strengths and Weaknesses: The advantages of browser-based programming in JavaScript include:
  • Browsers are ubiquitous. Your users will not need to install Python or other programming platforms or libraries. Your application with supply all its dependencies over the web.
  • Modern browsers (Chrome, Firefox, etc.) provide a rich platform for highly interactive applications with beautiful and flexible graphics and a huge supply of open-source libraries. Helpful resources for learning more about these include:
  • For resources specific to graph/network analysis, try this curated list of JavaScript graph drawing libraries.

The primary disadvantages of JavaScript and browsers for network analytics are:

  • They do not provide the scientific depth, performance, and scalability of platforms like Python, C/C++, R, or Fortran;
  • They are less familiar to scientific users;
  • The JavaScript ecosystem of frameworks and libraries grows so fast that it is a full-time job attempting to keep up with it. As fast as science-focused ecosystems (e.g., around Numpy or matplotlib in Python) are growing, they are more coherent and stable than JavaScript’s.

More information:
Main information about D3.js is here: https://d3js.org/ with examples here: https://github.com/d3/d3/wiki/Gallery/ Main information about Sigma.js is here: http://sigmajs.org/ Main information about Graphology is here: https://graphology.github.io/ More resources about browser usage can be found in

MNE – MEG and EEG Analysis and Visualization
Reviewed by Phillip Alvarez and Peng ZanWhat is it?
MNE-Python is an open-source Python software for exploring, visualizing and analyzing human neurophysiological data such as magnetoencephalography (MEG), electroencephalography (EEG), stereoelectroencephalography (sEEG) and ECoG. In general, it allows analysis of trial-based time-sequence data recorded from the human brain, from which the functional networks can be derived either in sensor space or neural source space.
Audience
It is designed to aid neuroscience researchers who analyze and visualize electrophysiological data and derive functional network from the multi-channel temporal recording. However, it can be used by any researcher who is trying to estimate connectivity between channels/sensors based on time-sequence data.
Strengths and Weaknesses:
Strengths:
It can be used to visualize multi-channel recordings and perform multiple network analyses between sensors or between neural sources, such as spectral connectivity, phase slope index and seed target indices, etc. Below are several commands for these tasks. MNE data objects: MNE-Python commands mostly operate on MNE objects such as Raw, Epoch, Evoked, Info and SourceEstimate. The Info object, which is always embedded in other objects, contains metadata of date, subject information, sampling rate, sensor positions and other recording details. Other objects append information from the Info object to their own data. Visualize spatial-temporal data: Given the embedded dimensional data, the Info object facilitates visualization of other objects. For example, you can plot multi-channel recordings with the simple command raw.plot(), and multi-trial data with epoch.plot(), and the sampling rate and time information from raw.info or epoch.info would help label the time axis. Functional connectivity in sensor space: Mne.connectivity module contains multiple functions computing different network measures based on sensor-space time sequences, for example, spectral_connectivity and seed_target_indices, etc, which operate on Epoch object. Neural source estimation: To compute network connectivity in neural source space, a linear mapping from sensor space is required, which is called an inverse problem. With MNE, you can easily integrate structural MRI data and MEG recordings to solve the inverse problem or source localization. The algorithm used is minimum norm estimation (MNE), which is also the source of toolbox’s name. Functional connectivity in source space: Based on source-space data, one can now compute network connectivity in source space by different measures. For example, coherence (seed_target_indices), full-spectrum connectivity (spectral_connectivity), and phase slope index (phase_slope_index). Finally, you can visualize the network in a circular graph by plot_connectivity_circle, or an all-to-all connectivity 3D brain plot from mayavi.mlab.
Weaknesses:
This toolbox is targeted at researchers in neuroscience, especially those dealing with time-sequence data, therefore it may not be a general use toolbox for network visualization. This can be compensated for by integrating other toolboxes such as mayavi, networkx and eelbrain.
More information
Get started here: https://martinos.org/mne/stable/documentation.html Various examples are here: https://martinos.org/mne/stable/auto_examples/index.html and here: https://github.com/mne-tools/mne-python/tree/master/examples Various tutorial are here: https://github.com/mne-tools/mne-python/tree/master/tutorials
Network Neuroscience Resource: Brain Connectivity Toolbox for Python (BCTPY)
Reviewed by: Junaid Merchant and Daniel CallowResource and purpose:
The Brain Connectivity Toolbox for Python (BCTPY) is a nearly direct translation of the Brain Connectivity Toolbox (BCT) written in python. BCT is a popular Matlab toolbox created by Olaf Sporn’s group to perform complex-network analysis on both functional and structural brain connectivity data sets. The BCT codebase has been incorporated into many other software packages and projects, and has been utilized by the Human Connectome Project and the Virtual Brain Project.
Who’d find it useful?
This package was specifically created for individuals who are trying to obtain network measures of brain structural and functional connectivity. This resource has generally been used by neuroscience researchers focusing on human brain imaging techniques, including structural and functional MRI, DTI, EEG, MEG, and invasive electrophysiological techniques. However, BCTPY can easily be adapted by researchers utilizing animal models, and those who work at lower levels of analysis, like systems and cellular neuroscientists. Individuals looking to use this resource should have some python programming experience, and a general understanding of how structural and functional connectivity measures and how they are obtained.
Strengths:
All you need to get started with BCTPY is a network matrix and python version 2.7 or higher. BCTPY has functions for binary, weighted, and/or directed network matrices, and includes many algorithms for a wide range of network measures used in network neuroscience. Moreover, BCTPY functions are flexible and easy to use, and allows the user to customize their analysis by interfacing with other python packages/functions. Finally, BCTPY is written in pure python and only requires the scipy and numpy libraries. Weaknesses:
BCTPY is not a comprehensive tool for network neuroscience, but rather, a collection of functions for deriving network measures. Thus, the user will have to use other packages for data processing and deriving network matrices. BCTPY does not have a graphical user interface, so users will have to be comfortable with python programming. Moreover, BCTPY’s visualization capabilities are limited, requiring the user to rely on other visualization software. Finally, while some documentation is provided for each of the BCTPY functions, the user will have to be familiar with network measures for understanding which ones to use and interpreting results.
Learn more:
Installation instructions here: https://pypi.org/project/bctpy/
Full repository: https://github.com/aestrivex/bctpy
Documentation of all functions: https://github.com/aestrivex/bctpy/wiki More information: https://sites.google.com/site/bctnet/
Citation: Rubinov, M., & Sporns, O. (2010). Complex network measures of brain connectivity: uses and interpretations. Neuroimage, 52(3), 1059-1069.
Network Neuroscience Resource: Manim
Reviewed by Tahseen Rabbani and Levi BurnerResource and purpose:
A Python engine for beautiful animations, especially for tutorial videos of a mathematical nature. It was originally created by Grant Sanderson for their Youtube channel 3 Blue 1 Brown.
Who’d find it useful?
Despite its most common use case, Manim also has tooling for much more than just equations. Manim can be used to draw animated shapes, such as circles and lines, without much difficulty. Thus, it is possible to animate the progression of algorithms along a graph and thus can be used by those in network science. Think of it like an animated whiteboard.
Manim can visualize network algorithms such as the generation of Erdős–Rényi graph’sStrengths:
-Active community of manim enthusiasts
-Lot of out-of-the-box APIs for generating very common shapes, figures, and motions.
-Comprehensive API documentation.
-Can create 3D animations
-All of the manim code for the creator’s, 3Blue1Brown, videos are available online.
-Integrable with iPython notebooks
-There are a lot of tutorials and the number is growing. When we gave a presentation on Manim in class we said there were only a few tutorials. A few months later there are many!
Weaknesses:
-Manim requires some programming background to use and it is expected that you can use pythonic idioms
-Installation on Windows a Mac requires a  package manager like Chocolatey or Homebrew. Installation on Linux is straightforward.
-High quality render can take a several minutes animations that are tens of seconds
Learn more:
Community Edition: https://www.manim.community/
Getting started guide: https://docs.manim.community/en/stable/tutorials/quickstart.html
Manim subreddit: https://www.reddit.com/r/manim/
Open source code for 3b1b videos: https://github.com/3b1b/videos
Manim + NetworkX (only supports 3b1b version): https://github.com/rajatvd/manimnx
Manim in 10 minutes: https://towardsdatascience.com/love-3blue1brown-animations-learn-how-to-create-your-own-in-python-in-10-minutes-8e0430cf3a6d
Network Visualization using igraph in R
Reviewed by Leonard Campanello and Anshuman SwainWhat are its uses? Visualization is extremely important to convey information about networks to an audience. Most of the times, it is represented as an illegible hairball or clumsy graphics — which might affect the way in which the work is perceived. That being said, there are numerous paid and free resources available for effective network visualization. What sets igraph package in R apart from others, is the versatility of the package and its support within the comprehensive R framework.
Who will find it useful?
Anyone who has some familiarity with R can use the tool — it’s free. The visualizations thus created, can be exported to any format and can be used in any publication, website, blog et cetera under the free license.
What are its strengths and weaknesses?
Igraph is made for R and thus, can use the strong statistical framework that R offers. Moreover, the color, font, and shape repertoire in R is very comprehensive (and flexible) and can accommodate complex graphics- thus enabling faster customization of the network plots. The package also offers various modes and methods of network visualization depending on the needs of the user — making it a one-stop solution for networks. As igraph is a statistical package on networks — all computations can be done within the framework and then plotted / used for visualization (reducing extra input or conversion woes). The only weakness being, you have to be well-versed in R code to make all the advanced customizations.
Where can I learn more?
One can refer to the igraph package manual for more details. For tutorials on the issue, one can search R Network Visualization Workshop: Polnet 2015, held in Portland, OR in 2015.
NetworkX
Reviewed by Domenick Braccia and Chelsea HaakensonWhat is it and what are its uses?
NetworkX (https://networkx.github.io/) is a python package for creating, manipulating and studying features of complex networks. This tool is useful for studying the structure and dynamics of networks and can handle the computational challenges of large, nonstandard data sets. It includes functions for visualizing networks in a variety of ways and in addition to pre-made algorithms for calculating network measures such as degree and centrality. Furthermore, programming with networkX can interface to existing algorithms and code written in other languages (C, C++, and FORTRAN) to facilitate collaborative projects.
Who will find it useful?
NetworkX is intended for a variety of people – including mathematicians, physicists, biologists, computer scientists, and social scientists. However, use of this tool requires coding, so previous coding experience is recommended.
What are its strengths and weaknesses?
Some of the greatest strengths of NetworkX are its versatility and the large community that works with this open-source tool. However, it is subject to problems with scalability, memory issues, and potential hairball effects.
Where can I learn more?
Main documentation is here: https://networkx.github.io/documentation/stable/
A tutorial to get you started is here: https://networkx.github.io/documentation/stable/tutorial.html
An example of this tool being used in the context of social network creation can be found here: https://blog.dominodatalab.com/social-network-analysis-with-networkx/ .
NetworkX
Reviewed by Kayla Chun and Bixuan WangWhat is it?
NetworkX is a python library for graphs and network analysis. It is a powerful tool that can be used to generate, manipulate, and interpret the arrangements and dynamics of complex networks. It provides functions and classes that can examine and modify the components and elements from graphs, visualize networks in multiple styles, and access edges and neighbors of nodes. The standard programming interface and the graph implementation make it suitable for collaboration on various projects. NetworkX also provides an interface to existing algorithms in code in C, C++, and FORTRAN.
Who will find it helpful?
NetworkX is suitable for people from various fields, such as mathematics, biology, physics, computer science, and social science. It is very flexible, allowing users to generate multiple types of random and classic networks, load and export networks in different formats, visualize the graph structures in 2D and 3D, and design your own network algorithms. In addition, its simplicity allows users of all programming levels to easily implement NetworkX tools.
What are the strengths and weaknesses?
Strengths: NetworkX can help with both analysis and visualization. The implementation is based on python dictionary data structure, which makes it scalable and portable. Weaknesses: When dealing with super large networks, NetworkX may have memory issues, and the visualization may require extra adjustment.
Where can I learn more?
The official site is here: https://networkx.org/
The github repository is here for the latest implement: https://github.com/networkx/networkx
The official tutorial is here: https://networkx.org/documentation/stable/tutorial.html
Plotly Graphing Library and Chart Studio
Reviewed by Suhas Gotla and John Udara MendisWhat is it and what are its uses?
The Plotly Graphing Library allows the creation of complex, interactive and dynamic visualizations and is available as packages for Python, R, JavaScript and Julia. The complementary Plotly Chart Studio is a free graph hosting platform that can be used to host and share visualizations easily with URLs. Chart Studio is particularly useful in sharing dynamic graphs through static mediums like journal articles and posters.
Who will find it useful?
R, Python, JavaScript and increasingly Julia are widely used by biologists, physicists, data scientists, computer scientists, and so on. Plotly, being available to all three of these beginner-friendly programming languages, will accordingly be helpful to a diverse user base. Plotly can interface easily with network libraries such as NetworkX, and as you will see below can create useful visualizations of dynamic networks.
What are its strengths and weaknesses?
Plotly allows users to create large and complex visualizations in a concise fashion. This can be advantageous over Matplotlib and ggplot, where the code for complex visualizations can quickly become very verbose.A weakness of Chart Studio is that the free version has a 500KB data limit per graph, which can be restrictive.
Where can I learn more?
A short demonstrative visualization of a dynamic random network, written in Python and hosted on Chart Studio can be viewed here (https://plotly.com/~suhasgotla/1/) and the code can be found here (https://github.com/suhasgotla/plotly_demo).
For more information visit the following links:
Graphing libraries – https://plotly.com/python/
Chart Studio – https://plotly.com/chart-studio/
Reactome
Reviewed by Renee Chou and Corey HerrWhat is it and what are its uses?
Reactome is a knowledgebase that contains manually curated biological pathway information for various model organisms. For example, Reactome has 2441 human pathways, 1653 mouse pathways, and 1644 rat pathways (as of September 24, 2020) and more are added regularly. In total, it has over 13,000 metabolic reactions. Reactome supports pathway analysis, visualization, and interpretation. It can be used as a pathway browser for exploring reactions within a pathway; a web-based tool for pathway enrichment analysis; and a graph database to retrieve molecules and reactions involved in the pathways.
Who will find it useful?
For users interested in performing pathway enrichment analysis, Reactome provides a user-friendly analysis tool for researchers to understand which biological network patterns are associated with their gene sets. Developers looking to incorporate a database containing pathways and metabolic reactions to their computational tools can access Reactome’s graph database with an application programming interface (API). The users can also download a portable version of the graph database and retrieve the information via the Cypher query language.
What are its strengths and weaknesses?
Reactome is open-source, open access, and peer-reviewed. The database contains numerous pathways and their associated information such as metabolic reactions, molecules, drugs, as well as literature references. The database is implemented as a graph database with neo4j, which, compared to a relational database, provides facile data management for complex metabolic reactions in one large interconnected biological network. The weakness of a graph database, however, is that it is not normalized or optimized to reduce data redundancies. Thus, it may require a higher cost for high-volume transactions, and may be inefficient for large queries of multiple pathways/reactions in the database.
Where can I learn more?
Reactome graph database schema: https://reactome.org/content/schema/DatabaseObject
Reactome API: https://reactome.org/ContentService/#/
Tutorials for cypher query language: https://neo4j.com/developer/cypher/
Graph databases and neo4j: https://neo4j.com/lp/book-graph-databases/ 
Stanford Network Analysis Project (SNAP)
Reviewed by Abhilash Sahoo and Kevin ArmengolWhat is it?
SNAP is a general purpose network analysis tool and graph mining library. The SNAP website is also a repository of network science related information
What are its uses?
-Manipulate large graphs and calculate structural properties. – Large network datasets available for mining e.g., gene-disease, gene-gene, cell-cell, drug interactions, social, economic, geological, web-based, etc.
-Written in C++ and scales to graphs with 100+ million nodes and 100+ billion edges.
-Also available in python interface.
-Available through NodeXL, a graphical front-end for network analysis in Microsoft Office and Excel.
Who will find it useful?
– Those with large network datasets that require computational efficiency. – Students interested in learning network science using a hands-on approach.
– For people with moderate coding experience and familiarity with basic network analysis.
Strengths of SNAP:
– SNAP (Both C++ and python versions) library supports efficient analysis of massive network datasets, provide access to rich pre-built functionalities and structural attributes.
– It can convert between multiple formats (e.g., xml and graphml) for easy transferability and provides an easy-to-use graphical front-end through NodeXL to be used by non programmers. SNAP does not have large outside dependencies and works on all operating systems (Windows and Mac OS X, Linux and other Unix variants). The SNAP website contains large volumes of network science related information (datasets, tutorials, courses and events) for easy access and learning. The website also contains a number of network analysis based projects by the SNAP group.
Weaknesses of SNAP:
– The SNAP library currently does not have a wide adoption in network science community. Therefore, it is not easy to get good community based support for this tool.
– SNAP library also does not provide an easy-to-use solution for information visualization. Although, ability to convert network data across many file format can be useful to transfer information into specialized network visualization tools.
Where can I learn more?
– The website for SNAP can be accessed at http://snap.stanford.edu/. This website contains links to C++ and python versions of SNAP network analysis and graph mining tools, large network datasets, network science related tutorials, events, courses and links to other commonly used software tools.
Stanford Large Network Dataset Collection
Reviewed by Weijun Yu and Amitava Banerjee

The resource that we recommend is
Stanford Large Network Dataset Collection by Stanford Network Analysis Project (SNAP). More than fifty large network datasets are collected. It is open source without any fee. It is available online at http://snap.stanford.edu/data/index.html and this website has a self-explanatory structure, with a short list of different types of networks, followed by lists of individual networks for each type. Categories of networks in this collection are diverse, and there are datasets on directed, undirected, weighted, bipartite, and temporal networks. You can find datasets of social networks, citation networks, road networks, Amazon networks, temporal networks, web graphs etc. Under each category, there are several datasets for specific networks. For example, under the category of communication networks, there are email networks (directed and undirected), wiki-talk networks, and dynamic face-to-face interaction networks. The dataset collection is for the purposes of research. Users can use the dataset from their website and cite SNAP if the dataset is used in their research work.
Who Will Find It Useful?
We encourage Students, faculties, researchers, scientists, and other professionals who are interested in network analysis to check this resource. This dataset collection is especially helpful for individuals who want to get their hands dirty with real world network analysis, but lacking access to network datasets. Beginner, mediate or advanced level network analysts can use this resource. Users with basic scripting skills in Python, C++, or R will find this resource to be useful for practice. For those who just start learning network analysis and without any scripting experience, it is also helpful to review this source to get the picture of various networks’ attributes.
Strengths:
One key strength of this database is that it contains the data of a diverse category of networks in one place, with multiple datasets for each category. So, this is a great place to start if you want to study general structural properties of realistic networks, or wish to test a particular context-dependent hypothesis on one of them. Furthermore, all the datasets follow a similar data format, so that it is easy to access them programmatically. There are also networks with known ground-truth communities, suitable for testing community-detection algorithms, and temporal networks where we can probe the addition of nodes and links over time.
Weaknesses:
One major drawback of this resource is that most of the data is on human social activities , e.g., social networking, collaboration and citation, and online shopping. We are lacking datasets which could be of use to biochemists or biologists, e.g., data on protein or gene interaction networks, ecological predator-prey networks, microbial interaction networks etc. The other drawback is that the database does not contain high-order or multi-layer networks, which are emerging topics of interest.