Statistics
| Branch: | Revision:

## iof-tools / networkxMiCe / networkx-master / networkx / algorithms / isolate.py @ 5cef0f13

History | View | Annotate | Download (2.6 KB)

 1 ```# -*- encoding: utf-8 -*- ``` ```# Copyright 2015 NetworkX developers. ``` ```# Copyright (C) 2004-2019 by ``` ```# Aric Hagberg ``` ```# Dan Schult ``` ```# Pieter Swart ``` ```# All rights reserved. ``` ```# BSD license. ``` ```""" ``` ```Functions for identifying isolate (degree zero) nodes. ``` ```""" ``` ```import networkx as nx ``` ```__author__ = """\n""".join(['Drew Conway ', ``` ``` 'Aric Hagberg ']) ``` ```__all__ = ['is_isolate', 'isolates', 'number_of_isolates'] ``` ```def is_isolate(G, n): ``` ``` """Determines whether a node is an isolate. ``` ``` ``` ``` An *isolate* is a node with no neighbors (that is, with degree ``` ``` zero). For directed graphs, this means no in-neighbors and no ``` ``` out-neighbors. ``` ``` ``` ``` Parameters ``` ``` ---------- ``` ``` G : NetworkX graph ``` ``` ``` ``` n : node ``` ``` A node in `G`. ``` ``` ``` ``` Returns ``` ``` ------- ``` ``` is_isolate : bool ``` ``` True if and only if `n` has no neighbors. ``` ``` ``` ``` Examples ``` ``` -------- ``` ``` >>> G=nx.Graph() ``` ``` >>> G.add_edge(1,2) ``` ``` >>> G.add_node(3) ``` ``` >>> nx.is_isolate(G,2) ``` ``` False ``` ``` >>> nx.is_isolate(G,3) ``` ``` True ``` ``` """ ``` ``` return G.degree(n) == 0 ``` ```def isolates(G): ``` ``` """Iterator over isolates in the graph. ``` ``` ``` ``` An *isolate* is a node with no neighbors (that is, with degree ``` ``` zero). For directed graphs, this means no in-neighbors and no ``` ``` out-neighbors. ``` ``` ``` ``` Parameters ``` ``` ---------- ``` ``` G : NetworkX graph ``` ``` ``` ``` Returns ``` ``` ------- ``` ``` iterator ``` ``` An iterator over the isolates of `G`. ``` ``` ``` ``` Examples ``` ``` -------- ``` ``` To get a list of all isolates of a graph, use the :class:`list` ``` ``` constructor:: ``` ``` ``` ``` >>> G = nx.Graph() ``` ``` >>> G.add_edge(1, 2) ``` ``` >>> G.add_node(3) ``` ``` >>> list(nx.isolates(G)) ``` ``` [3] ``` ``` ``` ``` To remove all isolates in the graph, first create a list of the ``` ``` isolates, then use :meth:`Graph.remove_nodes_from`:: ``` ``` ``` ``` >>> G.remove_nodes_from(list(nx.isolates(G))) ``` ``` >>> list(G) ``` ``` [1, 2] ``` ``` ``` ``` For digraphs, isolates have zero in-degree and zero out_degre:: ``` ``` ``` ``` >>> G = nx.DiGraph([(0, 1), (1, 2)]) ``` ``` >>> G.add_node(3) ``` ``` >>> list(nx.isolates(G)) ``` ``` [3] ``` ``` ``` ``` """ ``` ``` return (n for n, d in G.degree() if d == 0) ``` ```def number_of_isolates(G): ``` ``` """Returns the number of isolates in the graph. ``` ``` ``` ``` An *isolate* is a node with no neighbors (that is, with degree ``` ``` zero). For directed graphs, this means no in-neighbors and no ``` ``` out-neighbors. ``` ``` ``` ``` Parameters ``` ``` ---------- ``` ``` G : NetworkX graph ``` ``` ``` ``` Returns ``` ``` ------- ``` ``` int ``` ``` The number of degree zero nodes in the graph `G`. ``` ``` ``` ``` """ ``` ``` # TODO This can be parallelized. ``` ``` return sum(1 for v in isolates(G)) ```