Twitter Graph Assignment

Total Page:16

File Type:pdf, Size:1020Kb

Twitter Graph Assignment I290-1 Fall 2012: Analyzing Big Data with Twitter Assignment 3 Twitter Graph assignment Assignment Goals The goal of this assignment is to give you experience with the Twitter social graph, and a bit of exposure to some simple graph algorithms and graph code, by having you acquire data from the Twitter social graph and process it in various ways. Background You have probably learned about graph algorithms in your other courses; some are especially relevant to social media. We’ve already looked a bit at friending and following on Twitter. We can link up friends and followers into a graph, which can be considered the “interest graph”. We can also look at mentions of one user by another as another kind of “conversation graph” within Twitter. (A mention occurs when one user includes the handle of another user in the text of their tweet, via the @ symbol. A retweet might also be considered a mention but isn’t strictly one.) For this assignment, we will explore both the conversation graph and the interest graph and examine their properties a bit. Since we have students who use both python and java in the class, this assignment tries to accommodate both. This time python is the easier tool to use, however, and will be the tool we focus on, but you are free to use a Java equivalent. The tools to download to follow the instructions as given here are NetworkX (python) and GraphViz (which is programming language neutral). Java options are JUNG or JGraphT or any other package that you like. This link compares JGraphT and JUNG. Another graph plotting library that looks good (but which I haven’t tried yet) is Gephi. Part 1: Take a Look at the Conversation Graph We first need to build up a graph of who mentions whom. We’ll use the streaming API from Assignment 2 to build this. What we want is a large set of ordered pairs of the form of (User A, User B) in which user A mentions user B in a tweet. (If you want more details, these steps are based on a series of blog posts by Isaac Hepworth.) We are going to feed this into a graph visualization tool. One that you can use, and for which instructions are provided below, is GraphViz (but you are welcome to use 1 I290-1 Fall 2012: Analyzing Big Data with Twitter Assignment 3 other visualization tools instead). An advantage of GraphViz for this assignment is that it has the ability to extract connected components, which will be useful for plotting the biggest connected structures. Here are some steps to follow. (a) Download 25,000 @ mentions into a file using the sample stream. You’ll need to record the screen name of the person who wrote the tweet as well as who they mentioned (there is a user_mention type built into entities portion of the streaming API). I ran the streaming API for about 15 minutes to get this many unique mentions. (b) Lowercase the screen names (it’s easiest to do this while you download). (c) Remove duplicates (you might want to use unix commands sort | uniq). (d) Create a file of the format that is acceptable to your graph plotting program. For GraphViz, you need it to read like the sample below (spaces don’t matter). digraph mentions { "000icm000" -> "miyavi_official" "005dw" -> "u_td5" "007villegas" -> "carolacortez327" "00amnah" -> "sontk2011" "00genetaylor00" -> "tcannada" "00nere00" -> "rafamoratete" "00sleepy00" -> "brjohnson2000" "0101s" -> "aro3_brodcast" } (e) Once you have this, you can plot it in GraphViz. Because it can take a long time to render, it’s best not to just plot the whole thing in GraphViz. Instead, you can use the connected components tool to plot the subgraphs. GraphViz has several different plotting tools and parameters. Here we just give the incantation for plotting these graphs with a black background and white lines, in a square layout. Assuming your digraph is named mentions.gv, this command will create a png file that has the top 1000 connected components. If you change the 1000 to 5, you’ll get the 5 largest connected components instead. ccomps -zX#0-1000 mentions.gv | \ grep "-" | cat <(echo "digraph mentions {") - <(echo "}") | \ sfdp -Gbgcolor=black -Ncolor=white -Ecolor=white \ -Nwidth=0.02 -Nheight=0.02 -Nfixedsize=true \ -Nlabel='' -Earrowsize=0.4 -Gsize=75 -Gratio=fill \ -Tpng > ccomp0-1000.large.png 2 I290-1 Fall 2012: Analyzing Big Data with Twitter Assignment 3 Here is the plot that I got for largest 5 connected components for 26,993 unique mentions, as well as the largest 1000. 3 I290-1 Fall 2012: Analyzing Big Data with Twitter Assignment 3 It would be cool to modify the graph to show labels of the user screen names for the largest connected components. To turn in for part 1: At least two images of a Twitter mention graph based on at least 20,000 edges, although not all edges need to be in the image (as shown above, not all the edges are there, because the connected components function removed many of them). Your images may look different than what I’ve shown here although you can follow the instructions here if you want, but this is just meant to get you started. Feel free to use your imagination! If you want to do more graph analysis, please do! If you want to use more nodes, or gather mentions in some other way, or use retweets somehow, please do! These instructions are meant to be a starting point to help you explore. Points: 4 I290-1 Fall 2012: Analyzing Big Data with Twitter Assignment 3 • [8 pts] For producing your own graph and at least two images, and your commentary on what the image appears to mean. • [1 pt] For enhancing the way the visualization in some manner. • [1 pt] For enhancing the processing of the tweets or the graph in some manner. Part 2: Take a Look at the Interests Graph Now we’ll take a look at the interests graph. You can do this either with your own friends network or you can choose some user of interest to start with. In the explanations below I’m going to assume you are using your own friends network. It’s a good idea to make sure there aren’t too many friends or too few friends in the network, however; between 100 (so not too sparse) and 500 (so not too big) is best. (This is based on a blog post by Drew Conway.) The idea is to find users who share your interests closely but who you may be unaware of. The first step is to gather up the people connected to you via your direct friends, then find the friends of those friends. This will lead to a lot of single- chain links, so these are eliminated, and a core of more tightly linked people will be extracted out, by using k-core analysis. From the core, you will then look for the friends of friends that most of this group follows, and that you don’t already follow. In other words, the code shows you how to effectively close the open triads. You’ll see which of these missing links are most popular, and then you can decide if you want to consider following them or not. We’ll also look at the graph properties of these networks as we go. The first thing you need to do is download and install NetworkX if you are using python, or another graph package if you prefer. You can use different steps if you like to get a similar outcome if you don’t use python. (Here is a very nice introduction to NetworkX and graph properties.) You may follow the steps and comments in the enclosed python file. Here are the top results for UCBTweeter, the Twitter account for our course; looks like there are some interesting suggestions to follow! 20 of your friends are already following UCBTweeter 8 of your friends are already following MarsCuriosity 7 of your friends are already following ruslansv 7 of your friends are already following ML_Hipster 7 of your friends are already following FakeDorsey 6 of your friends are already following sippey 6 of your friends are already following neiltyson 5 I290-1 Fall 2012: Analyzing Big Data with Twitter Assignment 3 6 of your friends are already following marissamayer 5 of your friends are already following vkhosla 5 of your friends are already following twoffice 5 of your friends are already following sagemintblue 5 of your friends are already following daltonc 5 of your friends are already following chanian 5 of your friends are already following MartiHearst 5 of your friends are already following BorowitzReport 4 of your friends are already following wattenberg 4 of your friends are already following wangtian 4 of your friends are already following squarecog 4 of your friends are already following paul_irish 4 of your friends are already following mlevchin 4 of your friends are already following mccv 4 of your friends are already following matei_zaharia 4 of your friends are already following mashable 4 of your friends are already following hackweek Now there are other things you can do with this graph. If you convert it from a directed graph (DiGraph) to an undirected graph, you can compute the clustering coefficients and the number of triangles. The clustering coefficient is a measure of the degree to which nodes in a graph tend to cluster together, and can be computed as the fraction of possible triangles that exist; gaps suggest potentials for recommendations of new edges (or followers).
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]
  • Gephi Tools for Network Analysis and Visualization
    Frontiers of Network Science Fall 2018 Class 8: Introduction to Gephi Tools for network analysis and visualization Boleslaw Szymanski CLASS PLAN Main Topics • Overview of tools for network analysis and visualization • Installing and using Gephi • Gephi hands-on labs Frontiers of Network Science: Introduction to Gephi 2018 2 TOOLS OVERVIEW (LISTED ALPHABETICALLY) Tools for network analysis and visualization • Computing model and interface – Desktop GUI applications – API/code libraries, Web services – Web GUI front-ends (cloud, distributed, HPC) • Extensibility model – Only by the original developers – By other users/developers (add-ins, modules, additional packages, etc.) • Source availability model – Open-source – Closed-source • Business model – Free of charge – Commercial Frontiers of Network Science: Introduction to Gephi 2018 3 TOOLS CINET CyberInfrastructure for NETwork science • Accessed via a Web-based portal (http://cinet.vbi.vt.edu/granite/granite.html) • Supported by grants, no charge for end users • Aims to provide researchers, analysts, and educators interested in Network Science with an easy-to-use cyber-environment that is accessible from their desktop and integrates into their daily work • Users can contribute new networks, data, algorithms, hardware, and research results • Primarily for research, teaching, and collaboration • No programming experience is required Frontiers of Network Science: Introduction to Gephi 2018 4 TOOLS Cytoscape Network Data Integration, Analysis, and Visualization • A standalone GUI application
    [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]
  • Gephi-Poster-Sunbelt-July10.Pdf
    The Open Graph Viz Platform Gephi is a new open-source network visualization platform. It aims to create a sustainable software and technical Download Gephi at ecosystem, driven by a large international open-source community, who shares common interests in networks and http://gephi.org complex systems. The rendering engine can handle networks larger than 100K elements and guarantees responsiveness. Designed to make data navigation and manipulation easy, it aims to fulll the complete chain from data importing to aesthetics renements and interaction. Particular focus is made on the software usability and interoperability with other tools. A lot of eorts are made to facilitate the community growth, by providing tutorials, plug-ins development documentation, support and student projects. Current developments include Dynamic Network Analysis (DNA) and Goals spigots (Emails, Twitter, Facebook …) import. Create the Photoshop of network visualization, by combining a rich set of Gephi aims at being built-in features and a sustainable, open to friendly user interface. many kind of users, and creating a large, Design a modular and international and extensible software diverse open-source architecture, facilitate plug-ins development, community reuse and mashup. Build a large, international Features Highlight and diverse open-source community. Community Join the network, participate designing the roadmap, get help to quickly code plug-ins or simply share your ideas. Select, move, paint, resize, connect, group Just with the mouse Export in SVG/PDF to include your infographics Metrics Architecture * Betweenness, Eigenvector, Closeness The modular architecture allows developers adding and extending features * Eccentricity with ease by developing plug-ins. Gephi can also be used as Java library in * Diameter, Average Shortest Path other applications and build for instance, a layout server.
    [Show full text]
  • Plantuml Language Reference Guide (Version 1.2021.2)
    Drawing UML with PlantUML PlantUML Language Reference Guide (Version 1.2021.2) PlantUML is a component that allows to quickly write : • Sequence diagram • Usecase diagram • Class diagram • Object diagram • Activity diagram • Component diagram • Deployment diagram • State diagram • Timing diagram The following non-UML diagrams are also supported: • JSON Data • YAML Data • Network diagram (nwdiag) • Wireframe graphical interface • Archimate diagram • Specification and Description Language (SDL) • Ditaa diagram • Gantt diagram • MindMap diagram • Work Breakdown Structure diagram • Mathematic with AsciiMath or JLaTeXMath notation • Entity Relationship diagram Diagrams are defined using a simple and intuitive language. 1 SEQUENCE DIAGRAM 1 Sequence Diagram 1.1 Basic examples The sequence -> is used to draw a message between two participants. Participants do not have to be explicitly declared. To have a dotted arrow, you use --> It is also possible to use <- and <--. That does not change the drawing, but may improve readability. Note that this is only true for sequence diagrams, rules are different for the other diagrams. @startuml Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: Another authentication Response @enduml 1.2 Declaring participant If the keyword participant is used to declare a participant, more control on that participant is possible. The order of declaration will be the (default) order of display. Using these other keywords to declare participants
    [Show full text]
  • Travels of Baron Munchausen
    Songs for Scribus Travels of Baron Munchausen Songs for Scribus Travels of Baron Munchausen Travels of Baron Munchausen How should I disengage myself? I was not much pleased with my awkward situation – with a wolf face to face; our ogling was not of the most pleasant kind. If I withdrew my arm, then the animal would fly the more furiously upon me; that I saw in his flaming eyes. In short, I laid hold of his tail, turned him inside out like a glove, and flung him to the ground, where I left him. On January 3 2011, the first working day of the year, OSP gathered around Scribus. We wanted to explore framerendering, bootstrapping Scribus and to play around with the incredible adventures of Baron von Munchausen. The idea was to produce some kind of experimental result, a follow- up of to our earlier attempts to turn a frog into a prince. One day we asked Scribus team-members what their favourite Scribus feature was. After some hesitation they pointed us to the magical framerender. Framerenderer The Framerender is an image frame with a wrapper, a GUI, and a configuration scheme. External programs are invoked from inside of Scribus, and their output is placed into the frame! By default, the current Scribus is configured to host the following friends: LaTeX, Lilypond, gnuplot, dot/GraphViz and POV-Ray Today we are working with Lilypond. We are also creating cus- tom tools that generate PostScript/PDF via Imagemagick and other command line tools. Lilypond LilyPond is a music engraving program, devoted to producing the highest-quality sheet music possible.
    [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]
  • A Comparative Analysis of Large-Scale Network Visualization Tools
    A Comparative Analysis of Large-scale Network Visualization Tools Md Abdul Motaleb Faysal and Shaikh Arifuzzaman Department of Computer Science, University of New Orleans New Orleans, LA 70148, USA. Email: [email protected], [email protected] Abstract—Network (Graph) is a powerful abstraction for scalability for large network analysis. Such study will help a representing underlying relations and structures in large complex person to decide which tool to use for a specific case based systems. Network visualization provides a convenient way to ex- on his need. plore and study such structures and reveal useful insights. There exist several network visualization tools; however, these vary in One such study in [3] compares a couple of tools based on terms of scalability, analytics feature, and user-friendliness. Due scalability. Comparative studies on other visualization metrics to the huge growth of social, biological, and other scientific data, should be conducted to let end users have freedom in choosing the corresponding network data is also large. Visualizing such the specific tool he needs to use. In this paper, we have chosen large network poses another level of difficulty. In this paper, we five widely used visualization tools for an empirical and identify several popular network visualization tools and provide a comparative analysis based on the features and operations comparative analysis. Our comparisons are based on factors these tools support. We demonstrate empirically how those tools such as supported file formats, scalability in visualization scale to large networks. We also provide several case studies of and analysis, interacting capability with the drawn network, visual analytics on large network data and assess performances end user-friendliness (e.g., users with no programming back- of the tools.
    [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]