o
    3ήc                     @   sd   d dl Z d dlmZ d dlmZmZ d dlmZmZm	Z	m
Z
 dd Zddd	Zd
d ZdddZdS )    N)degree_mixing_dict)gnm_random_graphpowerlaw_cluster_graph)directed_joint_degree_graphis_valid_directed_joint_degreeis_valid_joint_degreejoint_degree_graphc                  C   s   ddidddddddddddd} t | sJ ddidddddddddddd}t |r4J ddiddd	dddddd	ddd}t |rNJ ddidddddddddddd}t |rhJ ddd
ii}t |rtJ dS )z8Tests for conditions that invalidate a joint degree dict         )r      r	   )r   r	   )r
   r   r   )r
   r   r   r	         ?r   	   N)r   )joint_degreesjoint_degrees_1joint_degrees_2joint_degrees_3joint_degrees_5 r   V/tmp/pip-target-vg8gfxp4/lib/python/networkx/generators/tests/test_joint_degree_seq.pytest_is_valid_joint_degree   s4   







r   
   c           
      C   sd   t | D ]+}tt }d\}}}t||||d}t|dd}t|}t|dd}	||	ks/J qd S )N)   r   r
   )seedF)
normalized)rangeinttimer   r   r   )
ntimes_r   nmpgjoint_degrees_gGjoint_degrees_Gr   r   r   test_joint_degree_graph>   s   
r'   c                  C   s   g d} g d}ddddi}t | ||sJ ddddi}t | ||r&J ddddi}t | ||r5J g d}ddddi}t | ||rHJ g d	} t | ||rTJ d S )
N)r   r
   r
   r   )r
   r
   r
   r
   r
   r   )r
   r   r   g      @)r
   r
   r
   )r   r
   r   )r   )
in_degreesout_degreesnkkr   r   r   #test_is_valid_directed_joint_degreeR   s   r+      d     c           	      C   s   t |D ]L}t| |d dd}tt|  }tt|  }t|}t|||}|tt|  ks:J |tt|  ksHJ |t|ksPJ qd S )NT)directed)	r   r   listdict	in_degreevalues
out_degreer   r   )	r    r!   r   r   r#   r(   r)   r*   r%   r   r   r    test_directed_joint_degree_graphk   s   r5   )r   )r,   r-   r.   )r   !networkx.algorithms.assortativityr   networkx.generatorsr   r   $networkx.generators.joint_degree_seqr   r   r   r   r   r'   r+   r5   r   r   r   r   <module>   s    
1