Programming for Network Research

Erick Peirson, PhD | erick.peirson@asu.edu | @captbarberousse

Last updated 20 January, 2016

0. Introduction

This notebook series provides an introduction to programming for network research using the Python programming language.

Network models have become a ubiquitous component of quantitative research in the sciences and humanities. Many research problems in the area of complexity science are framed in terms of networks, since network models provide tractable ways of reasoning about complex systems. The purpose of this series is to equip scholars with no prior programming experience with tools and techniques for analyzing networks in a computational framework.

The Python programming language has become extremely popular for data science due to its relatively high level of abstraction, and the availability of powerful scientific and numerical packages.

The early sections of this series will deal with the basics of any introduction to programming course: variables, data types, logical operators, flow control, and functions. We will then move quickly into using numerical and scientific packages like NumPy, SciPy, and Pandas. Once we have a good command of general data manipulation in Python, we will explore network analysis packages like NetworkX, igraph, and graphtool. Along the way, we'll also employ external network analysis and visualization software like Cytoscape and Gephi.

0.1. How to use these notebooks.

This is an interactive Python notebook. Most of the content is just marked-down text, like this paragraph, that provides expository on some concept or technique. Some of the cells are "code" cells, which look like this:


In [1]:
print "This is a code cell!"


This is a code cell!

You can execute the code in a code cell by clicking on it and pressing Shift-Enter on your keyboard, or by clicking the right-arrow "Run" button in the toolbar at the top of the page. The cell below will automatically be selected, so you can run many cells in quick succession by repeatedly pressing Shift-Enter (or the "Run" button). It's a good idea to run all of the code cells in order, from the top of the tutorial, since many commands later in the tutorial will depend on earlier ones.

If you're viewing a rendered static version of this notebook (e.g. via the Github website, or nbviewer), you'll need to clone the repository at https://github.com/diging/networks. For an introduction to using the IPython notebook platform, see the IPython documentation.

As we work through the notebook, you'll have plenty of opportunities to manipulate code, and insert new code of your own. You should experiment and play! Try changing values and parameters, and re-run the code-cell to see the result. That's what's great about iPython notebooks: you can play around with specific chunks of code without having to re-run the entire script.

0.2. How to get help.

If you run into trouble, or simply have questions, please feel free to submit an issue on the Github repository for this course. I'll respond as quickly as I can!

0.3. License.

The notebooks in this series are made available under the GNU General Public License v3.0. For the full text of the license, please see the LICENSE file in the root directory of this repository.

0.4. Table of Contents

This table will be updated as new notebooks are added.


In [ ]: