/usr/lib/python2.7/dist-packages/networkx/utils/misc.py is in python-networkx 1.8.1-0ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | """
Miscellaneous Helpers for NetworkX.
These are not imported into the base networkx namespace but
can be accessed, for example, as
>>> import networkx
>>> networkx.utils.is_string_like('spam')
True
"""
# Copyright (C) 2004-2011 by
# Aric Hagberg <hagberg@lanl.gov>
# Dan Schult <dschult@colgate.edu>
# Pieter Swart <swart@lanl.gov>
# All rights reserved.
# BSD license.
import sys
import subprocess
import uuid
import networkx as nx
from networkx.external.decorator import decorator
__author__ = '\n'.join(['Aric Hagberg (hagberg@lanl.gov)',
'Dan Schult(dschult@colgate.edu)',
'Ben Edwards(bedwards@cs.unm.edu)'])
### some cookbook stuff
# used in deciding whether something is a bunch of nodes, edges, etc.
# see G.add_nodes and others in Graph Class in networkx/base.py
def is_string_like(obj): # from John Hunter, types-free version
"""Check if obj is string."""
try:
obj + ''
except (TypeError, ValueError):
return False
return True
def iterable(obj):
""" Return True if obj is iterable with a well-defined len()."""
if hasattr(obj,"__iter__"): return True
try:
len(obj)
except:
return False
return True
def flatten(obj, result=None):
""" Return flattened version of (possibly nested) iterable object. """
if not iterable(obj) or is_string_like(obj):
return obj
if result is None:
result = []
for item in obj:
if not iterable(item) or is_string_like(item):
result.append(item)
else:
flatten(item, result)
return obj.__class__(result)
def is_list_of_ints( intlist ):
""" Return True if list is a list of ints. """
if not isinstance(intlist,list): return False
for i in intlist:
if not isinstance(i,int): return False
return True
def make_str(t):
"""Return the string representation of t."""
if is_string_like(t): return t
return str(t)
def cumulative_sum(numbers):
"""Yield cumulative sum of numbers.
>>> import networkx.utils as utils
>>> list(utils.cumulative_sum([1,2,3,4]))
[1, 3, 6, 10]
"""
csum = 0
for n in numbers:
csum += n
yield csum
def generate_unique_node():
""" Generate a unique node label."""
return str(uuid.uuid1())
def default_opener(filename):
"""Opens `filename` using system's default program.
Parameters
----------
filename : str
The path of the file to be opened.
"""
cmds = {'darwin': ['open'],
'linux2': ['xdg-open'],
'win32': ['cmd.exe', '/C', 'start', '']}
cmd = cmds[sys.platform] + [filename]
subprocess.call(cmd)
def dict_to_numpy_array(d,mapping=None):
"""Convert a dictionary of dictionaries to a numpy array
with optional mapping."""
try:
return dict_to_numpy_array2(d, mapping)
except AttributeError:
return dict_to_numpy_array1(d,mapping)
def dict_to_numpy_array2(d,mapping=None):
"""Convert a dictionary of dictionaries to a 2d numpy array
with optional mapping."""
try:
import numpy
except ImportError:
raise ImportError(
"dict_to_numpy_array requires numpy : http://scipy.org/ ")
if mapping is None:
s=set(d.keys())
for k,v in d.items():
s.update(v.keys())
mapping=dict(zip(s,range(len(s))))
n=len(mapping)
a = numpy.zeros((n, n))
for k1, row in d.items():
for k2, value in row.items():
i=mapping[k1]
j=mapping[k2]
a[i,j] = value
return a
def dict_to_numpy_array1(d,mapping=None):
"""Convert a dictionary of numbers to a 1d numpy array
with optional mapping."""
try:
import numpy
except ImportError:
raise ImportError(
"dict_to_numpy_array requires numpy : http://scipy.org/ ")
if mapping is None:
s = set(d.keys())
mapping = dict(zip(s,range(len(s))))
n = len(mapping)
a = numpy.zeros(n)
for k1, value in d.items():
i = mapping[k1]
a[i] = value
return a
|