ó žÃÒYc@sndZddlZddlmZdjdgƒZddgZdd„Z d d ddd „Z d „Z dS( s&Generators of x-y pairs of node data.iÿÿÿÿN(tdict_to_numpy_arrayt s%Aric Hagberg tnode_attribute_xytnode_degree_xyc cs!|dkrt|ƒ}n t|ƒ}|j}xê|jƒD]Ü\}}||kr[q=n||j|dƒ}|jƒrÛx™|jƒD]J\}}||j|dƒ} x%|jƒD]\} } || fVq¹WqŠWq=x;|jƒD]-\}} ||j|dƒ} || fVqèWq=WdS(s3Return iterator of node-attribute pairs for all edges in G. Parameters ---------- G: NetworkX graph attribute: key The node attribute key. nodes: list or iterable (optional) Use only edges that are adjacency to specified nodes. The default is all nodes. Returns ------- (x,y): 2-tuple Generates 2-tuple of (attribute,attribute) values. Examples -------- >>> G = nx.DiGraph() >>> G.add_node(1,color='red') >>> G.add_node(2,color='blue') >>> G.add_edge(1,2) >>> list(nx.node_attribute_xy(G,'color')) [('red', 'blue')] Notes ----- For undirected graphs each edge is produced twice, once for each edge representation (u,v) and (v,u), with the exception of self-loop edges which only appear once. N(tNonetsettnodest adjacencytgett is_multigraphtitems( tGt attributeRtGnodestutnbrsdicttuattrtvtkeystvattrtktdteattr((s}/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/assortativity/pairs.pyR s "     touttinc #sêˆdkrt|ƒ‰n tˆƒ‰|j}|j}|jƒrvi|jd6|jd6}||}||}nxm|ˆd|ƒD]Y\}} ‡fd†|j|ƒDƒ} x+|| d|ƒD]\} } | | fVqÇWq‰WdS(s’Generate node degree-degree pairs for edges in G. Parameters ---------- G: NetworkX graph x: string ('in','out') The degree type for source node (directed graphs only). y: string ('in','out') The degree type for target node (directed graphs only). weight: string or None, optional (default=None) The edge attribute that holds the numerical value used as a weight. If None, then each edge has weight 1. The degree is the sum of the edge weights adjacent to the node. nodes: list or iterable (optional) Use only edges that are adjacency to specified nodes. The default is all nodes. Returns ------- (x,y): 2-tuple Generates 2-tuple of (degree,degree) values. Examples -------- >>> G = nx.DiGraph() >>> G.add_edge(1,2) >>> list(nx.node_degree_xy(G,x='out',y='in')) [(1, 1)] >>> list(nx.node_degree_xy(G,x='in',y='out')) [(0, 0)] Notes ----- For undirected graphs each edge is produced twice, once for each edge representation (u,v) and (v,u), with the exception of self-loop edges which only appear once. RRtweightc3s'|]\}}|ˆkr|VqdS(N((t.0t_tnbr(R(s}/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/assortativity/pairs.pys wsN(RRtdegreet is_directedt out_degreet in_degreetedges( R txtyRRtxdegtydegt directionRtdegut neighborsRtdegv((Rs}/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/assortativity/pairs.pyR?s+         cCs`ddlm}yddl}Wn|dƒ‚nXyddl}Wn|dƒ‚nXdS(Niÿÿÿÿ(tSkipTestsNumPy not availablesSciPy not available(tnoseR*tnumpytscipy(tmoduleR*R,R-((s}/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/assortativity/pairs.pyt setup_module}s( t__doc__tnetworkxtnxtnetworkx.utilsRtjoint __author__t__all__RRRR/(((s}/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/assortativity/pairs.pyts   6>