
    Vh;                     X    d dl Z d dlZd dlmZ d dlmZmZ  G d d      Z G d d      Z	y)    N)	bipartite)edges_equalnodes_equalc                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestBipartiteProjectc                 X   t        j                  d      }t        j                  |ddg      }t	        t        |      ddg      sJ t        t        |j                               dg      sJ t        j                  |ddg      }t	        t        |      ddg      sJ t        t        |j                               dg      sJ t        j                  dg      }t        j                  t         j                  d	
      5  t        j                  |dg       d d d        y # 1 sw Y   y xY w)N         r
   r   r      r   r   r   r
   znot defined for multigraphs)match)nx
path_graphr   projected_graphr   listr   edges
MultiGraphpytestraisesNetworkXErrorselfGPs      `/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/bipartite/tests/test_project.pytest_path_projected_graphz.TestBipartiteProject.test_path_projected_graph	   s    MM!%%a!Q047QF+++4	?VH555%%a!Q047QF+++4	?VH555MM6(#]]2++3PQ 	.%%a!-	. 	. 	.s   ?D  D)c                 r   t        j                  d      }|j                  dd       |j                  dd       t        j                  |ddg      }t        t        |      ddg      sJ t        t        |j                               dg      sJ |j                  d   d	   |j                  d   d	   k(  sJ t        j                  |d
dg      }t        t        |      d
dg      sJ t        t        |j                               dg      sJ |j                  d   d	   |j                  d   d	   k(  sJ y )Nr	   r
   one)namer   twor   r   r"   r   r   )
r   r   add_noder   r   r   r   r   r   nodesr   s      r   $test_path_projected_properties_graphz9TestBipartiteProject.test_path_projected_properties_graph   s   MM!	

15
!	

15
!%%a!Q047QF+++4	?VH555wwqz&!QWWQZ%7777%%a!Q047QF+++4	?VH555wwqz&!QWWQZ%7777    c                    t        j                  d      }t        j                  |ddg      }t	        t        |      ddg      sJ t        t        |j                               dg      sJ d|d   d   d<   t        j                  |ddg      }t	        t        |      ddg      sJ t        t        |j                               dg      sJ d|d   d   d<   y 	Nr	   r
   r   r   weightr   r   r   )r   r   r   &collaboration_weighted_projected_graphr   r   r   r   r   s      r   'test_path_collaboration_projected_graphz<TestBipartiteProject.test_path_collaboration_projected_graph"   s    MM!<<QAG47QF+++4	?VH555!Q<<QAG47QF+++4	?VH555!Qr'   c                    t        j                         }t        j                  |t        d             t	        j
                  |ddg      }t        t        |      ddg      sJ t        t        |j                               dg      sJ d|d   d   d<   t	        j
                  |ddg      }t        t        |      ddg      sJ t        t        |j                               dg      sJ d|d   d   d<   y r)   )
r   DiGraphadd_pathranger   r+   r   r   r   r   r   s      r   0test_directed_path_collaboration_projected_graphzETestBipartiteProject.test_directed_path_collaboration_projected_graph-   s    JJL
AuQx <<QAG47QF+++4	?VH555!Q<<QAG47QF+++4	?VH555!Qr'   c                 V   t        j                  d      }t        j                  t         j                        5  t        j                  |g d       d d d        t        j                  |ddg      }t        t        |      ddg      sJ t        t        |j                               dg      sJ d|d   d   d<   t        j                  |ddg      }t        t        |      ddg      sJ t        t        |j                               d	g      sJ d|d   d   d<   y # 1 sw Y   xY w)
Nr	   )r
   r   r   r   r
   r   r   r*   r   r   r   )r   r   r   r   NetworkXAlgorithmErrorr   weighted_projected_graphr   r   r   r   r   s      r   "test_path_weighted_projected_graphz7TestBipartiteProject.test_path_weighted_projected_graph9   s   MM!]]2445 	@..q,?	@ ..q1a&947QF+++4	?VH555!Q..q1a&947QF+++4	?VH555!Q	@ 	@s   DD(c                     t        j                  g d      }t        j                  |ddg      }t        j                  |d      ddik(  sJ t        |      dk(  sJ y )N)r   r
   r   r   r   )r   r	   r
   r   r*   r         ?r   )r   r.   r    overlap_weighted_projected_graphget_edge_attributeslenr   s      r    test_digraph_weighted_projectionz5TestBipartiteProject.test_digraph_weighted_projectionH   sV    JJ7866q1a&A%%a2vsmCCC1v{{r'   c                    t        j                         }t        j                  |t        d             t	        j
                  |ddg      }t        t        |      ddg      sJ t        t        |j                               dg      sJ d|d   d   d<   t	        j
                  |ddg      }t        t        |      ddg      sJ t        t        |j                               dg      sJ d|d   d   d<   y r)   )
r   r.   r/   r0   r   r4   r   r   r   r   r   s      r   +test_path_weighted_projected_directed_graphz@TestBipartiteProject.test_path_weighted_projected_directed_graphN   s    JJL
AuQx ..q1a&947QF+++4	?VH555!Q..q1a&947QF+++4	?VH555!Qr'   c                 6   t        j                  d      }t        j                  |g d      }t	        t        |      g d      sJ t        t        |j                               g d      sJ t        j                  |g d      }t	        t        |      g d      sJ t        t        |j                               g d      sJ t        j                  |dg      }t	        t        |      dg      sJ t        t        |j                               g       sJ y )Nr   )r
   r   r   )r7   r   r8   r   )	r   
star_graphr   r   r   r   r   r   r4   r   s      r   test_star_projected_graphz.TestBipartiteProject.test_star_projected_graphZ   s    MM!%%a347I...4	?,DEEE..q)<47I...4	?,DEEE%%a!-47QC(((4	?B///r'   c                 *   t        j                         }|j                  dd       |j                  dd       |j                  dd       |j                  dd       t        j                  |d      }t        t        |j                               dg      sJ t        j                  |d      }t        t        |j                               dg      sJ t        j                  |dd      }t        t        |j                               ddg      sJ y )	Nar
   br   ab)rD   rE   T
multigraph)	r   Graphadd_edger   r   r   r   r   r4   r   s      r   test_project_multigraphz,TestBipartiteProject.test_project_multigraphg   s    HHJ	

3	

3	

3	

3%%a.4	?ZL999..q$74	?ZL999%%a$?4	?Z,DEEEr'   c                    t        j                         }|j                  dd       |j                  dd       |j                  dd       |j                  dd       |j                  dd       |j                  dd       |j                  dd       t        j                  |d      }|d   d   d	   dk(  sJ |d   d   d	   dk(  sJ y )
NrD   r
   rE   r   cr   r	   abcr*   )r   rI   rJ   r   r+   r   s      r   test_project_collaborationz/TestBipartiteProject.test_project_collaborationt   s    HHJ	

3	

3	

3	

3	

3	

3	

3<<QFvc{8$)))vc{8$)))r'   c                    t        j                         }|j                  dd       |j                  dd       |j                  dd       |j                  dd       t        j                  |d      }t        t        |j                               dg      sJ t        j                  |d      }t        t        |j                               dg      sJ |d   d   d   dk(  sJ t        j                  |dd	      }t        t        |j                               dg      sJ t        j                         }|j                  dd       |j                  dd       |j                  dd       |j                  dd       t        j                  |d      }t        t        |j                               dg      sJ t        j                  |d      }t        t        |j                               dg      sJ |d   d   d   dk(  sJ t        j                  |dd	      }t        t        |j                               ddg      sJ y )
NAr
   Br   AB)rQ   rR   r*   TrG   )	r   r.   rJ   r   r   r   r   r   r4   r   s      r   test_directed_projectionz-TestBipartiteProject.test_directed_projection   s   JJL	

3	

1c	

3	

3%%a.4	?ZL999..q$74	?ZL999vc{8$)))%%a$?4	?ZL999JJL	

3	

1c	

3	

1c%%a.4	?ZL999..q$74	?ZL999vc{8$)))%%a$?4	?Z,DEEEr'   N)__name__
__module____qualname__r   r&   r,   r1   r5   r=   r?   rB   rK   rO   rT    r'   r   r   r      s;    
.8	

0F*Fr'   r   c                   F    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zy	)
TestBipartiteWeightedProjectionc                 8   t        j                         | _        | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  d	d       | j                  j                  d
d       | j                  j                  d
d       | j                  j                  d
d       | j                  j                  dd       t        j                         | _        | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  dd       | j                  j                  d	d       | j                  j                  d
d       y )NrQ   r
   r   rR   r   r	      CDE   F)r   rI   r   rJ   N)clss    r   setup_classz+TestBipartiteWeightedProjection.setup_class   s    
sAsAsAsAsAsAsAsAsAsAsAsAsA
sAsAsAsAsAsAsAsAsAr'   c                    g d}t        j                         }|j                  |       t        j                  | j
                  d      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  g d}t        j                         }|j                  |       t        j                  | j                  d      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  y )N))rQ   rR   r   rQ   r]   r
   rR   r]   r
   rR   r^   r
   rR   r_   r   r_   ra   r
   ABCDEFr*   ))rQ   rR   r   )rQ   r_   r
   rf   )rQ   r^   r
   )rR   r_   r
   rg   rh   )r]   r^   r
   ABCDE
r   rI   add_weighted_edges_fromr   r4   r   r   r   r   rb   r   r   Panswerr   uvs         r   test_project_weighted_sharedz<TestBipartiteWeightedProjection.test_project_weighted_shared   s@   
 ((*''...tvvx@4	?GMMO<<<O 	@DAqQ478$
1h(????	@	
 ((*''...tvvw?4	?GMMO<<<O 	@DAqQ478$
1h(????	@r'   c                    g d}t        j                         }|j                  |       t        j                  | j
                  d      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  g d}t        j                         }|j                  |       t        j                  | j                  d      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  y )N))rQ   rR   g      ?rQ   r]         ?)rR   r]   rv   rh   ri   rj   rk   r*   ))rQ   rR   gUUUUUU?)rQ   r_   rv   rQ   r]   UUUUUU?rQ   r^   rx   )rR   r_   rv   rR   r]   rx   rR   r^   rx   r]   r^   rx   rl   )
r   rI   rn   r   r+   r   r   r   r   rb   ro   s         r   test_project_weighted_newmanz<TestBipartiteWeightedProjection.test_project_weighted_newman   s@   
 ((*''.<<TVVXN4	?GMMO<<<O 	@DAqQ478$
1h(????	@	
 ((*''.<<TVVWM4	?GMMO<<<O 	@DAqQ478$
1h(????	@r'   c                    g d}t        j                         }|j                  |       t        j                  | j
                  dd      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  g d}t        j                         }|j                  |       t        j                  | j                  dd      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  y )N))rQ   rR   rx   )rQ   r]   UUUUUU?)rR   r]   r   )rR   r^   r   rR   r_   rx   )r_   ra   r   rk   T)ratior*   )rQ   rR   r9   rQ   r_   rx   rw   ry   r   rz   r{   r|   rl   rm   ro   s         r   test_project_weighted_ratioz;TestBipartiteWeightedProjection.test_project_weighted_ratio   sD   
 ((*''...tvvxtL4	?GMMO<<<O 	@DAqQ478$
1h(????	@	
 ((*''...tvvwdK4	?GMMO<<<O 	@DAqQ478$
1h(????	@r'   c                    g d}t        j                         }|j                  |       t        j                  | j
                  dd      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  g d}t        j                         }|j                  |       t        j                  | j                  dd      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  y )N)r   rQ   r]   r9   rR   r]   r9   rR   r^   r9   )rR   r_   gUUUUUU?)r_   ra   r9   rk   F)jaccardr*   )r   )rQ   r_   r9   r   )rQ   r^   r9   )rR   r_   r9   r   r   r]   r^   r9   rl   
r   rI   rn   r   r:   r   r   r   r   rb   ro   s         r   test_project_weighted_overlapz=TestBipartiteWeightedProjection.test_project_weighted_overlap!  sF   
 ((*''.66tvvxQVW4	?GMMO<<<O 	@DAqQ478$
1h(????	@	
 ((*''.66tvvwPUV4	?GMMO<<<O 	@DAqQ478$
1h(????	@r'   c                    g d}t        j                         }|j                  |       t        j                  | j
                  d      }t        t        |j                               |j                               sJ t        |j                               D ]  \  }}||   |   d   ||   |   d   k(  rJ  g d}t        j                         }|j                  |       t        j                  | j                  d      }t        t        |j                               |j                               sJ |j                         D ]  \  }}||   |   d   ||   |   d   k(  rJ  y )N))rQ   rR   g?ru   )rR   r]   皙?)rR   r^   r   r   )r_   ra   rx   rk   r*   )r   r   rw   ry   r   rz   r{   r   rl   r   ro   s         r   test_project_weighted_jaccardz=TestBipartiteWeightedProjection.test_project_weighted_jaccardB  s<   
 ((*''.66tvvxH4	?GMMO<<<O 	@DAqQ478$
1h(????	@	
 ((*''.66tvvwG4	?GMMO<<<GGI 	@DAqQ478$
1h(????	@r'   c                    d }t        j                  d      }t        j                  |g d|      }t	        t        |      g d      sJ t        t        |j                  d            ddd	d
ifddd	d
ifg      sJ t        j                  |g d      }t	        t        |      g d      sJ t        t        |j                  d            ddd	d
ifddd	d
ifg      sJ t        j                         }t        j                  |t        d             t        j                  |g d      }t	        t        |      g d      sJ t        t        |j                  d            ddd	d
ifddd	d
ifg      sJ y )Nc                 N    t        t        | |         t        | |         z        S N)r<   set)r   rq   rr   s      r   sharedz\TestBipartiteWeightedProjection.test_generic_weighted_projected_graph_simple.<locals>.sharedd  s"    s1Q4y3qt9,--r'   r\   )r   r   r	   weight_functionTdatar   r   r*   r
   r	   )r   r   r    generic_weighted_projected_graphr   r   r   r   r.   r/   r0   )r   r   rR   r   s       r   ,test_generic_weighted_projected_graph_simplezLTestBipartiteWeightedProjection.test_generic_weighted_projected_graph_simplec  sz   	. MM!66y&
 47I...d#$XqM"QHa=$9:
 	
 

 66q)D47I...d#$XqM"QHa=$9:
 	
 
 JJL
AuQx 66q)D47I...d#$1xm'<q!hPQ]>S&T
 	
 
r'   c                 n   d }dd}t         j                  j                  dd      }t        |j	                               D ]  \  }\  }}|dz   |j                  ||f   d<   ! t        j
                  |ddg|      }t        t        |j	                  d	            dddd
ifg      sJ t        j
                  |ddg|      }t        t        |j	                  d	            ddddifg      sJ t        j
                  |ddg      }t        t        |j	                  d	            ddddifg      sJ y )Nc                 t    t        | |         }t        | |         }t        ||z        t        ||z        z  S r   )r   r<   )r   rq   rr   unbrsvnbrss        r   r   z]TestBipartiteWeightedProjection.test_generic_weighted_projected_graph_custom.<locals>.jaccard  s9    !IE!IEuu}%EEM(:::r'   r*   c                     d}t        | |         t        | |         z  D ]H  }|| j                  ||f   j                  |d      | j                  ||f   j                  |d      z   z  }J |S )Nr   r
   )r   r   get)r   rq   rr   r*   wnbrs         r   	my_weightz_TestBipartiteWeightedProjection.test_generic_weighted_projected_graph_custom.<locals>.my_weight  st    A1Q4y3qt9, UQWWQV_((3aggafo6I6I&RS6TTTUHr'   r   r
   r   r   Tr   r9   
   )r*   )r   r   complete_bipartite_graph	enumerater   r   r   r   )r   r   r   rR   irq   rr   r   s           r   ,test_generic_weighted_projected_graph_customzLTestBipartiteWeightedProjection.test_generic_weighted_projected_graph_custom  s:   	;
	 LL11!Q7"1779- 	,IAv1&'!eAGGAqDM(#	,661vw
 4T 23q!h_6M5NOOO661vy
 4T 23q!h^6L5MNNN66q1a&A4T 23q!h]6K5LMMMr'   N)rU   rV   rW   classmethodrd   rs   r}   r   r   r   r   r   rX   r'   r   rZ   rZ      sB     :@B@B@B@B@B
8Nr'   rZ   )
r   networkxr   networkx.algorithmsr   networkx.utilsr   r   r   rZ   rX   r'   r   <module>r      s.      ) 3TF TFnxN xNr'   