Networkx Reference Release 2.0Rc1.Dev20170910155312

Total Page:16

File Type:pdf, Size:1020Kb

Networkx Reference Release 2.0Rc1.Dev20170910155312 NetworkX Reference Release 2.0rc1.dev20170910155312 Aric Hagberg, Dan Schult, Pieter Swart Sep 10, 2017 Contents 1 Introduction 1 1.1 NetworkX Basics.............................................1 1.2 Graphs..................................................2 1.3 Graph Creation..............................................3 1.4 Graph Reporting.............................................3 1.5 Algorithms................................................4 1.6 Drawing.................................................4 1.7 Data Structure..............................................5 2 Graph types 7 2.1 Which graph class should I use?.....................................7 2.2 Basic graph types.............................................7 3 Algorithms 121 3.1 Approximation.............................................. 121 3.2 Assortativity............................................... 130 3.3 Bipartite................................................. 139 3.4 Boundary................................................. 168 3.5 Bridges.................................................. 169 3.6 Centrality................................................. 171 3.7 Chains.................................................. 196 3.8 Chordal.................................................. 196 3.9 Clique.................................................. 199 3.10 Clustering................................................ 203 3.11 Coloring................................................. 208 3.12 Communicability............................................. 211 3.13 Communities............................................... 213 3.14 Components............................................... 222 3.15 Connectivity............................................... 239 3.16 Cores................................................... 262 3.17 Covering................................................. 266 3.18 Cycles.................................................. 267 3.19 Cuts.................................................... 270 3.20 Directed Acyclic Graphs......................................... 274 3.21 Dispersion................................................ 279 3.22 Distance Measures............................................ 280 3.23 Distance-Regular Graphs......................................... 282 i 3.24 Dominance................................................ 284 3.25 Dominating Sets............................................. 286 3.26 Efficiency................................................. 287 3.27 Eulerian.................................................. 289 3.28 Flows................................................... 290 3.29 Graphical degree sequence........................................ 317 3.30 Hierarchy................................................. 321 3.31 Hybrid.................................................. 321 3.32 Isolates.................................................. 323 3.33 Isomorphism............................................... 324 3.34 Link Analysis............................................... 338 3.35 Link Prediction.............................................. 344 3.36 Matching................................................. 350 3.37 Minors.................................................. 352 3.38 Maximal independent set......................................... 358 3.39 Operators................................................. 359 3.40 Reciprocity................................................ 368 3.41 Rich Club................................................. 369 3.42 Shortest Paths.............................................. 370 3.43 Simple Paths............................................... 399 3.44 Structural holes.............................................. 402 3.45 Swap................................................... 405 3.46 Tournament................................................ 406 3.47 Traversal................................................. 409 3.48 Tree.................................................... 419 3.49 Triads................................................... 434 3.50 Vitality.................................................. 434 3.51 Voronoi cells............................................... 435 3.52 Wiener index............................................... 436 4 Functions 439 4.1 Graph................................................... 439 4.2 Nodes................................................... 442 4.3 Edges................................................... 443 4.4 Self loops................................................. 444 4.5 Attributes................................................. 446 4.6 Freezing graph structure......................................... 449 5 Graph generators 451 5.1 Atlas................................................... 451 5.2 Classic.................................................. 452 5.3 Expanders................................................ 459 5.4 Lattice.................................................. 460 5.5 Small................................................... 463 5.6 Random Graphs............................................. 467 5.7 Duplication Divergence......................................... 476 5.8 Degree Sequence............................................. 478 5.9 Random Clustered............................................ 484 5.10 Directed................................................. 485 5.11 Geometric................................................ 488 5.12 Line Graph................................................ 493 5.13 Ego Graph................................................ 494 5.14 Stochastic................................................. 495 5.15 Intersection................................................ 496 ii 5.16 Social Networks............................................. 497 5.17 Community................................................ 498 5.18 Trees................................................... 503 5.19 Non Isomorphic Trees.......................................... 504 5.20 Triads................................................... 505 5.21 Joint Degree Sequence.......................................... 505 6 Linear algebra 509 6.1 Graph Matrix............................................... 509 6.2 Laplacian Matrix............................................. 511 6.3 Spectrum................................................. 513 6.4 Algebraic Connectivity.......................................... 514 6.5 Attribute Matrices............................................ 517 7 Converting to and from other data formats 521 7.1 To NetworkX Graph........................................... 521 7.2 Dictionaries................................................ 522 7.3 Lists................................................... 523 7.4 Numpy.................................................. 524 7.5 Scipy................................................... 528 7.6 Pandas.................................................. 531 8 Relabeling nodes 535 8.1 Relabeling................................................ 535 9 Reading and writing graphs 539 9.1 Adjacency List.............................................. 539 9.2 Multiline Adjacency List......................................... 543 9.3 Edge List................................................. 546 9.4 GEXF................................................... 552 9.5 GML................................................... 554 9.6 Pickle................................................... 559 9.7 GraphML................................................. 561 9.8 JSON................................................... 563 9.9 LEDA................................................... 568 9.10 YAML.................................................. 569 9.11 SparseGraph6.............................................. 570 9.12 Pajek................................................... 576 9.13 GIS Shapefile............................................... 577 10 Drawing 579 10.1 Matplotlib................................................ 579 10.2 Graphviz AGraph (dot).......................................... 587 10.3 Graphviz with pydot........................................... 590 10.4 Graph Layout............................................... 592 11 Exceptions 597 11.1 Exceptions................................................ 597 12 Utilities 599 12.1 Helper Functions............................................. 599 12.2 Data Structures and Algorithms..................................... 601 12.3 Random Sequence Generators...................................... 601 12.4 Decorators................................................ 603 12.5 Cuthill-Mckee Ordering......................................... 603 iii 12.6 Context Managers............................................ 605 13 Glossary 607 A Tutorial 609 A.1 Creating a graph............................................. 609 A.2 Nodes................................................... 609 A.3 Edges................................................... 610 A.4 What to use as nodes and edges..................................... 611 A.5 Accessing edges and neighbors..................................... 612 A.6 Adding attributes to graphs, nodes, and edges.............................. 612 A.7 Directed graphs.............................................. 613 A.8 Multigraphs................................................ 614 A.9 Graph generators and graph operations................................. 614 A.10 Analyzing graphs............................................. 615 A.11 Drawing graphs............................................
Recommended publications
  • Sagemath and Sagemathcloud
    Viviane Pons Ma^ıtrede conf´erence,Universit´eParis-Sud Orsay [email protected] { @PyViv SageMath and SageMathCloud Introduction SageMath SageMath is a free open source mathematics software I Created in 2005 by William Stein. I http://www.sagemath.org/ I Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab. Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 2 / 7 SageMath Source and language I the main language of Sage is python (but there are many other source languages: cython, C, C++, fortran) I the source is distributed under the GPL licence. Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 3 / 7 SageMath Sage and libraries One of the original purpose of Sage was to put together the many existent open source mathematics software programs: Atlas, GAP, GMP, Linbox, Maxima, MPFR, PARI/GP, NetworkX, NTL, Numpy/Scipy, Singular, Symmetrica,... Sage is all-inclusive: it installs all those libraries and gives you a common python-based interface to work on them. On top of it is the python / cython Sage library it-self. Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 4 / 7 SageMath Sage and libraries I You can use a library explicitly: sage: n = gap(20062006) sage: type(n) <c l a s s 'sage. interfaces .gap.GapElement'> sage: n.Factors() [ 2, 17, 59, 73, 137 ] I But also, many of Sage computation are done through those libraries without necessarily telling you: sage: G = PermutationGroup([[(1,2,3),(4,5)],[(3,4)]]) sage : G . g a p () Group( [ (3,4), (1,2,3)(4,5) ] ) Viviane Pons (U-PSud) SageMath and SageMathCloud October 19, 2016 5 / 7 SageMath Development model Development model I Sage is developed by researchers for researchers: the original philosophy is to develop what you need for your research and share it with the community.
    [Show full text]
  • Networkx Tutorial
    5.03.2020 tutorial NetworkX tutorial Source: https://github.com/networkx/notebooks (https://github.com/networkx/notebooks) Minor corrections: JS, 27.02.2019 Creating a graph Create an empty graph with no nodes and no edges. In [1]: import networkx as nx In [2]: G = nx.Graph() By definition, a Graph is a collection of nodes (vertices) along with identified pairs of nodes (called edges, links, etc). In NetworkX, nodes can be any hashable object e.g. a text string, an image, an XML object, another Graph, a customized node object, etc. (Note: Python's None object should not be used as a node as it determines whether optional function arguments have been assigned in many functions.) Nodes The graph G can be grown in several ways. NetworkX includes many graph generator functions and facilities to read and write graphs in many formats. To get started though we'll look at simple manipulations. You can add one node at a time, In [3]: G.add_node(1) add a list of nodes, In [4]: G.add_nodes_from([2, 3]) or add any nbunch of nodes. An nbunch is any iterable container of nodes that is not itself a node in the graph. (e.g. a list, set, graph, file, etc..) In [5]: H = nx.path_graph(10) file:///home/szwabin/Dropbox/Praca/Zajecia/Diffusion/Lectures/1_intro/networkx_tutorial/tutorial.html 1/18 5.03.2020 tutorial In [6]: G.add_nodes_from(H) Note that G now contains the nodes of H as nodes of G. In contrast, you could use the graph H as a node in G.
    [Show full text]
  • Networkx: Network Analysis with Python
    NetworkX: Network Analysis with Python Salvatore Scellato Full tutorial presented at the XXX SunBelt Conference “NetworkX introduction: Hacking social networks using the Python programming language” by Aric Hagberg & Drew Conway Outline 1. Introduction to NetworkX 2. Getting started with Python and NetworkX 3. Basic network analysis 4. Writing your own code 5. You are ready for your project! 1. Introduction to NetworkX. Introduction to NetworkX - network analysis Vast amounts of network data are being generated and collected • Sociology: web pages, mobile phones, social networks • Technology: Internet routers, vehicular flows, power grids How can we analyze this networks? Introduction to NetworkX - Python awesomeness Introduction to NetworkX “Python package for the creation, manipulation and study of the structure, dynamics and functions of complex networks.” • Data structures for representing many types of networks, or graphs • Nodes can be any (hashable) Python object, edges can contain arbitrary data • Flexibility ideal for representing networks found in many different fields • Easy to install on multiple platforms • Online up-to-date documentation • First public release in April 2005 Introduction to NetworkX - design requirements • Tool to study the structure and dynamics of social, biological, and infrastructure networks • Ease-of-use and rapid development in a collaborative, multidisciplinary environment • Easy to learn, easy to teach • Open-source tool base that can easily grow in a multidisciplinary environment with non-expert users
    [Show full text]
  • Graph Database Fundamental Services
    Bachelor Project Czech Technical University in Prague Faculty of Electrical Engineering F3 Department of Cybernetics Graph Database Fundamental Services Tomáš Roun Supervisor: RNDr. Marko Genyk-Berezovskyj Field of study: Open Informatics Subfield: Computer and Informatic Science May 2018 ii Acknowledgements Declaration I would like to thank my advisor RNDr. I declare that the presented work was de- Marko Genyk-Berezovskyj for his guid- veloped independently and that I have ance and advice. I would also like to thank listed all sources of information used Sergej Kurbanov and Herbert Ullrich for within it in accordance with the methodi- their help and contributions to the project. cal instructions for observing the ethical Special thanks go to my family for their principles in the preparation of university never-ending support. theses. Prague, date ............................ ........................................... signature iii Abstract Abstrakt The goal of this thesis is to provide an Cílem této práce je vyvinout webovou easy-to-use web service offering a database službu nabízející databázi neorientova- of undirected graphs that can be searched ných grafů, kterou bude možno efektivně based on the graph properties. In addi- prohledávat na základě vlastností grafů. tion, it should also allow to compute prop- Tato služba zároveň umožní vypočítávat erties of user-supplied graphs with the grafové vlastnosti pro grafy zadané uži- help graph libraries and generate graph vatelem s pomocí grafových knihoven a images. Last but not least, we implement zobrazovat obrázky grafů. V neposlední a system that allows bulk adding of new řadě je také cílem navrhnout systém na graphs to the database and computing hromadné přidávání grafů do databáze a their properties.
    [Show full text]
  • Networkx Reference Release 1.9.1
    NetworkX Reference Release 1.9.1 Aric Hagberg, Dan Schult, Pieter Swart September 20, 2014 CONTENTS 1 Overview 1 1.1 Who uses NetworkX?..........................................1 1.2 Goals...................................................1 1.3 The Python programming language...................................1 1.4 Free software...............................................2 1.5 History..................................................2 2 Introduction 3 2.1 NetworkX Basics.............................................3 2.2 Nodes and Edges.............................................4 3 Graph types 9 3.1 Which graph class should I use?.....................................9 3.2 Basic graph types.............................................9 4 Algorithms 127 4.1 Approximation.............................................. 127 4.2 Assortativity............................................... 132 4.3 Bipartite................................................. 141 4.4 Blockmodeling.............................................. 161 4.5 Boundary................................................. 162 4.6 Centrality................................................. 163 4.7 Chordal.................................................. 184 4.8 Clique.................................................. 187 4.9 Clustering................................................ 190 4.10 Communities............................................... 193 4.11 Components............................................... 194 4.12 Connectivity..............................................
    [Show full text]
  • Exploring Network Structure, Dynamics, and Function Using Networkx
    Proceedings of the 7th Python in Science Conference (SciPy 2008) Exploring Network Structure, Dynamics, and Function using NetworkX Aric A. Hagberg ([email protected])– Los Alamos National Laboratory, Los Alamos, New Mexico USA Daniel A. Schult ([email protected])– Colgate University, Hamilton, NY USA Pieter J. Swart ([email protected])– Los Alamos National Laboratory, Los Alamos, New Mexico USA NetworkX is a Python language package for explo- and algorithms, to rapidly test new hypotheses and ration and analysis of networks and network algo- models, and to teach the theory of networks. rithms. The core package provides data structures The structure of a network, or graph, is encoded in the for representing many types of networks, or graphs, edges (connections, links, ties, arcs, bonds) between including simple graphs, directed graphs, and graphs nodes (vertices, sites, actors). NetworkX provides ba- with parallel edges and self-loops. The nodes in Net- sic network data structures for the representation of workX graphs can be any (hashable) Python object simple graphs, directed graphs, and graphs with self- and edges can contain arbitrary data; this flexibil- loops and parallel edges. It allows (almost) arbitrary ity makes NetworkX ideal for representing networks objects as nodes and can associate arbitrary objects to found in many different scientific fields. edges. This is a powerful advantage; the network struc- In addition to the basic data structures many graph ture can be integrated with custom objects and data algorithms are implemented for calculating network structures, complementing any pre-existing code and properties and structure measures: shortest paths, allowing network analysis in any application setting betweenness centrality, clustering, and degree dis- without significant software development.
    [Show full text]
  • Strongly Connected Components and Biconnected Components
    Strongly Connected Components and Biconnected Components Daniel Wisdom 27 January 2017 1 2 3 4 5 6 7 8 Figure 1: A directed graph. Credit: Crash Course Coding Companion. 1 Strongly Connected Components A strongly connected component (SCC) is a set of vertices where every vertex can reach every other vertex. In an undirected graph the SCCs are just the groups of connected vertices. We can find them using a simple DFS. This works because, in an undirected graph, u can reach v if and only if v can reach u. This is not true in a directed graph, which makes finding the SCCs harder. More on that later. 2 Kernel graph We can travel between any two nodes in the same strongly connected component. So what if we replaced each strongly connected component with a single node? This would give us what we call the kernel graph, which describes the edges between strongly connected components. Note that the kernel graph is a directed acyclic graph because any cycles would constitute an SCC, so the cycle would be compressed into a kernel. 3 1,2,5,6 4,7 8 Figure 2: Kernel graph of the above directed graph. 3 Tarjan's SCC Algorithm In a DFS traversal of the graph every SCC will be a subtree of the DFS tree. This subtree is not necessarily proper, meaning that it may be missing some branches which are their own SCCs. This means that if we can identify every node that is the root of its SCC in the DFS, we can enumerate all the SCCs.
    [Show full text]
  • Analyzing Social Media Network for Students in Presidential Election 2019 with Nodexl
    ANALYZING SOCIAL MEDIA NETWORK FOR STUDENTS IN PRESIDENTIAL ELECTION 2019 WITH NODEXL Irwan Dwi Arianto Doctoral Candidate of Communication Sciences, Airlangga University Corresponding Authors: [email protected] Abstract. Twitter is widely used in digital political campaigns. Twitter as a social media that is useful for building networks and even connecting political participants with the community. Indonesia will get a demographic bonus starting next year until 2030. The number of productive ages that will become a demographic bonus if not recognized correctly can be a problem. The election organizer must seize this opportunity for the benefit of voter participation. This study aims to describe the network structure of students in the 2019 presidential election. The first debate was held on January 17, 2019 as a starting point for data retrieval on Twitter social media. This study uses data sources derived from Twitter talks from 17 January 2019 to 20 August 2019 with keywords “#pilpres2019 OR #mahasiswa since: 2019-01-17”. The data obtained were analyzed by the communication network analysis method using NodeXL software. Our Analysis found that Top Influencer is @jokowi, as well as Top, Mentioned also @jokowi while Top Tweeters @okezonenews and Top Replied-To @hasmi_bakhtiar. Jokowi is incumbent running for re-election with Ma’ruf Amin (Senior Muslim Cleric) as his running mate against Prabowo Subianto (a former general) and Sandiaga Uno as his running mate (former vice governor). This shows that the more concentrated in the millennial generation in this case students are presidential candidates @jokowi. @okezonenews, the official twitter account of okezone.com (MNC Media Group).
    [Show full text]
  • Assortativity and Mixing
    Assortativity and Assortativity and Mixing General mixing between node categories Mixing Assortativity and Mixing Definition Definition I Assume types of nodes are countable, and are Complex Networks General mixing General mixing Assortativity by assigned numbers 1, 2, 3, . Assortativity by CSYS/MATH 303, Spring, 2011 degree degree I Consider networks with directed edges. Contagion Contagion References an edge connects a node of type µ References e = Pr Prof. Peter Dodds µν to a node of type ν Department of Mathematics & Statistics Center for Complex Systems aµ = Pr(an edge comes from a node of type µ) Vermont Advanced Computing Center University of Vermont bν = Pr(an edge leads to a node of type ν) ~ I Write E = [eµν], ~a = [aµ], and b = [bν]. I Requirements: X X X eµν = 1, eµν = aµ, and eµν = bν. µ ν ν µ Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. 1 of 26 4 of 26 Assortativity and Assortativity and Outline Mixing Notes: Mixing Definition Definition General mixing General mixing Assortativity by I Varying eµν allows us to move between the following: Assortativity by degree degree Definition Contagion 1. Perfectly assortative networks where nodes only Contagion References connect to like nodes, and the network breaks into References subnetworks. General mixing P Requires eµν = 0 if µ 6= ν and µ eµµ = 1. 2. Uncorrelated networks (as we have studied so far) Assortativity by degree For these we must have independence: eµν = aµbν . 3. Disassortative networks where nodes connect to nodes distinct from themselves. Contagion I Disassortative networks can be hard to build and may require constraints on the eµν.
    [Show full text]
  • Graph and Network Analysis
    Graph and Network Analysis Dr. Derek Greene Clique Research Cluster, University College Dublin Web Science Doctoral Summer School 2011 Tutorial Overview • Practical Network Analysis • Basic concepts • Network types and structural properties • Identifying central nodes in a network • Communities in Networks • Clustering and graph partitioning • Finding communities in static networks • Finding communities in dynamic networks • Applications of Network Analysis Web Science Summer School 2011 2 Tutorial Resources • NetworkX: Python software for network analysis (v1.5) http://networkx.lanl.gov • Python 2.6.x / 2.7.x http://www.python.org • Gephi: Java interactive visualisation platform and toolkit. http://gephi.org • Slides, full resource list, sample networks, sample code snippets online here: http://mlg.ucd.ie/summer Web Science Summer School 2011 3 Introduction • Social network analysis - an old field, rediscovered... [Moreno,1934] Web Science Summer School 2011 4 Introduction • We now have the computational resources to perform network analysis on large-scale data... http://www.facebook.com/note.php?note_id=469716398919 Web Science Summer School 2011 5 Basic Concepts • Graph: a way of representing the relationships among a collection of objects. • Consists of a set of objects, called nodes, with certain pairs of these objects connected by links called edges. A B A B C D C D Undirected Graph Directed Graph • Two nodes are neighbours if they are connected by an edge. • Degree of a node is the number of edges ending at that node. • For a directed graph, the in-degree and out-degree of a node refer to numbers of edges incoming to or outgoing from the node.
    [Show full text]
  • Networkx: Network Analysis with Python
    NetworkX: Network Analysis with Python Dionysis Manousakas (special thanks to Petko Georgiev, Tassos Noulas and Salvatore Scellato) Social and Technological Network Data Analytics Computer Laboratory, University of Cambridge February 2017 Outline 1. Introduction to NetworkX 2. Getting started with Python and NetworkX 3. Basic network analysis 4. Writing your own code 5. Ready for your own analysis! 2 1. Introduction to NetworkX 3 Introduction: networks are everywhere… Social Mobile phone networks Vehicular flows networks Web pages/citations Internet routing How can we analyse these networks? Python + NetworkX 4 Introduction: why Python? Python is an interpreted, general-purpose high-level programming language whose design philosophy emphasises code readability + - Clear syntax, indentation Can be slow Multiple programming paradigms Beware when you are Dynamic typing, late binding analysing very large Multiple data types and structures networks Strong on-line community Rich documentation Numerous libraries Expressive features Fast prototyping 5 Introduction: Python’s Holy Trinity Python’s primary NumPy is an extension to Matplotlib is the library for include primary plotting mathematical and multidimensional arrays library in Python. statistical computing. and matrices. Contains toolboxes Supports 2-D and 3-D for: Both SciPy and NumPy plotting. All plots are • Numeric rely on the C library highly customisable optimization LAPACK for very fast and ready for implementation. professional • Signal processing publication. • Statistics, and more…
    [Show full text]
  • A New Way to Measure Homophily in Directed Graphs
    The Popularity-Homophily Index: A new way to measure Homophily in Directed Graphs Shiva Oswal UC Berkeley Extension, Berkeley, CA, USA Abstract In networks, the well-documented tendency for people with similar characteris- tics to form connections is known as the principle of homophily. Being able to quantify homophily into a number has a signicant real-world impact, ranging from government fund-allocation to netuning the parameters in a sociological model. This paper introduces the “Popularity-Homophily Index” (PH Index) as a new metric to measure homophily in directed graphs. The PH Index takes into account the “popularity” of each actor in the interaction network, with popularity precalculated with an importance algorithm like Google PageRank. The PH Index improves upon other existing measures by weighting a homophilic edge leading to an important actor over a homophilic edge leading to a less important actor. The PH Index can be calculated not only for a single node in a directed graph but also for the entire graph. This paper calculates the PH Index of two sample graphs, and concludes with an overview of the strengths and weaknesses of the PH Index, and its potential applications in the real world. Keywords: measuring homophily; popularity-homophily index; social interaction networks; directed graphs 1 Introduction Homophily, meaning “love of the same,” captures the tendency of agents, most com- monly people, to connect with other agents that share sociodemographic, behavioral, or intrapersonal characteristics (McPherson et al, 2001). In the language of social interaction networks, homophily is the “tendency for friendships and many other arXiv:2109.00348v1 [cs.SI] 29 Aug 2021 interpersonal relationships to occur between similar people” (Thelwall, 2009).
    [Show full text]